Mercato: nessuna operazione di trading

 

Qualcuno può spiegare perché il mercato restituisce questo errore? Tutti i controlli dell'EA sono in atto...

Capisco il succo ovviamente - non ci sono scambi, ma qual è la ragione?

Ограничения и проверки в экспертах
Ограничения и проверки в экспертах
  • www.mql5.com
При создании алгоритма для автоматической торговли необходимо не только уметь обрабатывать цены с целью выработки торговых сигналов, но и зачастую требуется получать множество вспомогательной информации об ограничениях, накладываемых на работу эксперта.  В этой статье будет рассказано о том как: получить информацию о торговых сессиях...
 
  • per esempio - lotto di negoziazione nelle impostazioni = 0, l'EA non può aprire una negoziazione perché lotto = 0.
  • Limitazione dello spread nell'Expert Advisor, non apre posizioni.
  • Non ci sono davvero segnali per aprire posizioni nel periodo di test.

E i controlli solo tu vedi, il tuo codice non è allegato.

Esempi dalle migliaia....

 
Vladislav Andruschenko:
  • per esempio - lotto di negoziazione nelle impostazioni = 0, l'EA non può aprire una negoziazione perché lotto = 0.
  • Limitazione dello spread nell'Expert Advisor, non apre posizioni.
  • Non ci sono davvero segnali per aprire posizioni nel periodo di test.

E i controlli solo tu vedi, il tuo codice non è allegato.

Esempi dalle migliaia....

La convalida del lotto c'è, i segnali ci sono sicuramente - è un netminder, senza limiti di spread...
 
Vladislav Andruschenko:
  • per esempio - lotto di negoziazione nelle impostazioni = 0, l'EA non può aprire una negoziazione perché lotto = 0.
  • Limitazione dello spread nell'Expert Advisor, non apre posizioni.
  • Non ci sono davvero segnali per aprire posizioni nel periodo di test.

E i controlli solo tu vedi, il tuo codice non è allegato.

Esempi dalle migliaia....

I controlli per la correttezza del lotto ci sono, i segnali ci sono sicuramente - è un netminder, senza limiti di spread... Non capisco niente...
 
Maksim Neimerik:
La convalida del lotto c'è, i segnali ci sono sicuramente - è un netminder, nessuna limitazione di spread...

Beh, allora ci sono 100500 opzioni in più.

il nettler sta superando tranquillamente il test di mercato.

 
Vladislav Andruschenko:

Beh, allora ci sono 100500 opzioni in più.

il nettler sta superando tranquillamente il test di mercato.

D'accordo, ma in qualche modo non questo:)
 
Maksim Neimerik:
Sono d'accordo, ma per qualche motivo non questo:)


È vietato discutere dei bot del mercato qui. E non lo pubblicherete nel pubblico dominio. E ci sono già 100500 argomenti con quel nome, così come le ragioni di un tale argomento.

 
Maksim Neimerik:

Qualcuno può spiegare perché il mercato restituisce questo errore? Tutti i controlli dell'EA sono in atto...

Capisco il succo del discorso - niente scambi, ma per quale motivo?

È così difficile usare la ricerca del sito e creare 100500 copie di rami!

https://www.mql5.com/ru/search#!keyword=no%20trading%20operations&method=2&module=mql5_module_forum

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 

Voglio solo discutere il codice:

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }

   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
   {
      Print("Wrong lot size");
      return(min_volume);
   }
     
   if(volume<MarketInfo(Symbol(),MODE_MINLOT))
   {
      Print("Trade stop invalid lot size");
      Comment("Trade stop invalid lot size"); 
      return(MarketInfo(Symbol(),MODE_MINLOT));
   }
   return(volume);
}

Ho modificato il controllo standard per restituire il lotto corretto invece di un errore...

Qui chiamiamo questa funzione:

   if(!OrderSend(Symbol(),cmd,CheckVolumeValue(Lot),NormalizeDouble(priceStep,Digits()),Slippage,0,0,"",magic,0))

Nel mio tester e sul mio conto reale questo robot funziona bene! Anche quando viene inserito un lotto errato, restituisce comunque quello corretto e funziona ulteriormente...

E sapete dove torna l'errore 4051! Questo è in generale...!

 
Maksim Neimerik:

Voglio solo discutere il codice:

Ho modificato il controllo standard per restituire il lotto corretto invece di un errore...

Qui chiamiamo questa funzione:

Nel mio tester e sul mio conto reale questo robot funziona bene! Anche quando viene inserito un lotto errato, restituisce comunque quello corretto e funziona ulteriormente...

E sapete dove torna l'errore 4051! Questo è in generale...!

Lot non è normalizzato?
 
Maksim Neimerik:

Voglio solo discutere il codice:

Ho modificato il controllo standard per restituire il lotto corretto invece di un errore...

Qui chiamiamo questa funzione:

Nel mio tester e sul mio conto reale questo robot funziona bene! Anche quando viene inserito un lotto errato, restituisce comunque quello corretto e funziona ulteriormente...

E sapete dove torna l'errore 4051! Questo è in generale...!

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }

   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
   {
      Print("Wrong lot size");
      return(min_volume);
   }
     
   if(volume<MarketInfo(Symbol(),MODE_MINLOT))
   {
      Print("Trade stop invalid lot size");
      Comment("Trade stop invalid lot size"); 
      return(MarketInfo(Symbol(),MODE_MINLOT));
   }
   return(volume);
}
E non arriverà mai a questo punto
Motivazione: