Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1555

 
MakarFX:

No da ningún error.

Los errores también pueden ser algorítmicos, no sólo de ejecución.

Necesitas el código si quieres encontrar la causa.

MakarFX:

Con estas coordenadas el botón sale al revés, porque la longitud del botón se cuenta +/- desde el punto X

¿Por qué necesitas un botón tan raro...?

 
MakarFX:

Puedo sugerir la opción de ExpertRemove() cuando se alcanza un beneficio o una pérdida

gracias

Lo he leído, pero no entiendo del todo la lógica de las acciones

Cuando se alcanza un evento especificado, el Asesor Experto se desactiva y se elimina del gráfico, ¿verdad?

 
Mihail Matkovskij:

Los errores también pueden ser algorítmicos, no sólo de ejecución.

Necesitas el código si quieres encontrar la causa.

¿Por qué necesitas un botón tan raro...?

Escribí que accidentalmente me topé con un error de este tipo

aquí está el código... si te interesa

//+------------------------------------------------------------------+
//|                                                          BAG.mq4 |
//|                                           Copyright 2020, DrMak. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, DrMak."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   CreateButton(0,"Button_1",0,200,100,100,50,CORNER_RIGHT_UPPER," ","START","Arial Black",10,
   clrWhite,clrGreen,BORDER_SUNKEN,false,false,false,false,false,0);
   CreateButton(0,"Button_2",0,200,100,-100,-50,CORNER_RIGHT_UPPER," ","START","Arial Black",10,
   clrWhite,clrGreen,BORDER_SUNKEN,false,false,false,false,false,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll(0,"Button_");
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Создает кнопку                                                   |
//+------------------------------------------------------------------+
bool CreateButton(const long              chart_ID=0,               // ID графика
                  const string            name="Button",            // имя кнопки
                  const int               sub_window=0,             // номер подокна
                  const int               x=0,                      // координата по оси X
                  const int               y=0,                      // координата по оси Y
                  const int               width=50,                 // ширина кнопки
                  const int               height=18,                // высота кнопки
                  const int               corner=0,                 // угол графика для привязки
                  const string            tool="TOOLTIP",           // TOOLTIP
                  const string            text="Button",            // текст
                  const string            font="Arial",             // шрифт
                  const int               font_size=10,             // размер шрифта
                  const color             clr=clrBlack,             // цвет текста
                  const color             back_clr=C'236,233,216',  // цвет фона
                  ENUM_BORDER_TYPE        border_type=BORDER_FLAT,  // тип границы
                  const bool              state=false,              // нажата/отжата
                  const bool              back=false,               // на заднем плане
                  const bool              selection=false,          // выделить для перемещений
                  const bool              selected=false,           // выделить для перемещений
                  const bool              hidden=true,              // скрыт в списке объектов
                  const long              z_order=0)                // приоритет на нажатие мышью
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим кнопку
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      Print(__FUNCTION__, ": не удалось создать кнопку! Код ошибки = ",GetLastError()); return(false);
     }
   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);
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
   ObjectSetString(chart_ID,name,OBJPROP_TOOLTIP,tool);
   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_TYPE,border_type);
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selected);
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
 
законопослушный гражданин:

gracias

Lo he leído, pero no entiendo muy bien la lógica de la acción

cuando se alcanza un evento especificado, el Asesor Experto se desactiva y se elimina por completo del gráfico, ¿verdad?

 
MakarFX:

Escribí que accidentalmente me topé con un error de este tipo

Aquí está el código... si te interesa.

Aquí ninguno de los botones responde. El manejador deOnChartEvent está vacío...

 
Mihail Matkovskij:

Aquí ninguno de los botones responde. El manejador deOnChartEvent está vacío...

probarlo) un botón será pulsado y el otro no
 
MakarFX:
probarlo) un botón presiona y el otro no

¿Quién hace eso, establece dimensiones negativas y por qué, me da vergüenza preguntarlo...?

 
MakarFX:

Lo tengo. Eso no funcionará para mí.

se podría volver a crear una variable global para que cuando el búho se apague, el lote se restablezca al inicio

al menos así

se creauna variable global

datetime Start;

int OnInit()
{
   Start=TimeCurrent();
.....................
}
void OnTick()
{
   if (!IsTradeAllowed()) 
   {
      DrawLABEL("Торговля",0,0,0,Red,"Торговля запрещена");
      Start=TimeCurrent();
      return;
   } 
.....................
}

y luego, si no hay órdenes abiertas/cerradas, más tarde, "Inicio"

Lots=Lot;
pero aún no sé cómo crearlo correctamente
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные - Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
законопослушный гражданин:

Lo tengo. Eso no funcionará para mí.

se podría volver a crear una variable global para que cuando el búho se apague, el lote se restablezca al inicio

al menos así

se creauna variable global

y luego, si no hay órdenes abiertas/cerradas, más tarde, "Iniciar".

pero aún no sé cómo crearlo correctamente

Te haré un botón)


 
Mihail Matkovskij:

¿Quién hace eso, establece dimensiones negativas y por qué, me da vergüenza preguntarlo...?

Me encontré con este error por accidente y me pregunté
Razón de la queja: