
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);
}