自動売買システムで、決まった時間に決済したいとか、決まった時間帯のシグナルだけ採用したいとか時間を使ったルールがあるかと思います。
今回は、そのような時間による仕掛けや手仕舞いをBlock EAで組んでいく方法をご紹介します。
時間により仕掛けや手仕舞いを行うということは、基本的には条件分岐です。なので、Block EAでは、if文に対応している「もし~実行~」ブロックを使います。
このif文ブロックの「もし」のところに条件を入れるわけですが、時間に関する条件のブロックは、ツールボックスの「条件分岐」→「日時の条件」のカテゴリーに用意されています。
まずは、毎日決まった時刻に決済する例です。何時何分を指定したい場合、一番上のブロックを利用します。例えば、こんな感じです。
これは、毎日20時30分にポジションを決済するというブロックになります。
なお、ここで秒の指定はありませんが、現在が何時何分かの判別は、実際には何時何分0秒から何時何分59秒の間かどうかの判別となっています。なので、ティックが0秒ちょうどに出なくても1分間の間にティックが出ればポジション決済を実行できるわけです。
これをティック時実行関数のブロックにセットすればOKです。ここでは、売買注文のブロックは省略していますが、ポジションがなければ何も実行しないので、ポジションの有無の判別は必要ありません。
決まった時刻に加えて、週末などの曜日も指定したい場合、以下のように曜日・時・分の時刻データを返すブロックと、現在が指定した時刻かどうかを判別するブロックを組み合わせて条件を作ります。
このブロックも指定した時刻ちょうどを判別するのではなく、0秒から59秒までの範囲かどうかを判別します。
例えば、週末の23時30分に決済するブロックは以下のようになります。
こんどは仕掛けに対して時間による条件を付けてみます。仕掛けの場合も手仕舞いと同じく決まった時刻で売買注文を出すことはできますが、あまり実用的ではないので、ここでは、既存の仕掛けシグナルを採用する時間帯を制限する例をみていきます。