MT4で新しい足の出現時にエントリーする方法

Topics: MQL4

特定の条件下で、新しいローソク足が出現した時にのみにエントリーする方法のメモ。
バイナリーオプションとか時間区切りのエントリーに使ったりします。

まず注意点があります。
MT4はティック変動のたびにスタート関数内の記述が繰り返されます。
例えば1本前の足の終値が、ボリンジャーバンドの2θを上抜けた場合(下抜けた場合)

次の足でエントリー

なんて記述をストレートにしてしまうと、とんでもないことに。。
これだとティックが変動するたびに、エントリーのサインが出続けますのでものすごいポジション量に。。
新しい足が形成された直後に一回だけエントリーして、多重発注を防止することが必要です。

回避策ですが、Volume[]という関数があります。
これは新しい足におけるティック変動数の合計を返します。
Volume[]よるトレード可能かのチェックはこんな感じです。

if(Volume[0]>1 || IsTradeAllowed()==false)return(0);

でもこれだと失敗することがあるんですよね。
サーバーとかの問題で「2」や「3」からスタートすることがあるせいです。

というわけで、ベストな方法は、Barsとstatic変数使っての処理かと思います。

static int BarsBefore = 0;
int BarsN = Bars;
int BarsCheck = BarsN-BarsBefore;

if(BarsCheck==1 && エントリー条件)

最後に以下を忘れずに
BarsBefore = BarsN; //バーの総数を入れなおす
return(0);