Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1555

 
MakarFX:

Es werden keine Fehler ausgegeben.

Fehler können auch algorithmische Fehler sein, nicht nur Laufzeitfehler!

Sie brauchen den Code, wenn Sie die Ursache finden wollen.

MakarFX:

Bei diesen Koordinaten steht der Knopf auf dem Kopf, da die Länge des Knopfes vom X-Punkt aus gezählt wird

Warum brauchen Sie so einen komischen Knopf...?

 
MakarFX:

Ich kann die Option ExpertRemove() vorschlagen, wenn ein Gewinn oder Verlust erreicht wird

danke

Ich habe es gelesen, aber ich verstehe die Logik der Aktionen nicht ganz.

Wenn ein bestimmtes Ereignis erreicht wird, wird der Expert Advisor deaktiviert und aus dem Diagramm entfernt, richtig?

 
Mihail Matkovskij:

Fehler können auch algorithmische Fehler sein, nicht nur Laufzeitfehler!

Sie brauchen den Code, wenn Sie die Ursache finden wollen.

Warum brauchen Sie so einen komischen Knopf...?

Ich schrieb, dass ich zufällig über einen solchen Fehler gestolpert bin

Hier ist der Code... falls Sie interessiert sind

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

danke

Ich habe es gelesen, aber ich verstehe die Logik des Handelns nicht ganz

Wenn ein bestimmtes Ereignis erreicht wird, wird der Expert Advisor deaktiviert und vollständig aus dem Diagramm entfernt, richtig?

Ja
 
MakarFX:

Ich schrieb, dass ich zufällig über einen solchen Fehler gestolpert bin

Hier ist der Code... falls Sie interessiert sind.

Hier reagiert also keine der Tasten. DerOnChartEvent-Handler ist leer...

 
Mihail Matkovskij:

Hier reagiert also keine der Tasten. DerOnChartEvent-Handler ist leer...

ausprobieren) wird eine Taste gedrückt und die andere nicht
 
MakarFX:
Probieren Sie es aus) eine Taste drückt und die andere nicht

Wer macht das überhaupt, negative Dimensionen festlegen und warum, ist mir peinlich zu fragen...?

 
MakarFX:
Ja

Verstanden. Das funktioniert bei mir nicht.

Sie könnten wieder eine globale Variable erstellen, so dass beim Ausschalten der Eule die Menge auf den Startwert zurückgesetzt wird.

Zumindest auf diese Weise

erstellen Sieeine globale Variable

datetime Start;

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

und dann, wenn es keine offenen/geschlossenen Aufträge gibt, später "Start".

Lots=Lot;
aber ich weiß immer noch nicht, wie man sie richtig erstellt
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные - Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
законопослушный гражданин:

Verstanden. Das funktioniert bei mir nicht.

Sie könnten wieder eine globale Variable erstellen, so dass beim Ausschalten der Eule die Menge auf den Startwert zurückgesetzt wird.

Zumindest auf diese Weise

erstellen Sieeine globale Variable

und dann, wenn es keine offenen/geschlossenen Aufträge gibt, später "Start".

aber ich weiß immer noch nicht, wie man sie richtig erstellt

Ich werde dir einen Button machen)


 
Mihail Matkovskij:

Wer macht das überhaupt, negative Dimensionen festlegen und warum, ist mir peinlich zu fragen...?

Ich bin zufällig über diesen Fehler gestolpert und habe mich gefragt
Grund der Beschwerde: