エラー、バグ、質問 - ページ 1256

 
sanyooooook:

OnChartEventはテスターで動作するのでしょうか?

私には効きません。

MT5でも動作します。
 

しているのですが、何も印刷されません。

//+------------------------------------------------------------------+
//|                                             CheckObjectClick.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      "https:/"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
string           InpName="Button";            // Имя кнопки
ENUM_BASE_CORNER InpCorner=CORNER_LEFT_LOWER; // Угол графика для привязки
string           InpFont="Arial";             // Шрифт
int              InpFontSize=14;              // Размер шрифта
color            InpColor=clrBlack;           // Цвет текста
color            InpBackColor=C'236,233,216'; // Цвет фона
color            InpBorderColor=clrNONE;      // Цвет границы
bool             InpState=false;              // Нажата/Отжата
bool             InpBack=false;               // Объект на заднем плане
bool             InpSelection=false;          // Выделить для перемещений
bool             InpHidden=true;              // Скрыт в списке объектов
long             InpZOrder=0;                 // Приоритет на нажатие мышью

int OnInit()
  {
//---
   ButtonCreate(0,StringConcatenate(InpName,"LIMIT"),0,20,25,55,20,InpCorner,"LIMIT",InpFont,InpFontSize,
                InpColor,clrLime,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder);
   ButtonCreate(0,StringConcatenate(InpName,"STOP"),0,80,25,60,20,InpCorner,"STOP",InpFont,InpFontSize,
                InpColor,clrRed,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   if(id==CHARTEVENT_OBJECT_CLICK)
   {
      string clickedChartObject=sparam;
      if(clickedChartObject=="ButtonLIMIT")
      {
        Print(1);
      }
      if(clickedChartObject=="ButtonSTOP")
      {
        Print(2);
      }
   }
   //int Click=EventChartCustom(id,CHARTEVENT_OBJECT_CLICK);
  }
  bool ButtonCreate(long              chart_ID=0,               // ID графика
                  string            name="Button",            // имя кнопки
                  int               sub_window=0,             // номер подокна
                  int               x=0,                      // координата по оси X
                  int               y=0,                      // координата по оси Y
                  int               width=50,                 // ширина кнопки
                  int               height=18,                // высота кнопки
                  ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // угол графика для привязки
                  string            text="Button",            // текст
                  string            font="Arial",             // шрифт
                  int               font_size=10,             // размер шрифта
                  color             clr=clrBlack,             // цвет текста
                  color             back_clr=C'236,233,216',  // цвет фона
                  color             border_clr=clrNONE,       // цвет границы
                  bool              state=false,              // нажата/отжата
                  bool              back=false,               // на заднем плане
                  bool              selection=false,          // выделить для перемещений
                  bool              hidden=true,              // скрыт в списке объектов
                  long              z_order=0)                // приоритет на нажатие мышью
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим кнопку
   if(ObjectFind(name)<0)
   {
     ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);
   }
//--- установим координаты кнопки
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- установим угол графика, относительно которого будут определяться координаты точки
   //ObjectSet(name,OBJPROP_CORNER,corner);Print(GetLastError());
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);

//--- установим текст
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- установим размер шрифта
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- установим цвет текста
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим цвет фона
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- установим цвет границы
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- переведем кнопку в заданное состояние
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- включим (true) или отключим (false) режим перемещения кнопки мышью
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
 

それとも、どこかおかしいのでしょうか?

MT4でイベントを扱ったことがほとんどないので、わからないのですが。

ZZZ:通常のチャートではすべて問題ありません。

 
sanyooooook:

それとも、どこかおかしいのでしょうか?

MT4でイベントを扱ったことがほとんどないので、わからないのですが。

ZS: 通常のチャートでは、すべてファインプリントです。

そうですね、そうではありません。でも、うまくいくんです。チャートでイベントを追ってみてください。

 
svds75:

こんにちは フォーラムユーザーの皆様。ひとつだけ、はっきりしない状況があります。

実は、テスター(ビジュアライザー)で、ChartOpen() 関数を、いくつかのグラフを開くようにする方法がないことなのです。

ノーマルモードではすべてうまくいくのですが、テスターではヘルプに書かれているようなゼロではなく、同じ16388という数字が常に返ってきてしまうのです。

何が問題なのか、どなたか教えていただけるとありがたいです。テスト用ロボットを装着

友よ、誰もそれに直面したことがないのか?それとも最近のバグなのでしょうか?では、グラフィックスを使った多変量解析のテストはどのように行うのでしょうか?
 
sanyooooook:

ZS: 通常のチャートでは、すべてのプリントに問題がありません。

多分、間違ったジャーナルを見てるんでしょう...最適化モード なら、プリンターはオフになってるし...。

テスター設定の詳細を表示する

 
denkir:

ログブックを間違えて見ているのでは...実は、最適化 モードなら、そこでプリントのスイッチが切れているのです...。

テスターの設定の詳細を教えてください。

どこを見ればいいのか分からない )

最適化の際にオブジェクトを作成することもない。でも、最適化モードではないんです。


 
グローバルレベルで宣言された変数で試してみましたが、その値も変わりません。
 
sanyooooook:
グローバルに宣言された変数を使ってみましたが、その値も変わりません。
テスターでOnChartEvent()が 動作するはずという情報はどこにあるのでしょうか?何か見落としがあったのでしょうか?やはり私には効きません。4でも5でもない。
 
効くんです。私のEAを確認したところ、ボタンから注文を開くことができました。だから印刷されないのかなあ...。