基本構文
void OnChartEvent(
const int id, // イベントID
const long &lparam, // イベントに応じた追加情報(整数)
const double &dparam, // イベントに応じた追加情報(小数)
const string &sparam // イベントに応じた追加情報(文字列)
);
主なイベントID と役割
id
には発生したイベントの種類が入ります。主なものは以下です👇
イベントID | 定数名 | 意味 |
---|---|---|
0 | CHARTEVENT_KEYDOWN | キーが押された |
1 | CHARTEVENT_OBJECT_CREATE | オブジェクト作成 |
2 | CHARTEVENT_OBJECT_DELETE | オブジェクト削除 |
3 | CHARTEVENT_OBJECT_CHANGE | オブジェクト変更 |
16 | CHARTEVENT_CLICK | チャート上クリック |
17 | CHARTEVENT_OBJECT_CLICK | オブジェクトクリック |
18 | CHARTEVENT_OBJECT_DRAG | オブジェクトをドラッグ |
19 | CHARTEVENT_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ボタンや、パラメータ入力ウィンドウを作るときに必須になります。
コメント