EAをバックテストした後に表示されるインジケータを非表示にする

EA作成時に、いくつかのインジケータの値を使用してエントリー条件を作成したり、エグジット条件を判定させることがあります。

既存のインジケータをEAに組み込むことができる iCustom関数など便利なものもあるため
一から指標を作成しなくても複雑な処理を組み込むことができるのですが、
ストラテジーテスタでビジュアルモードを使用したバックテストを実行し終わった後、チャート上にEA内部で使用したインジケータが表示されてしまいます。

作成したロジックの判断根拠が他の利用者に知れてしまうと、類似の処理を実装されてしまう等するとアイデアを盗まれることになってしまうため事前に対策をしておきます。

MT4の場合

HideTestIndicators

https://docs.mql4.com/customind/hidetestindicators

HideTestIndicators(true); インジケータの値を取得する前に、上記を発行します。  OnInit()内でコールしておけば問題ありません。

MT5の場合

TesterHideIndicators

https://www.mql5.com/en/docs/common/testerhideindicators

TesterHideIndicaor(true); 

インジケータのハンドル取得前に、上記を発行します。  OnInit()内でコールしておけば問題ありません。

上記を発行しても、 ビジュアルモード中に適用したテンプレートファイルにインジケータが含まれる場合は、
そのテンプレート内のインジケータのみ表示してくれます。

bool CSampleExpert::InitIndicators(void) 
  { 
   TesterHideIndicators(true); 
//--- create MACD indicator 
   if(m_handle_macd==INVALID_HANDLE) 
      if((m_handle_macd=iMACD(NULL,0,12,26,9,PRICE_CLOSE))==INVALID_HANDLE) 
        { 
         printf("Error creating MACD indicator"); 
         return(false); 
        } 
   TesterHideIndicators(false); 
//--- create EMA indicator and add it to collection 
   if(m_handle_ema==INVALID_HANDLE) 
      if((m_handle_ema=iMA(NULL,0,InpMATrendPeriod,0,MODE_EMA,PRICE_CLOSE))==INVALID_HANDLE) 
        { 
         printf("Error creating EMA indicator"); 
         return(false); 
        } 
//--- succeed 
   return(true); 
  }
おすすめの記事