オブジェクトの名前を見て動作を制御しているためなのですが、そもそもハーモニックパターン検出インジケータを同じチャートに2個セットする必要がありません。
そこで、同じチャートで2重起動を防止させたいと思います。
いろいろテクニックはあるのですが、今回はその中かからグローバルパラメータを使った簡易的な2重起動防止を行います。
// グローバル名
string m_globalName = IntegerToString(ChartID()) + "__INDICATOR_NAME__";
//------------------------------------------------------------------
// 初期化
int OnInit()
{
//2重起動防止
if( GlobalVariableCheck(m_globalName) )
{
Print("double run.");
return INIT_FAILED;
}
GlobalVariableSet(m_globalName, 1);
}
//------------------------------------------------------------------
//終了処理
void OnDeinit(const int reason)
{
GlobalVariableDel(m_globalName);
if( reason != REASON_INITFAILED )
{
//初期化失敗以外の終了処理
}
}
ポイントは、チャートID+インジケータ名でグローバルパラメーターを作成することです。
起動時にグローバルパラメータがすでに存在していた場合、起動させないという制御を行います。
たとえば、OS上で1個しか動いてほしくない場合などは、Mutexを使った本格的な制御もあるのですが、今回はユーザの誤操作対策ですので、そこまでの厳しい制御はいらない場合向けです。
「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧
Twitterもよろしくお願いします。
https://twitter.com/mt4program
ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 |
お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。