EventChartCustom

この関数は、指定されたチャートのカスタムイベントを生成します。

BOOL   EventChartCustom 長いchart_id 、             チャート受信イベントの//識別子USHORTのcustom_event_idを、      //イベント識別子長いLPARAM 、               // long型のパラメータダブルdparam 、               // double型のパラメータストリングsparam //イベントの文字列パラメータ   )。
       
     
       
     
                    

パラメーター

chart_id

[in]チャート識別子。0は現在のチャートを意味します。

custom_event_id

[入力]ユーザーイベントのID。この識別子は、値CHARTEVENT_CUSTOMに自動的に追加され、整数型に変換されます。

lparam

[入力] OnChartEvent関数に渡されるlong型のイベントパラメーター。

dparam

[入力] OnChartEvent関数に渡されるdouble型のイベントパラメーター。

sparam

[入力] OnChartEvent関数に渡される文字列型のイベントパラメーター。文字列が63文字を超える場合、切り捨てられます。

戻り値

イベントを受け取るチャートのイベントキューにカスタムイベントが正常に配置された場合、trueを返します。失敗した場合、falseを返します。GetLastError()を使用してエラーコードを取得します。

注意

指定されたチャートに添付されたExpert Advisorまたはインジケーターは、関数OnChartEvent(int event_id、long&lparam、double&dparam、string&sparam)を使用してイベントを処理します。

イベントのタイプごとに、OnChartEvent()関数の入力パラメーターには、このイベントの処理に必要な明確な値があります。このパラメーターを介して渡されるイベントと値は、以下の表にリストされています。

イベント

idパラメーターの値

lparamパラメーターの値

dparamパラメーターの値

sparamパラメーターの値

キーストロークのイベント

CHARTEVENT_KEYDOWN

押されたキーのコード

繰り返し回数(ユーザーがキーを押した結果としてキーストロークが繰り返される回数)

キーボードボタンの状態を説明するビットマスクの文字列値

マウスイベント(チャートにプロパティCHART_EVENT_MOUSE_MOVE = trueが設定されている場合)

CHARTEVENT_MOUSE_MOVE

X座標

Y座標

マウスボタンの状態を説明するビットマスクの文字列値

グラフィカルオブジェクト作成のイベント(チャートにCHART_EVENT_OBJECT_CREATE = trueが設定されている場合)

CHARTEVENT_OBJECT_CREATE

作成されたグラフィカルオブジェクトの名前

プロパティダイアログを介したオブジェクトプロパティの変更イベント

CHARTEVENT_OBJECT_CHANGE

変更されたグラフィカルオブジェクトの名前

グラフィカルオブジェクト削除のイベントCHART_EVENT_OBJECT_DELETE = trueがチャートに設定されている場合)

CHARTEVENT_OBJECT_DELETE

削除されたグラフィカルオブジェクトの名前

チャート上でのマウスクリックのイベント

CHARTEVENT_CLICK

X座標

Y座標

チャートに属するグラフィカルオブジェクトでのマウスクリックのイベント

CHARTEVENT_OBJECT_CLICK

X座標

Y座標

イベントが発生したグラフィカルオブジェクトの名前

マウスを使用してドラッグするグラフィカルオブジェクトのイベント

CHARTEVENT_OBJECT_DRAG

移動したグラフィカルオブジェクトの名前

LabelEditグラフィカルオブジェクトの入力ボックスでのテキスト編集の終了イベント

CHARTEVENT_OBJECT_ENDEDIT

テキスト編集が完了しLabelEditグラフィカルオブジェクトの名前

チャート上の変更のイベント

CHARTEVENT_CHART_CHANGE

N番号の下のユーザーイベントのID

CHARTEVENT_CUSTOM + N

EventChartCustom()関数によって設定された値

EventChartCustom()関数によって設定された値

EventChartCustom()関数によって設定された値

例:

//+——————————————————————+
//|                                            ButtonClickExpert.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+——————————————————————+
#property copyright “2009, MetaQuotes Software Corp.”
#property link      “https://www.mql5.com”
#property version   “1.00”
 
string buttonID=“Button”;
string labelID=“Info”;
int broadcastEventID=5000;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
  {
//— Create a button to send custom events
   ObjectCreate(0,buttonID,OBJ_BUTTON,0,100,100);
   ObjectSetInteger(0,buttonID,OBJPROP_COLOR,clrWhite);
   ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,clrGray);
   ObjectSetInteger(0,buttonID,OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,buttonID,OBJPROP_YDISTANCE,100);
   ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,200);
   ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,50);
   ObjectSetString(0,buttonID,OBJPROP_FONT,“Arial”);
   ObjectSetString(0,buttonID,OBJPROP_TEXT,“Button”);
   ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,10);
   ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
 
//— Create a label for displaying information
   ObjectCreate(0,labelID,OBJ_LABEL,0,100,100);
   ObjectSetInteger(0,labelID,OBJPROP_COLOR,clrRed);
   ObjectSetInteger(0,labelID,OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,labelID,OBJPROP_YDISTANCE,50);
   ObjectSetString(0,labelID,OBJPROP_FONT,“Trebuchet MS”);
   ObjectSetString(0,labelID,OBJPROP_TEXT,“No information”);
   ObjectSetInteger(0,labelID,OBJPROP_FONTSIZE,20);
   ObjectSetInteger(0,labelID,OBJPROP_SELECTABLE,0);
 
//—
   return(INIT_SUCCEEDED);
  }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
  {
//—
   ObjectDelete(0,buttonID);
   ObjectDelete(0,labelID);
  }
//+——————————————————————+
//| Expert tick function                                             |
//+——————————————————————+
void OnTick()
  {
//—
 
  }
//+——————————————————————+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//— Check the event by pressing a mouse button
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      string clickedChartObject=sparam;
      //— If you click on the object with the name buttonID
      if(clickedChartObject==buttonID)
        {
         //— State of the button – pressed or not
         bool selected=ObjectGetInteger(0,buttonID,OBJPROP_STATE);
         //— log a debug message
         Print(“Button pressed = “,selected);
         int customEventID; // Number of the custom event to send
         string message;    // Message to be sent in the event
         //— If the button is pressed
         if(selected)
           {
            message=“Button pressed”;
            customEventID=CHARTEVENT_CUSTOM+1;
           }
         else // Button is not pressed
           {
            message=“Button in not pressed”;
            customEventID=CHARTEVENT_CUSTOM+999;
           }
         //— Send a custom event “our” chart
         EventChartCustom(0,customEventID-CHARTEVENT_CUSTOM,0,0,message);
         ///— Send a message to all open charts
         BroadcastEvent(ChartID(),0,“Broadcast Message”);
         //— Debug message
         Print(“Sent an event with ID = “,customEventID);
        }
      ChartRedraw();// Forced redraw all chart objects
     }
 
//— Check the event belongs to the user events
   if(id>CHARTEVENT_CUSTOM)
     {
      if(id==broadcastEventID)
        {
         Print(“Got broadcast message from a chart with id = “+lparam);
        }
      else
        {
         //— We read a text message in the event
         string info=sparam;
         Print(“Handle the user event with the ID = “,id);
         //— Display a message in a label
         ObjectSetString(0,labelID,OBJPROP_TEXT,sparam);
         ChartRedraw();// Forced redraw all chart objects
        }
     }
  }
//+——————————————————————+
//| sends broadcast event to all open charts                         |
//+——————————————————————+
void BroadcastEvent(long lparam,double dparam,string sparam)
  {
   int eventID=broadcastEventID-CHARTEVENT_CUSTOM;
   long currChart=ChartFirst();
   int i=0;
   while(i<CHARTS_MAX)                 // We have certainly no more than CHARTS_MAX open charts
     {
      EventChartCustom(currChart,eventID,lparam,dparam,sparam);
      currChart=ChartNext(currChart); // We have received a new chart from the previous
      if(currChart==-1) break;        // Reached the end of the charts list
      i++;// Do not forget to increase the counter
     }
  }
//+——————————————————————+

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">