たいていのプログラミング言語には、同じ処理を何度も実行させたいときに簡単に記述できるよう「繰り返し」という機能があります。for文という命令に対応している言語が多いですね。
MT4、MT5のカスタム指標のプログラムでは、指標データをチャート上で順番に表示させるので、繰り返しは必ず出てきます。
ただ、共通ライブラリを使ったEAだと、繰り返しの必要なところはライブラリ内部で処理しているので、プログラムで繰り返しの処理をさせる必要はあまりないかもしれません。
今回は、Block EAの機能紹介も兼ねて、注文の繰り返しを使ったシステムをBlock EAで組んでみます。
「待機注文を利用したEA」では、仕掛けシグナルが出たときに、成行注文ではなく、指値注文を出すEAを作ってみました。
今回は、その指値の値幅を変えて待機注文をいくつも出すシステムを考えてみます。
例えば、買いシグナルが出たときに、その価格から10pips安い価格、20pips安い価格、30pips安い価格などに指値注文を出すといった具合です。
ここで売買シグナルは何でもいいのですが、指値注文が約定しやすいように逆張りのシグナルにしてみます。
例えば、期間10のRSIが30以下で買いシグナル、70以上で売りシグナルといったルールにしてみます。
まずは、指値注文を一つだけ出す場合です。
指値の値幅は10pipsとし、待機時間は0、つまり、次のシグナルまで注文のキャンセルはしない設定としています。
次に、このシステムに20pipsの値幅の指値注文、30pipsの値幅の指値注文を追加してみます。
指値注文のブロックを複製してポジション番号を「1」「2」に変え、値幅を「20」「30」に変えるだけです。
このようにポジションの数が2,3個であれば、注文ブロックを複製しても問題ありません。
ただ、ポジションの数が多くなってくるとちょっと面倒です。そこで、「繰り返し」の機能を利用してみます。
Block EAで利用できる「繰り返し」に関するブロックは、以下のようにツールボックスの「繰り返し」というカテゴリーに用意されています。