Autoapprendimento del linguaggio MQL5 da zero - pagina 79

 
Valeriy Yastremskiy:

Artem Trishkin mi ha risposto alla stessa domanda, perché è un link (uppersand), quindi può stare in qualsiasi posto. dovrebbe provare senza spazi per la purezza dell'esperimento.

Grazie, Valery! Prenderò sicuramente in considerazione questo punto se mai dovessi imbattermi in un problema simile.

Buon Natale!

Sinceramente, Vladimir.

 

Buon trading e buon umore a tutti!

Continuo a studiare il linguaggio di programmazione MQL5. Ho modificato un po'il codice precedentemente pubblicato e questo è ciò che ho ottenuto:

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

Forse qualcuno ne avrà bisogno.

Saluti, Vladimir.

 

Buona giornata e buon umore a tutti!

Ho un po' di tempo libero e ho deciso di continuare il mio studio autonomo. Ma all'improvviso mi sono imbattuto in un problema. Prima, quando ho fatto una richiesta come questa al server commerciale nel mio Expert Advisor Trailing_Stop_(v.2).mq5:

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

non ci sono stati problemi durante la compilazione del codice. Ora il compilatore genera il seguente errore:

non può convertire 0 in enum'ENUM_TRADE_REQUEST_ACTIONS' Trailing_Stop_(v.2).mq5 411 30

Se rimuovo uno zero dopo la richiesta tra parentesi graffe,

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

Allora non ricevo un errore. Per favore aiutatemi, qual è la ragione di questo?

Saluti, Vladimir.

 
MrBrooklin:

Buona giornata e buon umore a tutti!

Ho un po' di tempo libero e ho deciso di continuare il mio studio autonomo. Ma all'improvviso mi sono imbattuto in un problema. Prima, quando ho fatto una richiesta come questa al server commerciale nel mio Expert Advisor Trailing_Stop_(v.2).mq5:

non ci sono stati problemi durante la compilazione del codice. Ora il compilatore genera il seguente errore:

non può convertire 0 in enum'ENUM_TRADE_REQUEST_ACTIONS' Trailing_Stop_(v.2).mq5 411 30

Se rimuovo uno zero dopo la richiesta tra parentesi graffe,

Il compilatore non mostra l'errore. Per favore aiutatemi, qual è la ragione di questo?

Saluti, Vladimir.

Sì, ora non scrivere zero per l'azzeramento.

ENUM_TRADE_REQUEST_ACTIONS , un'enumerazione che non ha il valore "0".

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


Il modo corretto sarebbe:

MqlTradeRequest request={};

 
Vladimir Karputov:

Sì, ora non scrivere zero per azzerare.

Grazie, Vladimir!

Si vive e si impara a lungo! Se gli sviluppatori di MQL5 Reference correggessero questo ovunque, sarebbe fantastico!

Sinceramente, Vladimir.

 

Buongiorno a tutti!

Sto continuando il mio autoapprendimento del linguaggio di programmazione MQL5. Ho deciso di scrivere una funzione per ottenere il segnale dall'indicatore ZigZag. Ho iniziato a studiarlo a fondo e mi ha fatto subito sorgere alcune domande. Ce l'ho nei suoi parametri di input:

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

Non sono fluente in inglese, quindi devo usare Google Translator. Qual è la pura traduzione:

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

Domande:

  1. Se profondità, profondità di cosa?
  2. Se deviazione, deviazione da cosa, da quale parametro o valore?
  3. Se un passo indietro, perché un passo indietro? Non sta andando avanti?

Cari esperti, aiutatemi a capire!

Sinceramente, Vladimir.

 
MrBrooklin:

Buongiorno a tutti!

Sto continuando il mio autoapprendimento del linguaggio di programmazione MQL5. Ho deciso di scrivere una funzione per ottenere il segnale dall'indicatore ZigZag. Ho iniziato a studiarlo a fondo e mi ha fatto subito sorgere alcune domande. Ce l'ho nei suoi parametri di input:

Non sono fluente in inglese, quindi devo usare Google Translator. Qual è la pura traduzione:

Domande:

  1. Se profondità, profondità di cosa?
  2. Se deviazione, deviazione da cosa, da quale parametro o valore?
  3. Se un passo indietro, perché un passo indietro? Non sta andando avanti?

Cari esperti, aiutatemi a capire!

Sinceramente, Vladimir.

Elementare - cerca di aiutare, " Non va avanti " - tutta la storia si muove all'indietro qui!!!! :-)

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


La profondità è il numero minimo di barre su cui non ci sarà un secondo alto (basso) meno (più) di pip di deviazione di quello precedente, cioè lo ZigZag può sempre divergere, ma convergere (o spostare il tutto) più di deviazione, lo ZigZag può solo dopo le barre di profondità. Il Backstep è il numero minimo di barre tra i massimi (bassi).


Nella casella di ricerca, digitare: ad esempio parametri zigzag, 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 cose elementari...

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

Elementare - cerca di aiutare, " Non sta andando avanti " - tutta la storia sta andando indietro qui!!!! :-)

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


La profondità è il numero minimo di barre su cui non ci sarà un secondo massimo (minimo) meno (più) del precedente di pip di Deviazione, cioè lo ZigZag può sempre divergere, ma può convergere (o spostare il tutto) più che di Deviazione, lo ZigZag può solo dopo barre di profondità. Il Backstep è il numero minimo di barre tra i massimi (bassi).


Nella casella di ricerca, digitare: ad esempio parametri zigzag, 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 cose elementari...

Grazie mille, Roman! Hai dato la spiegazione più concisa, ma allo stesso tempo comprensibile.

Con rispetto, Vladimir.

 
MrBrooklin:

Grazie mille, Roman! Lei ha dato la spiegazione più concisa, ma allo stesso tempo comprensibile.

Con rispetto, Vladimir.

Grazie per aver controllato, sono amichevole, nessuna pugnalata alle spalle! È con un sorriso!
 

Buona giornata a tutti!

Mentre testavo un Expert Advisor, ho incontrato un problema. Ha il seguente codice della funzione di inizializzazione EA:

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

Durante il test dell'EA ricevo dei messaggi nel log:

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

и т.д.

Ho scoperto che il problema è nel controllo delle maniglie degli indicatori Bollinger Bands e DEMA. Ho già controllato le maniglie degli indicatori Bollinger Bands e DEMA, quindi ho una domanda: cosa dovrei cambiare nel mio codice per correggere questi errori?

Saluti, Vladimir.