銘柄自身が上昇or下降トレンドにあるかを売買ルールに盛り込みました。今回は、市場全体が上昇トレンドor下降トレンドにあるかを、売買ルール判定に取り入れてみます。ご覧になられることをお勧めします。ブログの内容において、正当性を保証するものではありません。・本ブログを利用して損失を被った場合でも一切の責任を負いません。・最終的な決定は、ご自身の判断(自己責任)でお願い致します。市場全体として上昇傾向にある。・・・Protraにこのルールを取り込む場合、コードの構造を変える必要があります。Protraでは基本的に銘柄ごとにルールの判定を行います。String型@作用素を使用すれば、一応は考慮可能です)。実際に売買を行う関数は独立させる必要があります。動作内容は単純で、売買を行う処理用に、関数とループを追加するだけです。こんな感じになりました。Print("前回と異なる銘柄リストでは実行できません。Length(codes)Print("前回と異なる銘柄リストでは実行できません。1{codes[j]}BuySell(j)end$cnt=0順番に見ていきます。最初に新しいグローバル変数を準備します。それぞれ、買条件・売条件を満たした銘柄の記録と、今回の肝である値上がり銘柄のカウントに使用します。0当日の終値が、昨日の終値より高い場合、$cntを+1しています。$cnt+1end買い条件を満たしたとき、Main()関数のループの中では買いません。その代り、銘柄ごとに「条件を満たした」フラグを入れています。1実際に売買を行っているのは、こちらの関数になります。$buyflg[j]が1で、$cntが全銘柄数の60%を超える場合に、買いを行っています。60%は適当に設定しました。$buyflg[j],$sellflg[j]を0に戻すを忘れずに。0endend最後、ループさせているwhile関数です。Main()に加え、売買を扱うBuySell()を追加しています。最後に$cntを0に戻し、次の日に進みます。1{codes[j]}BuySell(j)end$cnt=0効果の検証いつものように、以下の逆張りルールを用います。:売上上位500銘柄はじめに、トレンド判定なし。続いて、「昨日より値上がりした銘柄が、全体の75%以上の場合、市場全体が上昇トレンドにあると判断」を盛り込んだ場合です。直線的に右肩上がりだったのが、階段状になりました。「昨日より値上がりした銘柄が、全体の75%以上」は中々発生しないからですね。いった市場のトレンドは、どちらかというと順張り系のルールで効果が出ます。検証してみてください。今回利用した、ルールと売買の関数を独立させる方法を用いると、以下のようなルールを作ることができます。・売買ルールそのものを満たした銘柄が、〇〇以上のときに売買する順張りで効果的です。買い条件を満たすような強いトレンドが発生していることを示しています。ルールに組み込めます。コードが複雑になりますが、予算が限定されているときに、どの銘柄を優先的に買うかを決めることができます。グコウログ【Protra】買い銘柄に優先順位をつける以前の記事「市場トレンドを売買ルールに入れる」で、ルールと売買の関数を独立させる方法を用いました。優先順位を付けて購入する方法です。その2前回の「市場トレンドを売買ルールに入れる」では、以下のように市場トレンドを判定しました。その1「データの取り込み」Protraの出力を分析してみます。できないことはないですが、せっかくなので勉強中のPythonを使ってみます。引き続き、Protraの出力をPythonで分析していきます。その1では、Protraの出力をPythonで取り込みました。