足生成時ではなく足形成中に仕掛けるには
1本の足で1回だけ仕掛ける機能および1本の足で1回だけ仕掛ける機能 改善版の記事にて、1本の足で1回だけ仕掛ける機能をご紹介しました。
これらはいずれも足生成時(足確定時)の瞬間に仕掛けたい時に使うものでした。
しかし、足形成中に仕掛けたいこともあると思います。この場合、以前ご紹介した方法では実現できませんでした。
そこで、今回は足形成中に一度仕掛けた後は、その足では仕掛けないコードをご紹介します。
01 | // 中略 |
02 | datetime gTime = 0; // グローバル変数として定義している所がポイント |
03 | // 中略 |
04 | //+------------------------------------------------------------------+ |
05 | //| Expert tick function | |
06 | //+------------------------------------------------------------------+ |
07 | void OnTick() |
08 | { |
09 | // 1本の足で1回まで |
10 | if (gTime != Time[0]){ |
11 | // @@@@@@@@@@@@@ |
12 | // 仕掛け処理等 |
13 | // @@@@@@@@@@@@@ |
14 |
15 | gTime = Time[0]; // 現在の足の始値時刻を退避 |
16 | } |
17 | } |
すごくシンプルですね。
やっていることは、Time[0]で現在の足の始値時刻を取得し、それと退避しておいた始値時刻とを比較しているだけです。一致していなければ、異なる足と判断できるわけですね。
なお、上記はEA挿入直後にも条件が成立してしまうので、必要であればもう一工夫(例えば、gTime=0なら仕掛けないというif文を入れる等)した方が良いでしょう。