Die Sprache MQL5 von Grund auf selbst erlernen - Seite 79

 
Valeriy Yastremskiy:

Artem Trishkin beantwortete mir die gleiche Frage, denn es ist ein Link (uppersand), so kann es an jedem Ort stehen. sollte ohne Leerzeichen für die Reinheit des Experiments zu versuchen.

Vielen Dank, Valery! Ich werde diesen Punkt auf jeden Fall berücksichtigen, wenn ich jemals auf ein ähnliches Problem stoße.

Frohe Weihnachten!

Mit freundlichen Grüßen, Vladimir.

 

Fröhliches Handeln und gute Laune an alle!

Ich lerne weiter die Programmiersprache MQL5. Ich habe den zuvor veröffentlichten Code ein wenig geändert und das ist, was ich bekommen habe:

input string Symbol_Main="EURUSD";          //Валютная пара, на которую ставим советник
input ENUM_TIMEFRAMES Time_Frame=PERIOD_H1; //Таймфрейм, на который ставим советник

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   /* Определим график валютной пары и таймфрейм, на который будем устанавливать советник. */
   /* Если текущий график валютной пары и текущий таймфрейм совпадают со входными параметрами */
   if(_Symbol==Symbol_Main && _Period==Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и продолжаем работу советника */
      MessageBox("Работа советника разрешена! Продолжим!");
      return(INIT_SUCCEEDED); //возвращаем для функции OnInit значение означающее "удачная инициализация"
     }
   /* Если текущий график валютной пары и текущий таймфрейм не совпадают со входными параметрами */
   if(_Symbol!=Symbol_Main && _Period!=Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадают валютная пара и таймфрейм! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   /* Если текущий график валютной пары не совпадает со входным параметром */
   if(_Symbol!=Symbol_Main)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадает валютная пара! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   /* Если текущий таймфрейм не совпадает со входным параметром */
   if(_Period!=Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадет таймфрейм! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

Vielleicht braucht sie jemand.

Mit freundlichen Grüßen, Vladimir.

 

Guten Tag und gute Laune an alle!

Ich habe etwas freie Zeit und habe beschlossen, mein Selbststudium fortzusetzen. Doch plötzlich stieß ich auf ein Problem. Früher, als ich eine solche Anfrage an den Handelsserver in meinem Expert Advisor Trailing_Stop_(v.2).mq5:

   /*  Создадим запрос на сервер и получим ответ с результатом */
   MqlTradeRequest request= {0};
   MqlTradeResult result= {0};

Es gab keine Probleme bei der Kompilierung des Codes. Jetzt erzeugt der Compiler den folgenden Fehler:

kann 0 nicht in enum'ENUM_TRADE_REQUEST_ACTIONS' konvertieren Trailing_Stop_(v.2).mq5 411 30

Wenn ich eine Null nach der Anfrage in geschweiften Klammern entferne,

   /*  Создадим запрос на сервер и получим ответ с результатом */
   MqlTradeRequest request= {};
   MqlTradeResult result= {0};

Ich erhalte dann keine Fehlermeldung. Bitte helfen Sie mir, was ist der Grund dafür?

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Guten Tag und gute Laune an alle!

Ich habe etwas freie Zeit und habe beschlossen, mein Selbststudium fortzusetzen. Doch plötzlich stieß ich auf ein Problem. Früher, als ich eine solche Anfrage an den Handelsserver in meinem Expert Advisor Trailing_Stop_(v.2).mq5:

Es gab keine Probleme bei der Kompilierung des Codes. Jetzt erzeugt der Compiler den folgenden Fehler:

kann 0 nicht in enum'ENUM_TRADE_REQUEST_ACTIONS' konvertieren Trailing_Stop_(v.2).mq5 411 30

Wenn ich eine Null nach der Anfrage in geschweiften Klammern entferne,

Der Compiler wird den Fehler nicht anzeigen. Bitte helfen Sie mir, was ist der Grund dafür?

Mit freundlichen Grüßen, Vladimir.

Ja, schreiben Sie jetzt nicht Null für die Nullstellung.

ENUM_TRADE_REQUEST_ACTIONS hat, eine Aufzählung, die nicht den Wert "0" hat.

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


Der richtige Weg wäre:

MqlTradeRequest request={};

 
Vladimir Karputov:

Ja, schreiben Sie jetzt nicht Null für die Nullstellung.

Vielen Dank, Vladimir!

Man lebt und lernt lange Zeit! Wenn die Entwickler von MQL5 Reference dies überall korrigieren würden, wäre das großartig!

Mit freundlichen Grüßen, Vladimir.

 

Guten Morgen zusammen!

Ich setze mein Selbststudium der Programmiersprache MQL5 fort. Ich habe mich entschlossen, eine Funktion zu schreiben, um ein Signal vom ZigZag-Indikator zu erhalten. Ich begann, sie gründlich zu studieren, und sie warf sofort einige Fragen auf. Ich habe es in seinen Eingabeparametern:

input int Depth      = 12;  // Depth
input int Deviation  = 5;   // Deviation
input int Backstep   = 3;   // Backstep

Ich spreche nicht fließend Englisch, also muss ich Google Translator benutzen. Wie lautet die reine Übersetzung?

Depth - глубина
Deviation - отклонение
Backstep - шаг назад

Fragen:

  1. Wenn Tiefe, welche Tiefe?
  2. Wenn Abweichung, Abweichung von was, von welchem Parameter oder Wert?
  3. Wenn ein Rückschritt, warum ein Rückschritt? Geht es nicht vorwärts?

Liebe Experten, helfen Sie mir zu verstehen!

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Guten Morgen zusammen!

Ich setze mein Selbststudium der Programmiersprache MQL5 fort. Ich habe mich entschlossen, eine Funktion zu schreiben, um ein Signal vom ZigZag-Indikator zu erhalten. Ich begann, sie gründlich zu studieren, und sie warf sofort einige Fragen auf. Ich habe es in seinen Eingabeparametern:

Ich spreche nicht fließend Englisch, also muss ich Google Translator benutzen. Wie lautet die reine Übersetzung?

Fragen:

  1. Wenn Tiefe, welche Tiefe?
  2. Wenn Abweichung, Abweichung von was, von welchem Parameter oder Wert?
  3. Wenn ein Rückschritt, warum ein Rückschritt? Geht es nicht vorwärts?

Liebe Experten, helfen Sie mir zu verstehen!

Mit freundlichen Grüßen, Vladimir.

Elementar - Suche nach Hilfe, "Geht es nicht vorwärts" - die ganze Geschichte geht hier rückwärts!!!! :-)

https://www.mql5.com/ru/code/7796


Depth ist die minimale Anzahl von Bars, auf denen es nicht ein zweites Hoch (Tief) weniger (mehr) von Deviation Pips als die vorherige, dh die ZigZag kann immer divergieren, aber konvergieren (oder verschieben die ganze) mehr als von Deviation, die ZigZag kann nur nach der Tiefe Bars. Der Backstep ist die Mindestanzahl von Takten zwischen Hochs (Tiefs).


Geben Sie in das Suchfeld ein: z.B. Zickzack-Parameter, https://www.mql5.com/ru/search#!keyword=%D0%B7%D0%B8%D0%B3%20%D0%B7%D0%B0%D0%B3%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B&amp;page=2</b></p>

PS: Elementare Dinge...

ZigZag
ZigZag
  • www.mql5.com
ZigZag отслеживает и соединяет между собой крайние точки графика отстоящие друг от друга не менее чем на заданный процент по шкале цены.
 
Roman Shiredchenko:

Elementar - die Suche ist eine Hilfe, "Geht es nicht vorwärts" - die ganze Geschichte bewegt sich hier rückwärts!!!! :-)

https://www.mql5.com/ru/code/7796


Depth ist die minimale Anzahl von Bars, auf denen es kein zweites Maximum (Minimum) gibt, das weniger (mehr) ist als das vorherige um Deviation Pips, d.h. der ZigZag kann immer divergieren, aber er kann konvergieren (oder das Ganze verschieben) mehr als um Deviation, der ZigZag kann nur nach Depth Bars. Der Backstep ist die Mindestanzahl von Takten zwischen den Hochs (Tiefs).


Geben Sie in das Suchfeld ein: z.B. Zickzack-Parameter, https://www.mql5.com/ru/search#!keyword=%D0%B7%D0%B8%D0%B3%20%D0%B7%D0%B0%D0%B3%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B&amp;page=2</b></p>

PS: Elementare Dinge...

Vielen Dank, Roman! Sie haben die prägnanteste, aber auch verständlichste Erklärung gegeben.

Hochachtungsvoll, Vladimir.

 
MrBrooklin:

Herzlichen Dank, Roman! Sie haben die prägnanteste, aber auch verständlichste Erklärung gegeben.

Hochachtungsvoll, Vladimir.

Danke, dass Sie es sich angeschaut haben, ich bin nur freundlich und nicht hinterhältig! Es ist mit einem Lächeln!
 

Guten Tag zusammen!

Beim Testen eines Expert Advisors bin ich auf ein Problem gestoßen. Es hat den folgenden Code der EA-Initialisierungsfunktion:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- достаточно ли количество баров для работы
   if(Bars(_Symbol,_Period)<60) // общее количество баров на графике меньше 60?
     {
      Alert("На графике меньше 60 баров, советник не будет работать!!");
      return(-1);
     }
//--- получить хэндл индикатора Bollinger Bands и DEMA
   BolBandsHandle=iBands(NULL,PERIOD_M30,bands_period,bands_shift,deviation,PRICE_CLOSE);
   demaHandle=iDEMA(NULL,PERIOD_D1,dema_period,0,PRICE_CLOSE);
//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if((BolBandsHandle<0) || (demaHandle<0))
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }

   return(0);
  }

Beim Testen des EA erhalte ich Meldungen im Protokoll:

2021.10.31 13:19:25.752 Core 2  genetic pass (0, 288) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:26.835 Core 2  genetic pass (0, 298) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:26.921 Core 1  genetic pass (0, 42) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:27.847 Core 2  genetic pass (0, 318) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:27.848 Core 2  genetic pass (0, 326) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:29.907 Core 2  genetic pass (0, 359) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:29.907 Core 2  genetic pass (0, 371) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:30.009 Core 1  genetic pass (0, 102) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:30.009 Core 1  genetic pass (0, 105) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:31.044 Core 1  genetic pass (0, 122) tested with error "OnInit returned non-zero code -1" in 0:00:00.000

и т.д.

Ich habe herausgefunden, dass das Problem in der Überprüfung der Bollinger Bands und DEMA-Indikatoren Griffe ist. Ich habe bereits Bollinger Bands und DEMA Indikatoren Griffe überprüft, so habe ich eine Frage: Was sollte ich in meinem Code ändern, um diese Fehler zu korrigieren?

Mit freundlichen Grüßen, Vladimir.