Diskussion zum Artikel "Das MQL5-Kochbuch: Mehrwährungsfähiger Expert Advisor – eine einfache, saubere und schnelle Herangehensweise" - Seite 3

 
//+------------------------------------------------------------------+
//|| Berechnet den Trailing-Stop-Level |
//+------------------------------------------------------------------+
double CalculateTrailingStop(int symbol_number,ENUM_POSITION_TYPE position_type)
  {
//--- Variablen für Berechnungen
   double    level       =0.0;
   double    buy_point   =low[symbol_number].value[1];  // Niedriger Wert für Kaufen
   double    sell_point  =high[symbol_number].value[1]; // Hoher Wert für Verkaufen

Dies ist nicht korrekt. Wenn die Position und der Barpreis mit einem Gap eröffnen, wird StopLoss nicht korrekt gesetzt.

 
Jose:

Der Artikel ist ordentlich und leicht zu folgen, und die Bereitstellung der Einstellungen in den .set-Dateien. Ich hatte ein Problem mit den Ausführungsmodi der Symbole, insbesondere mit der Bedingung, die prüft, ob es sich um einen sofortigen oder einen Markt handelt, und erst danach die Eröffnung von Aufträgen zulässt.

Ich habe eine Frage. Ich habe viele verschiedene fortgeschrittene Ansätze gesehen, wie diesen hier, die von Grund auf so aufgebaut sind, dass sie die bereitgestellte Struktur Expert, ExpertSignal, ExpertTrade.... vernachlässigen, obwohl sie eine Menge Code (und Zeit, nehme ich an) aufwenden, um einige ihrer Funktionen zu replizieren. Könnte mir jemand eine Erklärung dafür geben, bitte?

Hallo zusammen!

Ich versuche, diesen EA zu testen, erhalte aber gerade folgende Meldung im Strategy Tester: "Fehler beim Öffnen der Position: 4753 - 1 Die Position wurde nicht gefunden". Ich verstehe nicht, warum. Dies passiert, wenn die Funktion "trade.PositionOpen" in der Zeile 159 der Datei "TradeFunctions.mqh" ausgeführt wird. Kann mir jemand bitte helfen?

 

Können Sie mir sagen, wo die Positionsumkehr stattfindet, wie vom Autor beschrieben? Hier ist sein Code mit Beschreibung

//--- Wenn es eine Position gibt
   else
     {
      //--- Abrufen der Positionsart
      GetPositionProperties(symbol_number,P_TYPE);
      //--- Wenn die Position dem Signal entgegengesetzt ist und die Positionsumkehr aktiviert ist
      if(pos.type==opposite_position_type && Reverse[symbol_number])
        {
         //--- Abrufen des Positionsvolumens
         GetPositionProperties(symbol_number,P_VOLUME);
         //--- Einstellen der Lautstärke
         lot=pos.volume+CalculateLot(symbol_number,Lot[symbol_number]);
         //--- Kehren wir die Position um
         OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);
         return;
        }

Sehen Sie sich die Funktion OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment) an ;

//+------------------------------------------------------------------+
//|| Öffnet eine Position|
//+------------------------------------------------------------------+
void OpenPosition(int symbol_number,
                  double lot,
                  ENUM_ORDER_TYPE order_type,
                  double price,
                  double sl,
                  double tp,
                  string comment)
  {
//--- Einstellen der Hauptnummer in der Handelsstruktur
   trade.SetExpertMagicNumber(MagicNumber);
//--- Einstellen der Schlupfgröße in Punkten
   trade.SetDeviationInPoints(CorrectValueBySymbolDigits(Deviation));
//--- Sofortige Ausführung und Marktausführungsmodus
*** Ab Build 803, Stop Loss und Take Profit Levels ***
// *** kann bei der Eröffnung einer Position im Modus SYMBOL_TRADE_EXECUTION_MARKET gesetzt werden ***
   if(symb.execution_mode==SYMBOL_TRADE_EXECUTION_INSTANT ||
      symb.execution_mode==SYMBOL_TRADE_EXECUTION_MARKET)
     {
      //--- Wenn die Position nicht geöffnet ist, wird eine Meldung darüber ausgegeben
      if(!trade.PositionOpen(Symbols[symbol_number],order_type,lot,price,sl,tp,comment))
         Print("Fehler beim Öffnen einer Position: ",GetLastError()," - ",ErrorDescription(GetLastError()));
     }
  }
Es ist nur eine Sperre! Es gibt keine Umkehrung... dasselbe gilt für das Lot-Inkrement! Können Sie mir das erklären, vielleicht liege ich ja falsch?
 
Tango_X:

Können Sie mir sagen, wo die Positionsumkehr stattfindet, wie vom Autor beschrieben? Hier ist sein Code mit Beschreibung

Sehen Sie sich die Funktion OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment) an;

Es ist nur eine Sperre! Es gibt keine Umkehrung... dasselbe gilt für das Lot-Inkrement! Können Sie mir das erklären, vielleicht liege ich ja falsch?

Es gibt zwei Arten von Handelskonten: Netting und Hedge.

Es gabAktionEs war auf Netting.Es ist auf Hedge.
Kauf 1,0Verkaufen 2,0Verkaufen 1,0Kaufen 1,0 und Verkaufen 2,0
 
Vladimir Karputov:

Es gibt zwei Arten von Handelskonten: Netting und Hedge.

Es gabAktionWurde auf NettingWurde auf Hedge
Kauf 1,0Verkaufen 2.0Verkaufen 1,0Kaufen 1.0 und Verkaufen 2.0

Ich hab's! Ich danke Ihnen!

 
"TimeframeToString" existiert nicht und ist im Artikel nicht deklariert, bitte durch "EnumToString" ersetzen.