Diskussion zum Artikel "Welche Überprüfungen der Handelsroboter vor der Veröffentlichung in Market bestehen soll" - Seite 21

 

Es gab einen Fehler im Code der Datei check_freezelevel.mq5 (Zeile 140), bei dem die Anweisung `if(!TP_check)` fehlte

bool CheckPositionForFREEZE_LEVEL(ulong ticket)
  {
//--- Ermitteln der Stufe SYMBOL_TRADE_FREEZE_LEVEL
   int freeze_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL);
   if(freeze_level!=0)
     {
      PrintFormat("SYMBOL_TRADE_FREEZE_LEVEL=%d: Cannot modify order"+
                  "  nearer than %d points from the activation price",freeze_level,freeze_level);
     }
//--- Position zum Arbeiten auswählen
   if(!PositionSelectByTicket(ticket))
     {
      //--- Position kann nicht ausgewählt werden
      return(false);
     }
//--- Abrufen der Auftragsdaten 
   ENUM_POSITION_TYPE pos_type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
   double sl=PositionGetDouble(POSITION_SL);
   double tp=PositionGetDouble(POSITION_TP);
//--- Ergebnis der Überprüfung von StopLoss und TakeProfit
   bool SL_check=false,TP_check=false;
//--- Positionstyp
   switch(pos_type)
     {
      //--- kaufen
      case POSITION_TYPE_BUY:
        {
         SL_check=(Bid-sl>freeze_level*_Point);
         if(!SL_check)
            PrintFormat("Position %s #%d cannot be modified: Bid-StopLoss=%d points"+
                        " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                        EnumToString(pos_type),ticket,(int)((Bid-sl)/_Point),freeze_level);
         TP_check=(tp-Bid>freeze_level*_Point);
         if(!TP_check)
            PrintFormat("Position %s #%d cannot be modified: TakeProfit-Bid=%d points"+
                        " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                        EnumToString(pos_type),ticket,(int)((tp-Bid)/_Point),freeze_level);
         //--- Rückgabe des Ergebnisses der Prüfung
         return(SL_check&&TP_check);
        }
      break;
      //--- verkaufen
      case POSITION_TYPE_SELL:
        {
         SL_check=(sl-Ask>freeze_level*_Point);
         if(!SL_check)
            PrintFormat("Position %s cannot be modified: StopLoss-Ask=%d points"+
                        " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                        EnumToString(pos_type),(int)((sl-Ask)/_Point),freeze_level);
         TP_check=(Ask-tp>freeze_level*_Point);
         PrintFormat(" Position %s cannot be modified: Ask-TakeProfit=%d points"+
                     " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                     EnumToString(pos_type),(int)((Ask-tp)/_Point),freeze_level);
         //--- Rückgabe des Ergebnisses der Prüfung
         return(SL_check&&TP_check);
        }
      break;
     }
//--- Position hat die Prüfung nicht bestanden
   return (false);
  }
 
Hallo, mein EA handelt auf der Grundlage von Nachrichtenereignissen und funktioniert nicht im Strategietester, aber er ist im Live-Konto profitabel. Wird mein EA, der im Tester nicht funktioniert, bei der Marktvalidierung durchfallen?
 

Im Allgemeinen sieht die Überprüfung der TakeProfit- und StopLoss-Ebenen unter Berücksichtigung des Mindestabstands von SYMBOL_TRADE_STOPS_LEVEL wie folgt aus:

  • Gekauft wird zum Ask-Kurs - die TakeProfit- und StopLoss-Levels müssenmindestens SYMBOL_TRADE_STOPS_LEVEL Punkte vom Bid-Kurs entfernt sein.
  • Verkauft wird zum Bid-Kurs - die TakeProfit- und StopLoss-Ebenen müssenmindestens SYMBOL_TRADE_STOPS_LEVEL-Punkte vom Ask-Kurs entfernt sein.
Gekauft wird zum Ask-Kurs
Verkaufen erfolgt zum Bid-Kurs
TakeProfit - Bid >= SYMBOL_TRADE_STOPS_LEVEL
Bid - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL
Ask - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL



Kann mir bitte jemand erklären, warum ich Zweifel habe?

Ich verstehe, dass der Kauf zum Briefkurs und der Verkauf zum Geldkurs erfolgt. Ich verstehe auch, warum wir den Geldkurs zum Vergleich verwenden, wenn wir für Stop-Loss und Take-Profit kaufen (weil wir den gegenteiligen Handel, also den Verkauf, zum Geldkurs tätigen werden).

Ich verstehe jedoch nicht, warum der Take Profit beim Kauf nicht auch mit dem Ask-Kurs verglichen wird, denn wenn wir ihn nur mit dem Bid-Kurs vergleichen, könnte der Benutzer den Wert möglicherweise höher als den Bid-Kurs, aber niedriger als den Ask-Kurs setzen, was absolut keinen Sinn ergibt.

Vielen Dank für Ihre Zeit.

 

Hallo,

mein EA wird abgelehnt, weil die Validierung "keine Handelsaktivitäten" meldet. Da mein EA so konzipiert ist, dass er zu einem bestimmten Nachrichtendatum handelt, müsste ich wissen, welche historischen Daten während der EA-Validierung verwendet werden. Dann könnte ich ein Standarddatum für Validierungszwecke angeben.

Vielen Dank im Voraus

Tim

 
@Tim Arthur Herbert Kasprzyk #: mein EA wird abgelehnt, weil die Validierung "keine Handelsaktivitäten" meldet. Da mein EA so konzipiert ist, dass er zu einem bestimmten Nachrichtendatum handelt, müsste ich wissen, welche historischen Daten bei der EA-Validierung verwendet werden. Dann könnte ich ein Standarddatum für die Validierung angeben.

Es scheint, dass Sie dieses Thema nicht gelesen haben, bevor Sie gepostet haben ...

Forum über Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien

Diskussion des Artikels "Die Prüfungen, die ein Handelsroboter vor der Veröffentlichung auf dem Markt bestehen muss"

Fernando Carreiro, 2022.12.24 18:46

Gemäß den Market-Produktregeln dürfen Sie Ihren EA nicht auf ein einziges Symbol beschränken oder limitieren. Ihr EA muss für alle Symbole funktionieren, auch wenn er nur für ein einziges Symbol gedacht ist.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Diskussion des Artikels "Die Prüfungen, die ein Handelsroboter vor der Veröffentlichung auf dem Markt bestehen muss"

Fernando Carreiro, 2023.03.27 01:50

Sie dürfen Ihren EA nicht in irgendeiner Weise einschränken. Er muss in der Lage sein, mit allem und jedem zu handeln, auch wenn er für Indizes entwickelt wurde. Bitte lesen Sie die Marktregeln.

Forum über Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien

Diskussion des Artikels "Die Prüfungen, die ein Handelsroboter vor der Veröffentlichung auf dem Market bestehen muss"

Fernando Carreiro, 2023.06.01 13:15

Ihr EA muss in der Lage sein, auf allen Symbolen und in allen Zeitrahmen zu handeln. Es darf keine Beschränkungen geben.

Um die Größe Ihres Logs zu reduzieren, sollten Sie ...

  • Reduzieren Sie die Anzahl der "prints"-Anweisungen in der Log-Ausgabe
  • Verwendung eines Trailing-Schrittes oder Zeitschrittes anstelle von kontinuierlichen Trailing-Stops.
  • Erstellen und löschen Sie nicht ständig Pending Orders. Erwägen Sie die Verwendung "virtueller" schwebender Aufträge.
 
Fernando Carreiro #:

Es scheint, dass Sie dieses Thema nicht gelesen haben, bevor Sie es gepostet haben ...

Hallo Fernando, danke für dein Feedaback. Eigentlich ist mein EA nicht auf ein Symbol oder einen Zeitrahmen beschränkt. Er benötigt nur ein bestimmtes Nachrichtendatum, wie z.B. das Datum der FED-Zinsnachrichten. Ich gebe auch ein Standard-Nachrichtendatum im EA vor. Theoretisch sollte er also die Validierung bestehen. Aber es könnte sein, dass der Validierungsprozess historische Daten verwendet, die mein Standarddatum nicht abdecken. Daher wäre es hilfreich zu verstehen, welche historischen Daten verwendet werden (nicht welches Symbol oder welcher Zeitrahmen, das kann ich im Bericht sehen).
 
@Tim Arthur Herbert Kasprzyk #: Hallo Fernando, danke für dein Feedaback. Eigentlich ist mein EA nicht auf ein Symbol oder einen Zeitrahmen beschränkt. Er benötigt nur ein bestimmtes Nachrichtendatum, wie z.B. das Datum der FED-Zinsnachrichten. Ich gebe auch ein Standard-Nachrichtendatum im EA vor. Theoretisch sollte er also die Validierung bestehen. Aber es könnte sein, dass der Validierungsprozess historische Daten verwendet, die mein Standarddatum nicht abdecken. Daher wäre es hilfreich zu verstehen, welche historischen Daten verwendet werden (nicht welches Symbol oder welcher Zeitrahmen, das kann ich im Bericht sehen).

Dies ist immer noch eine Einschränkung. Entfernen Sie alle Einschränkungen, indem Sie die Standardparameterwerte so einstellen, dass der Handel unabhängig von einem bestimmten Datum, Symbol oder Zeitrahmen möglich ist.

Der EA muss auch die Kontraktspezifikationen lesen und entsprechend anpassen, da er sonst den Validierungsprozess nicht bestehen wird.

 
Ich erhalte die Meldung "Strategy Tester Report not found" EURUSD 1H. Wie kann ich das lösen?

Ich habe viele Male in Strategie-Tester überprüft und mein EA funktioniert ohne Fehler.

Ich habe einen "Validation Test" EA kodiert, der einfach eine Position mit dem minimal zulässigen Volumen eröffnet und die Position nach ein paar Sekunden schließt, aber derselbe Fehler ist aufgetreten.

 

Ich habe gerade einen Kommentar zum Validierungsbericht gelesen , der besagt, dass "keine Handelsaktivitäten" stattfinden. Müssen alle EAs handeln? Mein EA ist nur Zeichnung stuffs auf dem Diagramm, oder es sollte ein Indikator gewesen sein?

 

Hat jemand ein solches Problem? Im Metaquotes DEMO Konto funktioniert es normal und im Test hat es die Validierung nicht bestanden.


test on EURUSD,H1 (netting) 2021.06.30 23:59:59 ExpertRemove() function called removed itself within OnDeinit removed itself on 99% of testing interval strategy tester report 1 total trades