Expert Advisors: Patterns_EA - Seite 2

 
Morexod:



Siehe Modusklauseln.

Posten 5 = 3 Berufe

Posten 3 = 18 Tr.

P.5 + P.3 = 21 Tr. P.5 + P.3 <= P.2

aber P.2 = 200 Tr. und nicht <= 21 Tr.

Der Expert Advisor ist für Hedge-Konten gedacht. Es ist unmöglich, eine Position darin umzukehren. Sie müssen eine Position schließen und eine andere eröffnen.
 
Artyom Trishkin:
Der Expert Advisor ist für Hedge-Konten gedacht. Es ist nicht möglich, eine Position umzukehren. Sie müssen eine Position schließen und eine andere eröffnen.

Er ist optimiert.

Immer eine Position (Swing) - immer nur eine Position auf dem Markt = 200 Aufträge

Beliebige Position - beliebige Positionen = 185 Aufträge

Unter der Bedingung "Beliebige Position" sollte es mehr Aufträge geben als unter der Bedingung "Immer nur eine Position im Markt".

 
Morexod:

Die Optimierung ist im Gange.

Immer eine Position (Swing) - immer nur eine Position auf dem Markt = 200 Orders

Beliebige Position - beliebige Positionen = 185 Orders

In der Bedingung "Beliebige Position" sollte es mehr Aufträge geben als in der Bedingung "Immer nur eine Position im Markt".

Im Falle von "Beliebige Position - Beliebige Positionen" wird die Beschränkung des maximal zulässigen Gesamtvolumens auf dem Konto ausgelöst, da alle Positionen wahllos geöffnet werden. Und irgendwann kommt der Moment, in dem das zulässige Gesamtvolumen des Kontos überschritten wird, und die Positionen werden nicht mehr eröffnet.

Und im Falle von immer nur einer Position (Swing) - "only one position" - kann die Beschränkung nur funktionieren, wenn das ursprünglich eingestellte Volumen der eröffneten Position größer ist als das maximal erlaubte. Und der EA wird, wie der Autor verspricht, dieses Volumen einfach an das mögliche anpassen.

Vielleicht ist es für Sie einfacher, im visuellen Modus zu schauen, anstatt zu versuchen, voreilige Schlüsse auf der Grundlage der Anzahl der Aufträge in den Berichten zu ziehen? ;)

 
fxsaber:

Das ist der Ursprung des Codes:

int OnInit()
  {
//--- Einstellung der Handelsparameter
   if(!SetTradeParameters())
      return INIT_FAILED;

Die Funktion selbst. Der Modus, der das verursachen kann, was Sie andeuten, ist deaktiviert.

//+------------------------------------------------------------------+
//| Handelsparameter einstellen|
//+------------------------------------------------------------------+
bool SetTradeParameters()
  {
//--- Einstellung des Symbols
   ResetLastError();
   if(!symbol_info.Name(Symbol()))
     {
      Print(__FUNCTION__,": Error setting ",Symbol()," symbol: ",GetLastError());
      return false;
     }
//--- Preise erhalten
   ResetLastError();
   if(!symbol_info.RefreshRates())
     {
      Print(__FUNCTION__,": Error obtaining ",symbol_info.Name()," data: ",GetLastError());
      return false;
     }
   if(account_info.MarginMode()==ACCOUNT_MARGIN_MODE_RETAIL_NETTING)
     {
      Print(__FUNCTION__,": ",account_info.MarginModeDescription(),"-account. EA should work on a hedge account.");
      return false;
     }
//--- Automatische Einstellung der Füllungsart
   trade.SetTypeFilling(GetTypeFilling());
//--- Installation von Magik
   trade.SetExpertMagicNumber(InpMagic);
//--- Schlupfeinstellung
   trade.SetDeviationInPoints(InpDeviation);
//--- Loteinstellung mit Korrektur des eingegebenen Wertes
   lot=CorrectLots(InpVolume);
//--- Asynchroner Auftragssendungsmodus ist ausgeschaltet
   trade.SetAsyncMode(false);
//---
   return true;
  }
//+------------------------------------------------------------------+

Oder habe ich Ihren Hinweis missverstanden?

 
Artyom Trishkin:

Das ist der Ursprung des Codes:

Die Funktion selbst. Der Modus, der das verursachen kann, was Sie andeuten, ist deaktiviert.

Oder habe ich Ihren Hinweis missverstanden?

Diese Situation betrifft den synchronen Modus.

 
Dieser Modus funktioniert in diesem EA nicht: InpModeOpened==OPENED_MODE_SWING
 
kwlin_089:
Dieser Modus funktioniert in diesem EA nicht: InpModeOpened==OPENED_MODE_SWING

warum?

Ich schaue mir den Code an und sehe:

//+------------------------------------------------------------------+
//| Die Handelsfunktion|
//+------------------------------------------------------------------+
int Trade(const ENUM_PATTERN_TYPE &pattern_type,const int index)
  {
   ENUM_POSITION_TYPE type=patt.PositionPattern(pattern_type);
   int number=0,last_total=list_trade_patt.Total();
//--- Immer eine Position auf dem Markt Kaufen oder Verkaufen
   if(InpModeOpened==OPENED_MODE_SWING)
     {
      if(type==POSITION_TYPE_BUY && NumberSell()>0) CloseSell();
      if(type==POSITION_TYPE_SELL && NumberBuy()>0) CloseBuy();
     }
//--- Nur eine Kaufposition
   if(InpModeOpened==OPENED_MODE_BUY_ONE)
     {
      if(NumberBuy()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_SELL) return last_total;
     }
//--- Beliebige Menge Kaufen
   if(InpModeOpened==OPENED_MODE_BUY_MANY)
      if(type==POSITION_TYPE_SELL) return last_total;
//--- Nur eine Verkaufsposition
   if(InpModeOpened==OPENED_MODE_SELL_ONE)
     {
      if(NumberSell()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_BUY) return last_total;
     }
//--- Beliebige Anzahl von Verkaufen
   if(InpModeOpened==OPENED_MODE_SELL_MANY)
      if(type==POSITION_TYPE_BUY) return last_total;
//--- Alle Prüfungen sind bestanden oder ein beliebiges Coli ist ausgewählt чество любых позиций - открываем позицию
   if(to_logs)
      Print(__FUNCTION__,": To open ",(type==POSITION_TYPE_BUY ? "Buy" : "Sell")," position by pattern ",patt.DescriptPattern(pattern_type));
   if(OpenPosition(pattern_type))   
      list_trade_patt.Delete(index);
//--- Rückgabe der Anzahl der offenen Positionen
   return last_total-list_trade_patt.Total();
  }
//+------------------------------------------------------------------+
  1. Wenn es der Swing-Modus ist.
    1. wenn es notwendig ist, einen Kauf zu öffnen und es gibt Verkäufe, dann schließe Verkäufe
    2. wenn es notwendig ist, einen Verkauf zu öffnen und es gibt Käufe, dann schließe Käufe.
  2. Wenn alle Prüfungen bestanden sind, öffnen Sie die gewünschte Position.
Oder habe ich hier etwas falsch verstanden? Erklären Sie das.
 
Artyom Trishkin:

Warum?

Ich schaue mir den Code an, und ich sehe es:

  1. Wenn es der Swing-Modus ist.
    1. wenn es notwendig ist, einen Kauf zu eröffnen und es gibt Verkäufe, dann schließe Verkäufe.
    2. Wenn es notwendig ist, einen Verkauf zu eröffnen und es gibt Käufe, dann schließe Käufe.
  2. Wenn alle Prüfungen bestanden sind, öffnen Sie die gewünschte Position.
Oder habe ich hier etwas falsch verstanden? Erklären Sie das.

Artem, so wie ich es verstehe, sprechen wir über "verschwindende" Positionen. In mt4 sind das SL und TP. Ich kann nicht über mt5 urteilen...

 
Алексей Тарабанов:

Artem, wie ich es verstehe, sind wir über "verschwindende" Positionen sprechen. In mt4 sind dies SL und TP. Ich kann nicht beurteilen, über mt5....

In MT5 wird es also dasselbe sein. Wenn es einen Kauf von 0,1 gibt, ist der Stop eine Stop-Order zum Verkauf von 0,1.
Es wird keine Position geben, wenn er ausgelöst wird. Und um die Position umzukehren, müssen Sie 0,2 verkaufen.
 
Artyom Trishkin:
Es wird also dasselbe in MT5 sein. Wenn es einen Kauf von 0,1 gibt, ist der Stop ein Stop-Auftrag zum Verkauf von 0,1.
Wenn er ausgelöst wird, gibt es keine Position. Und um die Position umzukehren, müssen Sie 0,2 verkaufen.

Sie wissen es besser, aber manchmal zieht es jemand vor, zu überprüfen.