トップ  >  リファレンス  >  標準定数・列挙・構造体  >  チャート定数  >  チャートイベントのタイプ
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ
チャートイベントのタイプ


OnChartEvent()関数は事前に定義された9種類のイベントで処理を行います。

カスタムイベントの65535個の識別子は、
CHARTEVENT_CUSTOM から CHARTEVENT_CUSTOM_LASTの範囲で提供されます。
カスタムイベントを生成するには、 EventChartCustom()関数を使用する必要があります。

ENUM_CHART_EVENT
ID 詳細
CHARTEVENT_KEYDOWN キー押下
CHARTEVENT_MOUSE_MOVE マウス移動またはマウスクリック(※1)
CHARTEVENT_OBJECT_CREATE グラフィカルオブジェクトを作成(※2)
CHARTEVENT_OBJECT_CHANGE グラフィカルオブジェクトのプロパティを、プロパティダイアログで変更した。
CHARTEVENT_OBJECT_DELETE グラフィカルオブジェクトを削除した(※3)
CHARTEVENT_CLICK チャートをクリック
CHARTEVENT_OBJECT_CLICK グラフィカルオブジェクトをクリック
CHARTEVENT_OBJECT_DRAG グラフィカルオブジェクトを移動
CHARTEVENT_OBJECT_ENDEDIT グラフィカルオブジェクトLabelEditのテキスト編集完了
CHARTEVENT_CHART_CHANGE プロパティダイアログでチャートサイズやチャートプロパティを変更
CHARTEVENT_CUSTOM カスタムイベントの最初のイベント
CHARTEVENT_CUSTOM_LAST カスタムイベントの最後のイベント(範囲内の最後)

※1 チャートプロパティCHART_EVENT_MOUSE_MOVEにtrueを設定した時に有効です。
※2 チャートプロパティCHART_EVENT_OBJECT_CREATEにtrueを設定した時に有効です。
※3 チャートプロパティCHART_EVENT_OBJECT_DELETEにtrueを設定した時に有効です。



OnChartEvent()関数に渡される引数は、イベントの種類毎に明確な値を持っています。
以下表は、引数に渡される値の一覧です。

イベント種類ごとに、OnCharEvent()関数の渡される引数は明確な値を持っています。
以下表は、イベント発生時に引数へ渡される値の一覧です。
イベントの種類 引数:id
イベントID
引数:lparam
long型イベント
引数:dparam
double型イベント
引数:sparam
string型イベント
キー押下 CHARTEVENT_KEYDOWN 押下されたキーの
コード
繰り返し押された回数 キー状態の
ビットマスク文字列
マウス操作
※1
CHARTEVENT_MOUSE_MOVE X座標 Y座標 マウスボタン状態の
ビットマスク文字列
オブジェクト作成
※2
CHARTEVENT_OBJECT_CREATE - - 作成された
オブジェクト名
オブジェクト
プロパティ変更
CHARTEVENT_OBJECT_CHANGE - - 変更された
オブジェクト名
オブジェクト削除
※3
CHARTEVENT_OBJECT_DELETE - - 削除された
オブジェクト名
チャート上での
マウスクリック
CHARTEVENT_CLICK X座標 Y座標 -
オブジェクトクリック CHARTEVENT_OBJECT_CLICK X座標 Y座標 クリックされた
オブジェクト名
オブジェクト移動
(マウス操作)
CHARTEVENT_OBJECT_DRAG - - 移動された
オブジェクト名
LabelEdit編集完了 CHARTEVENT_OBJECT_ENDEDIT - - LabelEdit
オブジェクト名
チャート変更 CHARTEVENT_CHART_CHANGE - - -
カスタムイベント CHARTEVENT_CUSTOM+N
(N範囲:0〜65535)
EventChartCustom()
で設定した値
EventChartCustom()
で設定した値
EventChartCustom()
で設定した値

※1 チャートプロパティCHART_EVENT_MOUSE_MOVEにtrueを設定した時に有効です。
※2 チャートプロパティCHART_EVENT_OBJECT_CREATEにtrueを設定した時に有効です。
※3 チャートプロパティCHART_EVENT_OBJECT_DELETEにtrueを設定した時に有効です。


サンプルソース:
#define OBJNAME_TESTLINE "水平ラインオブジェクト"
#define KEY_LEFT           37                    // 左キーのキーコード
#define KEY_NUM_5         101                    // テンキー5のキーコード


//+------------------------------------------------------------------+
//| 初期化                                   |
//+------------------------------------------------------------------+
void OnInit() {
    // 水平ラインのオブジェクトを作成
    ObjectCreate( OBJNAME_TESTLINE, OBJ_HLINE, 0 , Time[0] , Close[0]);
    ObjectSet(    OBJNAME_TESTLINE,  OBJPROP_COLOR, clrYellow);
    ObjectSet(    OBJNAME_TESTLINE,  OBJPROP_STYLE, STYLE_SOLID);
    ObjectSet(    OBJNAME_TESTLINE,  OBJPROP_WIDTH, 1);
}

//+------------------------------------------------------------------+
//| イベント関数                                              |
//+------------------------------------------------------------------+
void OnChartEvent(
                 const int     id,      // イベントID
                 const long&   lparam,  // long型イベント
                 const double& dparam,  // double型イベント
                 const string& sparam)  // string型イベント
{
    if ( id == CHARTEVENT_OBJECT_CLICK) {         // オブジェクトがクリックされた
        if ( sparam == OBJNAME_TESTLINE ) {           // "水平ラインオブジェクト"がクリックされた
            Print( OBJNAME_TESTLINE + "をクリック");
        }
    }
    
    if( id == CHARTEVENT_KEYDOWN) {               // キーボードのキーが押された
        switch(int(lparam)) {
            case KEY_LEFT:  
                Print("左キーが押された");
                break;
            case KEY_NUM_5:
                Print("テンキーの5が押された");
                break;
            default:
                Print("キーコード" + (string)lparam +"が押された");
        }
        ChartRedraw();
    }
}



CHARTEVENT_MOUSE_MOVE イベントでは、
文字列引数のsparamがキーボードとマウスボタンの状態に関する情報を持っています。
ビット 詳細
1 マウスの左ボタンの状態
2 マウスの右ボタンの状態
3 SHIFTボタンの状態
4 CTRLボタンの状態
5 マウス中ボタンの状態
6 マウスの第4ボタンの状態
(割り当て変更していなければ、通常はサイドボタンの"戻る"ボタン)
7 マウスの第5ボタンの状態
(割り当て変更していなければ、通常はサイドボタンの"進む"ボタン)


サンプルソース:
//+------------------------------------------------------------------+
//| 初期化                                   |
//+------------------------------------------------------------------+
void OnInit() {

//--- チャートプロパティ設定:CHART_EVENT_MOUSE_MOVE を有効
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);

}

//+------------------------------------------------------------------+
//| イベント関数                                              |
//+------------------------------------------------------------------+
void OnChartEvent(
                 const int     id,      // イベントID
                 const long&   lparam,  // long型イベント
                 const double& dparam,  // double型イベント
                 const string& sparam)  // string型イベント
{
    if( id == CHARTEVENT_MOUSE_MOVE ) { // マウス操作イベント発生

        Comment("マウス座標: ", (int)lparam,",",(int)dparam,"\n"
               ,MouseState((uint)sparam) );
    }
}


//+------------------------------------------------------------------+
//| マウスステータス取得                                             |
//+------------------------------------------------------------------+
string MouseState(uint in_sparam)  {
   string res;

   res+="\n左ボタン  : " + ( ((in_sparam & 0x01) == 0x01)?"ON":"OFF" );
   res+="\n右ボタン  : " + ( ((in_sparam & 0x02) == 0x02)?"ON":"OFF" );
   res+="\nSHIFTキー : " + ( ((in_sparam & 0x04) == 0x04)?"ON":"OFF" );
   res+="\nCTRLキー  : " + (( (in_sparam & 0x08) == 0x08)?"ON":"OFF" );
   res+="\n中ボタン  : " + ( ((in_sparam & 0x10) == 0x10)?"ON":"OFF" );
   res+="\n戻るボタン: " + ( ((in_sparam & 0x20) == 0x20)?"ON":"OFF" );
   res+="\n進むボタン: " + ( ((in_sparam & 0x40) == 0x40)?"ON":"OFF" );

   return(res);
}


■関連コンテンツ:
イベント関数
イベント操作



スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system