ExpertRemove

この関数はエキスパートアドバイザーを停止しチャートからアンロードします。

void  ExpertRemove();

戻り値

なし

注意事項

エキスパートアドバイザーは、ExpertRemove() の呼び出し直後に停止されるわけではありません。EA 動作を停止するフラグのみが設定されます。つまり、次のイベントは処理されず、OnDeinit() が呼び出されてエキスパートアドバイザーがアンロードされてチャートから削除されます。

ストラテジーテスターのOnInit()ハンドラでのExpertRemove()の呼び出しによって、現在のパラメータセットでのテストがキャンセルされます。このような終了は初期化エラーとみなされます。

ストラテジーテスターでEAが正常に初期化された後でExpertRemove()が呼び出されると、テストはOnDeinit()OnTester()の呼び出しによって正常に終了します。この場合、取引統計と最適化基準値はすべて取得されますが。

例:

//+------------------------------------------------------------------+
//|                                            Test_ExpertRemove.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                             https://www.MQL5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
input int ticks_to_close=20;// EA アンロードまでのティック
//+------------------------------------------------------------------+
//| エキスパート初期化解除に使用される関数                                    |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
 {
//---
  Print(TimeCurrent(),": " ,__FUNCTION__," reason code = ",reason);
//--- コメントをクリアする
  Comment("");
//---
 }
//+------------------------------------------------------------------+
//| エキスパートティック関数                                                 |
//+------------------------------------------------------------------+
void OnTick()
 {
  static int tick_counter=0;
//---
  tick_counter++;
  Comment("\nBefore unloading expert advisor ",__FILE__," left",
          (ticks_to_close-tick_counter)," ticks");
//--- 前
  if(tick_counter>=ticks_to_close)
    {
    ExpertRemove();
    Print(TimeCurrent(),": ",__FUNCTION__," expert advisor will be unloaded");
    }
  Print("tick_counter =",tick_counter);
//---
 }
//+------------------------------------------------------------------+

参照

プログラムの実行クライアント端末イベント