MT4の自動売買取引プログラム(EA)、ブリンを使って
2つのことを検証してみました。
・ 指値・逆指値注文の有効期限を秒単位で指定できるか
・ ティックが動かなくとも、EA内の操作を連続して行なえるか
結果は、
指値・逆指値注文の有効期限は、時間単位以上では設定できる
ものの、分・秒単位では 『無効なパラメーター』 となってしまいました。
なので、ブリンには使えません
2つ目の連続稼動は 可能
ただ、昨日、考えていた Volume[0] (ティック)数の変化を、
ループ(while)の条件に設定しては、
Volume[0] = X で、ループ入り
Volume[0} = X+1 で、ループ脱出
Volume[0] = X+2 で、ループ入り
…
と、ティックが1つ増えるごとに、順次、ループの出入りが繰り返され、
歯抜け状態になってしまうことが判明しました。
そこで、『注文数』 をループの条件にすることを思いつき、
こんな具合に
int start()
{
…
while(逆指値注文<2)
{
新規注文
}
while(逆指値注文+約定注文!=0)
{
逆指値注文変更・削除
約定注文変更・決済
}
return(0);
}
1度だけティックが動けば、最初の新規発注ループに入り、
指定時間に逆指値を発注。
引き続き、次のループに入って、あらゆる注文が無くなるまで、取引操作を繰り返します。
このようにプログラミングすることで、ティック数の変化とは係わりなく、
EAを稼動させることができるようになります。
これでブリンの稼動に際し、「ティックがなく、発注できない、いつまでも逆指値注文が残ってしまう…」などということを気にしなくても大丈夫。
また、この検証中に分かったことなのですが、
発注完了からすべての注文が無くなるまでの約40秒間、
2つ目のループ内を循環した回数は、なんと 530万回
よく目が回らないものですね。