OnChartEvent()

基本構文

void OnChartEvent(
   const int id,          // イベントID
   const long &lparam,    // イベントに応じた追加情報(整数)
   const double &dparam,  // イベントに応じた追加情報(小数)
   const string &sparam   // イベントに応じた追加情報(文字列)
   );

主なイベントID と役割

id には発生したイベントの種類が入ります。主なものは以下です👇

イベントID定数名意味
0CHARTEVENT_KEYDOWNキーが押された
1CHARTEVENT_OBJECT_CREATEオブジェクト作成
2CHARTEVENT_OBJECT_DELETEオブジェクト削除
3CHARTEVENT_OBJECT_CHANGEオブジェクト変更
16CHARTEVENT_CLICKチャート上クリック
17CHARTEVENT_OBJECT_CLICKオブジェクトクリック
18CHARTEVENT_OBJECT_DRAGオブジェクトをドラッグ
19CHARTEVENT_OBJECT_ENDEDITオブジェクト編集終了(テキスト入力終了など)
1000〜CHARTEVENT_CUSTOMユーザー定義イベント

引数の意味

  • id
    → イベントの種類(上表参照)
  • lparam
    → イベントごとの追加情報(例:キーコード、X座標など)
  • dparam
    → 小数型の追加情報(例:クリック位置の価格など)
  • sparam
    → 文字列情報(例:オブジェクト名)

サンプルコード

//+------------------------------------------------------------------+
//| チャートイベント処理サンプル                                     |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   // チャートクリックを検知
   if(id == CHARTEVENT_CLICK)
   {
      Print("チャートをクリックしました: X=", lparam, " Y=", dparam);
   }

   // オブジェクトをクリックしたとき
   if(id == CHARTEVENT_OBJECT_CLICK)
   {
      Print("オブジェクト ", sparam, " がクリックされました");
   }

   // キーボード入力検知
   if(id == CHARTEVENT_KEYDOWN)
   {
      Print("キーコード: ", lparam, " が押されました");
   }
}

ポイント

  • OnChartEvent()インジケータースクリプト に書けます(エキスパートでも可)
  • ボタン(OBJ_BUTTON)やテキスト入力(OBJ_EDIT)と組み合わせると GUI操作 が可能
  • ユーザーイベント(EventChartCustom())を使えば、独自イベントを飛ばして処理可能

👉つまり 「チャートやオブジェクトを操作した時の反応」を制御する関数OnChartEvent() です。
トレードON/OFFボタンや、パラメータ入力ウィンドウを作るときに必須になります。

コメント

タイトルとURLをコピーしました