Markt: keine Handelsgeschäfte

 

Kann jemand erklären, warum der Markt diesen Fehler meldet? Alle Kontrollen des EA sind vorhanden...

Ich verstehe natürlich das Wesentliche - es gibt keinen Handel, aber was ist der Grund dafür?

Ограничения и проверки в экспертах
Ограничения и проверки в экспертах
  • www.mql5.com
При создании алгоритма для автоматической торговли необходимо не только уметь обрабатывать цены с целью выработки торговых сигналов, но и зачастую требуется получать множество вспомогательной информации об ограничениях, накладываемых на работу эксперта.  В этой статье будет рассказано о том как: получить информацию о торговых сессиях...
 
  • z.B. - Handelslot in den Einstellungen = 0, EA kann keinen Handel eröffnen, weil Lot = 0 .
  • Begrenzung des Spreads im Expert Advisor, öffnet keine Positionen.
  • In der Testphase gibt es eigentlich keine Signale zur Eröffnung von Positionen.

Und die Kontrollen sehen nur Sie, Ihr Code ist nicht beigefügt.

Beispiele aus den Tausenden....

 
Vladislav Andruschenko:
  • z.B. - Handelslot in den Einstellungen = 0, EA kann keinen Handel eröffnen, weil Lot = 0 .
  • Begrenzung des Spreads im Expert Advisor, öffnet keine Positionen.
  • In der Testphase gibt es eigentlich keine Signale zur Eröffnung von Positionen.

Und die Kontrollen sehen nur Sie, Ihr Code ist nicht beigefügt.

Beispiele aus den Tausenden....

Kontrollen für die Richtigkeit des Loses sind vorhanden, Signale sind definitiv vorhanden - es ist ein Netminder, keine Streuungsgrenzen...
 
Vladislav Andruschenko:
  • z.B. - Handelslot in den Einstellungen = 0, EA kann keinen Handel eröffnen, weil Lot = 0 .
  • Begrenzung des Spreads im Expert Advisor, öffnet keine Positionen.
  • In der Testphase gibt es eigentlich keine Signale zur Eröffnung von Positionen.

Und die Kontrollen sehen nur Sie, Ihr Code ist nicht beigefügt.

Beispiele aus den Tausenden....

Kontrollen für die Richtigkeit des Loses sind vorhanden, Signale sind definitiv vorhanden - es ist ein Netminder, keine Streuungsgrenzen... Ich verstehe gar nichts...
 
Maksim Neimerik:
Die Lot-Validierung ist da, die Signale sind definitiv da - es ist ein Netminder, keine Streubeschränkungen...

nun, dann gibt es 100500 weitere Möglichkeiten.

Der Nettler besteht den Markttest mit Bravour.

 
Vladislav Andruschenko:

nun, dann gibt es 100500 weitere Möglichkeiten.

Der Nettler besteht den Markttest mit Bravour.

Einverstanden, aber irgendwie nicht dieses:)
 
Maksim Neimerik:
Ich stimme zu, aber aus irgendeinem Grund nicht dieser:)


Es ist verboten, hier über Bots auf dem Marktplatz zu diskutieren. Und Sie werden sie nicht in den öffentlichen Bereich stellen. Und es gibt bereits 100500 Themen mit diesem Namen, ebenso wie die Gründe für ein solches Thema.

 
Maksim Neimerik:

Kann jemand erklären, warum der Markt diesen Fehler meldet? Alle Kontrollen des EA sind vorhanden...

Ich verstehe natürlich das Wesentliche - kein Handel, aber aus welchem Grund?

Ist es so schwer, die Site-Suche zu benutzen und 100500 Kopien von Zweigen zu erstellen!

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

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

Ich möchte nur den Code diskutieren:

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

Ich habe die Standardprüfung so geändert, dass sie statt eines Fehlers das richtige Los zurückgibt...

Hier rufen wir diese Funktion auf:

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

In meinem Testgerät und auf meinem echten Konto funktioniert dieser Roboter einwandfrei! Selbst wenn ein falsches Los eingegeben wird, gibt es das richtige zurück und arbeitet weiter...

Und Sie wissen, wo der 4051-Fehler auftaucht! Dies ist im Allgemeinen...!

 
Maksim Neimerik:

Ich möchte nur den Code diskutieren:

Ich habe die Standardprüfung so geändert, dass sie statt eines Fehlers das richtige Los zurückgibt...

Hier rufen wir diese Funktion auf:

In meinem Testgerät und auf meinem echten Konto funktioniert dieser Roboter einwandfrei! Selbst wenn ein falsches Los eingegeben wird, gibt es das richtige zurück und arbeitet weiter...

Und Sie wissen, wo der 4051-Fehler auftaucht! Dies ist im Allgemeinen...!

Ist Lot nicht normalisiert?
 
Maksim Neimerik:

Ich möchte nur den Code diskutieren:

Ich habe die Standardprüfung so geändert, dass sie statt eines Fehlers das richtige Los zurückgibt...

Hier rufen wir diese Funktion auf:

In meinem Testgerät und auf meinem echten Konto funktioniert dieser Roboter einwandfrei! Selbst wenn ein falsches Los eingegeben wird, gibt es das richtige zurück und arbeitet weiter...

Und Sie wissen, wo der 4051-Fehler auftaucht! Dies ist im Allgemeinen...!

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);
}
Und es wird nie so weit kommen
Grund der Beschwerde: