Expert Advisors: Hedge any positions - Seite 2

[Gelöscht]  

Guten Tag mein Freund...

Ich halte das Studium über MQL5 Programmierung und seine Codes haben als Inspiration und Basis von Studien gedient, ich habe eine Menge gelernt, aber manchmal bekomme ich ein wenig verloren und ich kann nicht genau verstehen, was bestimmte Codes tun und warum sie da sind ...

Ich war in der Lage, den gesamten Code von "Hedge any positions" zu verstehen, nur ein Teil des Codes, dass ich Schwierigkeiten habe zu verstehen, was es tut und warum es da ist, könnte mir helfen, zu verstehen, was es ist und warum es in den Code aufgenommen wurde?

bool RefreshRates(const string symbol,
                  const ulong magic,
                  double freeze_level,
                  double stop_level)
{
   if(!m_symbol.Name(symbol))
   {
      return(false);
   }

   m_trade.SetExpertMagicNumber(magic);
   m_trade.SetDeviationInPoints(0);
   m_trade.SetTypeFillingBySymbol(m_symbol.Name());
   m_trade.SetMarginMode();

   if(!m_symbol.RefreshRates())
   {
      Print("RefreshRates error");
      return(false);
   }

   if(!m_symbol.Refresh())
   {
      Print("Refres error");
      return(false);
   }
   
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
   {
      return(false);
   }

   freeze_level=m_symbol.FreezeLevel()*m_symbol.Point();
   if(freeze_level==0.0)
   {
      freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   }
   freeze_level*=1.1;

   stop_level=m_symbol.StopsLevel()*m_symbol.Point();
   if(stop_level==0.0)
   {
      stop_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   }
   stop_level*=1.1;

   if(freeze_level<=0.0 || stop_level<=0.0)
   {
      return(false);
   }
   return(true);
}
 
rmca :

Guten Tag mein Freund...

Ich halte das Studium über MQL5 Programmierung und seine Codes haben als Inspiration und Basis von Studien gedient, ich habe eine Menge gelernt, aber manchmal bekomme ich ein wenig verloren und ich kann nicht genau verstehen, was bestimmte Codes tun und warum sie da sind ...

Ich war in der Lage, den gesamten Code von "Hedge any positions" zu verstehen, nur ein Teil des Codes, dass ich Schwierigkeiten habe zu verstehen, was es tut und warum es da ist, könnte mir helfen, zu verstehen, was es ist und warum es in den Code aufgenommen wurde?

Was genau ist nicht klar?

[Gelöscht]  
Vladimir Karputov:

Was genau ist nicht klar?

freeze_level=m_symbol.FreezeLevel()*m_symbol.Point();
   if(freeze_level==0.0)
   {
      freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   }
   freeze_level*=1.1;

   stop_level=m_symbol.StopsLevel()*m_symbol.Point();
   if(stop_level==0.0)
   {
      stop_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   }
   stop_level*=1.1;

   if(freeze_level<=0.0 || stop_level<=0.0)
   {
      return(false);
   }
   return(true);
}

Ich habe nicht verstanden, warum "freeze_level" und "stop_level" überprüft werden, warum, wenn sie den Wert "0" zurückgeben, die Berechnung (Ask-Bid) * 3 erfolgt? Und wenn der Wert "0" nicht zurückgegeben wird, erfolgt dann die Multiplikation mit 1,1?

Was bedeuten diese "freeze_level" und "stop_level"?

Ich habe in der Dokumentation nachgeschaut und nicht wirklich verstanden, wozu sie dienen und warum diese Prüfung und Multiplikation durchgeführt wird, wenn der Wert "0" zurückkommt oder nicht.

 
rmca :

Ich habe nicht verstanden, warum "freeze_level" und "stop_level" überprüft werden, ***

Warum prüfen: Lesen Sie die Prüfungen, die ein Handelsroboter vor der Veröffentlichung auf dem Markt bestehen muss


rmca:

***Warum erfolgt die Berechnung (Ask-Bid) * 3, wenn sie den Wert "0" zurückgeben? ***

Elementarer Schutz: "0" kann einen gleitenden Pegel bedeuten. In solchen Fällen ist es üblich, mit "3" zu multiplizieren.


Meine neuen Expert Advisors verwenden einen modifizierten Ansatz:

***
input group             "Additional features"
***
input uchar    InpFreezeCoefficient = 1;           // Koeffizient (wenn Freeze==0 oder StopsLevels==0)
***
//+------------------------------------------------------------------+
//| Einfrieren und Anhalten prüfen|
//+------------------------------------------------------------------+
void FreezeStopsLevels(double &freeze,double &stops)
  {
//--- Einfrier- und Anhaltepegel prüfen
   /*
 SYMBOL_TRADE_FREEZE_LEVEL zeigt den Abstand des Einfrierens der Handelsoperationen
 für schwebende Aufträge und offene Positionen in Punkten
 ------------------------|--------------------|--------------------------------------------
 Art der Order/Position | Aktivierungspreis | Prüfung
 ------------------------|--------------------|--------------------------------------------
 Buy Limit Order| Ask | Ask-OpenPrice>= SYMBOL_TRADE_FREEZE_LEVEL
 Stop-Order kaufen |Ask | OpenPrice-Ask >= SYMBOL_TRADE_FREEZE_LEVEL
 Sell Limit order | Bid| OpenPrice-Bid >= SYMBOL_TRADE_FREEZE_LEVEL
 Verkaufen Stop-Order | Bid| Bid-OpenPrice >= SYMBOL_TRADE_FREEZE_LEVEL
 Position kaufen| Bid| TakeProfit-Bid >= SYMBOL_TRADE_FREEZE_LEVEL
 || Bid-StopLoss >= SYMBOL_TRADE_FREEZE_LEVEL
 Position verkaufen | Ask| Ask-TakeProfit >= SYMBOL_TRADE_FREEZE_LEVEL
 || StopLoss-Ask >= SYMBOL_TRADE_FREEZE_LEVEL
 ------------------------------------------------------------------------------------------

 SYMBOL_TRADE_STOPS_LEVEL bestimmt die Anzahl der Punkte für die minimale Einrückung des
 StopLoss- und TakeProfit-Levels vom aktuellen Schlusskurs der offenen Position
 ------------------------------------------------|------------------------------------------
 Gekauft wird zum Ask-Kurs | Verkauft wird zum Bid-Kurs
 ------------------------------------------------|------------------------------------------
 TakeProfit>= Geld| TakeProfit <= Ask
 StopLoss<= Bid| StopLoss >= Ask
 TakeProfit - Bid >= SYMBOL_TRADE_STOPS_LEVEL | Ask - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
 Bid - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL | StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL
 ------------------------------------------------------------------------------------------
 */
   double coeff=(double)InpFreezeCoefficient;
   if(!RefreshRates() || !m_symbol.Refresh())
      return;
//--- FreezeLevel -> für anhängige Aufträge und Änderungen
   double freeze_level=m_symbol.FreezeLevel()*m_symbol.Point();
   if(freeze_level==0.0)
      if(InpFreezeCoefficient>0)
         freeze_level=(m_symbol.Ask()-m_symbol.Bid())*coeff;
//--- StopsLevel -> für TakeProfit und StopLoss
   double stop_level=m_symbol.StopsLevel()*m_symbol.Point();
   if(stop_level==0.0)
      if(InpFreezeCoefficient>0)
         stop_level=(m_symbol.Ask()-m_symbol.Bid())*coeff;
//---
   freeze=freeze_level;
   stops=stop_level;
//---
   return;
  }
The checks a trading robot must pass before publication in the Market
The checks a trading robot must pass before publication in the Market
  • www.mql5.com
Before any product is published in the Market, it must undergo compulsory preliminary checks, as a small error in the expert or indicator logic can cause losses on the trading account. That is why we have developed a series of basic checks to ensure the required quality level of the Market products. If any errors are identified by the Market...
[Gelöscht]  
Vladimir Karputov:

Warum prüfen: Lesen Sie Die Prüfungen, die ein Handelsroboter vor der Veröffentlichung auf dem Markt bestehen muss


Elementarer Schutz: '0' kann eine gleitende Stufe bedeuten. In solchen Fällen ist es üblich, mit "3" zu multiplizieren.


Meine neuen Expert Advisors verwenden einen modifizierten Ansatz:

Danke für die Antwort, ich habe die gesamte Dokumentation, die Sie mir geschickt haben, gelesen und einige Änderungen am Code vorgenommen:

bool RefreshRates(const string symb,
                  const ulong magi)
{
   if((!m_symbol.Name(symb))
   && (!m_symbol.RefreshRates() || !m_symbol.Refresh())
   && (m_symbol.Ask()==0 || m_symbol.Bid()==0))
   {
      return(false);
   }
   m_trade.SetExpertMagicNumber(magi);
   m_trade.SetDeviationInPoints(0);
   m_trade.SetTypeFillingBySymbol(m_symbol.Name());
   m_trade.SetMarginMode();
   return(true);
}

Glauben Sie, dass dies ein guter Ansatz ist, um Kurse und Konfiguration für einen Handel zu aktualisieren (und auf Aktualisierungen zu prüfen)?

 
rmca :

Danke für die Antwort, ich habe die gesamte Dokumentation, die Sie mir geschickt haben, gelesen und einige Änderungen an dem Code vorgenommen:

Glauben Sie, dass dies ein guter Ansatz ist, um Kurse und Konfiguration für einen Handel zu aktualisieren (und auf Aktualisierungen zu prüfen)?

Dies sind die Zeilen:

   m_trade.SetDeviationInPoints(0);
   m_trade.SetTypeFillingBySymbol(m_symbol.Name());
   m_trade.SetMarginMode();

Einmal müssen Sie sich in OnInit registrieren.



Sie haben null Schlupf eingestellt - seien Sie darauf vorbereitet, dass Sie sehr oft eine Ablehnung erhalten werden

 
Alles, was Sie tun müssen, ist, diesen EA auf einem Diagramm aktiv zu lassen und er wird die Position eines anderen EA auf einem anderen Diagramm überwachen und "schützen", ist es das?
 
Eine Frage: Was passiert, wenn der Loskoeffizient kleiner als 1 ist, zum Beispiel 0,5?
 
Eduardo Alvarado :
Eine Frage: Was passiert, wenn der Loskoeffizient kleiner als 1 ist, zum Beispiel 0,5?

Es wird eine Position mit einem kleineren Volumen eröffnet.

 
Ist es möglich, diesen EA zu aktualisieren, um Aufträge zu filtern und nur die Absicherung nach einer bestimmten magischen Zahl anzuwenden?