現在のチャートがアクティブかどうか判定する。

先日の「(続々)複数のチャートの時間足を一括変更するスクリプト。」で公開した Accela2 ですが、バグが見つかったので修正版をこちらに置きました。
Ctrl+1〜9 でチャートの時間足を一括変更する際に、非アクティブなMT4 にも作用してしまうバグを修正しました。(Special thanks to kyojee)






さて、今日は、現在のチャートがアクティブかどうか判定する方法を紹介します。1つの MT4 内に複数のチャートが開かれている状態で、どのチャートがアクティブになっているのか?は、目で見ればすぐに分かりますが、インジケータ内で自チャートがアクティブかどうかを判定するには、以下のようにするのが楽かなと思います。


公式フォーラムでの質問に回答したサンプルですが、必要な人はどうぞ。

#property indicator_chart_window
#import "user32.dll"
int  GetParent(int hWnd);
int  SendMessageA(int hWnd,int Msg,int wParam,int lParam);
#import
#define WM_MDIGETACTIVE 0x0229

int start()
  {
   int Parent = GetParent(GetParent(WindowHandle(Symbol(),Period())));
   int MyWND = GetParent(WindowHandle(Symbol(),Period()));
   int ActiveMDI = SendMessageA(Parent, WM_MDIGETACTIVE, 0, 0);
   if(ActiveMDI == MyWND ){
      Comment("Active");
   }else{
      Comment("");
   }
   return(0);
  }