Erros, bugs, perguntas - página 1256

 
sanyooooook:

quem sabe, a OnChartEvent trabalha no testador?

Não funciona para mim.

Também funciona em MT5.
 

Estou a fazer isto, mas não vai imprimir nada:

//+------------------------------------------------------------------+
//|                                             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);
  }
 

ou há algo de errado algures?

Quase nunca trabalhei com eventos em MT4, por isso não sei.

ZZZ: Tudo está bem na tabela normal.

 
sanyooooook:

ou há algo de errado algures?

Quase nunca trabalhei com eventos em MT4, por isso não sei.

ZS: Num gráfico normal, tudo está bem impresso.

Certo, não tem. Mas funciona. Tente acompanhar o evento com o gráfico.

 
svds75:

Olá Caros utilizadores do fórum. Há uma situação que não é clara.

Na verdade, a questão é que não há forma de fazer a função ChartOpen (), no testador (visualizador), abrir um par de gráficos.

No modo normal, tudo funciona, mas no testador, não retorna constantemente zero como escrito na ajuda, e o mesmo número 16388.

Ficarei muito grato se alguém me disser o que está errado. Robô de ensaio acoplado.

Meus amigos, ninguém se confrontou com isso? Ou é um insecto recente? Como se testa então as multivoluções com gráficos?
 
sanyooooook:

ZS: Todas as impressões estão correctas num gráfico normal.

Talvez esteja a procurar no Jornal errado... se estiver em modo de optimização, as impressoras estão desligadas...

Mostrar-me os detalhes das definições do Testador

 
denkir:

Deve estar a procurar no Diário de Bordo errado... de facto, se estiver em modo de optimização, as impressões estão lá desligadas...

Mostrar-me os detalhes das configurações do testador.

Não sei onde procurar )

Eu nem sequer crio objectos durante a optimização. Mas eu não estou no modo de optimização.


 
Tentei com uma variável declarada a nível global, mas o seu valor também não se altera.
 
sanyooooook:
Tentei utilizar uma variável declarada globalmente, mas o seu valor também não se altera.
Onde está a informação que OnChartEvent() deve trabalhar no testador? Será que me escapou alguma coisa? Continua a não funcionar para mim. Nem em 4, nem em 5.
 
Funciona. Verifiquei com a minha EA, ela abre encomendas a partir dos botões. É por isso que não se imprime...
Razão: