ティック時実行関数Tick()は、価格が更新されるティックの度に実行されます。ここで、新規にバーができたときだけ実行したい処理があるとします。その場合、共通ライブラリのisNewBar()という関数を使うことができます。
//ティック時実行関数
void Tick()
{
if(isNewBar(_Symbol, 0))
{
int sig_entry = EntrySignal(); //仕掛けシグナル
//成行売買
MyOrderSendMarket(sig_entry, sig_entry, Lots);
}
}
EAを実行しているチャート上で新規バーができたタイミングは、isNewBar()の引数に_Symbolと0を代入することで判別できます。これをif文の条件式とすることで、新規バーができたときだけ{}内のコードを実行することができます。
//ティック時実行関数
void Tick()
{
if(isNewBar(_Symbol, PERIOD_M1))
{
int sig_entry = EntrySignal(); //仕掛けシグナル
//成行売買
MyOrderSendMarket(sig_entry, sig_entry, Lots);
}
}
isNewBar()の2番目の引数に0以外のタイムフレーム定数を代入することで、挿入したチャートとは別のタイムフレームの新規バーができたタイミングで取引を実行させることができます。上の例は、1分足の場合です。