Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1555

 
MakarFX:

Non dà alcun errore.

Gli errori possono essere anche algoritmici, non solo errori di esecuzione!

Avete bisogno del codice se volete trovare la causa.

MakarFX:

Con queste coordinate il pulsante esce al contrario, perché la lunghezza del pulsante è contata +/- dal punto X

Perché avete bisogno di un pulsante così strano...?

 
MakarFX:

Posso suggerire l'opzione di ExpertRemove() quando viene raggiunto un profitto o una perdita

grazie

L'ho letto, ma non capisco bene la logica delle azioni

Quando viene raggiunto un evento specificato, l'Expert Advisor viene disabilitato e rimosso dal grafico, giusto?

 
Mihail Matkovskij:

Gli errori possono essere anche algoritmici, non solo errori di esecuzione!

Avete bisogno del codice se volete trovare la causa.

Perché avete bisogno di un pulsante così strano...?

Ho scritto che mi sono accidentalmente imbattuto in un tale bug

Ecco il codice... se siete interessati

//+------------------------------------------------------------------+
//|                                                          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);
  }
//+------------------------------------------------------------------+
 
законопослушный гражданин:

grazie

L'ho letto, ma non capisco bene la logica dell'azione

quando viene raggiunto un evento specificato, l'Expert Advisor viene disabilitato e completamente rimosso dal grafico, giusto?

 
MakarFX:

Ho scritto che mi sono accidentalmente imbattuto in un tale bug

Ecco il codice, se siete interessati.

Quindi qui nessuno dei pulsanti risponde. Il gestoreOnChartEvent è vuoto...

 
Mihail Matkovskij:

Quindi qui nessuno dei pulsanti risponde. Il gestoreOnChartEvent è vuoto...

provare) un pulsante sarà premuto e l'altro no
 
MakarFX:
provare) un pulsante preme e l'altro no

Chi lo fa comunque, stabilisce dimensioni negative e perché, mi imbarazza chiederlo...?

 
MakarFX:

Capito. Non funziona per me.

si potrebbe tornare a creare una variabile globale in modo che quando il gufo viene spento, il lotto viene resettato all'inizio

almeno così

si creauna variabile globale

datetime Start;

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

e poi se non ci sono ordini aperti/chiusi dopo "Inizia"

Lots=Lot;
ma non so ancora come crearlo correttamente
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные - Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
законопослушный гражданин:

Capito. Non funziona per me.

si potrebbe tornare a creare una variabile globale in modo che quando il gufo viene spento, il lotto viene resettato all'inizio

almeno così

si creauna variabile globale

e se non ci sono ordini aperti/chiusi dopo "Inizia".

ma non so ancora come crearlo correttamente

Ti farò un bottone)


 
Mihail Matkovskij:

Chi lo fa comunque, stabilisce dimensioni negative e perché, mi imbarazza chiederlo...?

Mi sono imbattuto in questo bug per caso e mi sono chiesto