//--- 入力パラメータ
input int tiks_before=500; // 終了までのティック数
input int pips_to_go=15; // ピップス(為替差益)
input int seconds_st=50; // エキスパートアドバイザーに与えられた秒数
//--- グローバル
datetime launch_time;
int tick_counter=0;
//+------------------------------------------------------------------+
//| エキスパート初期化解除に使用される関数 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
Print(__FUNCTION__," reason code = ",reason);
Comment("");
}
//+------------------------------------------------------------------+
//| エキスパートティック関数 |
//+------------------------------------------------------------------+
void OnTick()
{
static double first_bid=0.0;
MqlTick tick;
double distance;
//---
SymbolInfoTick(_Symbol,tick);
tick_counter++;
if(first_bid==0.0)
{
launch_time=tick.time;
first_bid=tick.bid;
Print("first_bid =",first_bid);
return;
}
//--- 価格距離(ピップス単位)
distance=(tick.bid-first_bid)/_Point;
//--- EA 動作を追跡するための通知を表示する
string comm="From the moment of start:\r\n\x25CF elapsed seconds: "+
IntegerToString(tick.time-launch_time)+" ;"+
"\r\n\x25CF ticks received: "+(string)tick_counter+" ;"+
"\r\n\x25CF price went in points: "+StringFormat("%G",distance);
Comment(comm);
//--- 端末を閉じる状態を確認するためのセクション
if(tick_counter>=tiks_before)
TerminalClose(0); // ティックカウンタによる終了
if(distance>pips_to_go)
TerminalClose(1); // pips_to_go に等しいピップスの数で上がる
if(distance<-pips_to_go)
TerminalClose(-1); // pips_to_go に等しいピップスの数で下げる
if(tick.time-launch_time>seconds_st)
TerminalClose(100); // 時間切れによる終了
//---
}
|