Überprüfung des Mindeststopps in den auf dem Marktplatz veröffentlichten EAs.

 

Hallo, Freunde!

Es gibt eine Besonderheit bei Marketplace: Wir müssen alle Werte für min stop überprüfen.

Wenn der Wert der Variablen kleiner ist als der Min-Stopp, dann weisen Sie einen Min-Stopp zu, damit kein Fehler 130 auftritt.

Gegenwärtig haben 90 % der Broker einen variablen Spread und einen Mindest-STOP sowie eine Rendite von 0.

Es gibt ein Code-Konstrukt, das alle Variablen dem Min-Stop zuweist.

 int OnInitLevels(string symToWorkmodify)
  {
   if(lot<SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN);else
   if(lot>SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX);else lots=lot;
   if(StopLoss>0 && StopLoss<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))StopLosss=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else StopLosss=StopLoss;
   if(TakeProfit>0 && TakeProfit<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfits=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfits=TakeProfit;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   if(TakeProfitALL>0 && TakeProfitALL<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfitsAver=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfitsAver=(int)TakeProfitALL;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   return(0);
  }

Aber das funktioniert auf dem Marktplatz nicht mehr, weil minstop = 0 überall jetzt,

Wer kümmert sich um dieses Problem?

 

Natürlich nicht )))) Nicht SL, TP und TS sollten auf ein Minimum gesetzt werden, sondern das Stop Level. Und zwar nicht nur einmal beim Programmstart, sondern bei jedem Tick:

   digits          = (int) SymbolInfoInteger(symbol, SYMBOL_DIGITS);
   point           = SymbolInfoDouble(symbol, SYMBOL_POINT);
   
   tickSize        = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE);
   
   ask             = SymbolInfoDouble(symbol, SYMBOL_ASK);
   bid             = SymbolInfoDouble(symbol, SYMBOL_BID);
   spread          = ask - bid;

   stopLevel       = MarketInfo(symbol, MODE_STOPLEVEL) * point;
   
   if (stopLevel == 0)
   {
      if (!isECN)
         stopLevel = NormalizeDouble(2 * spread, digits);
   }
   else
      stopLevel = NormalizeDouble(stopLevel + tickSize, digits);
isECN - muss dem Benutzer zur Einstellung zur Verfügung stehen. Es gibt Konten wie "True ECN", bei denen es wirklich keine Beschränkungen für Mindestabstände gibt, d.h. Stopps/Gewinne/Positionen können innerhalb der Spanne gesetzt werden.
 

Danke. aber Ihr Entwurf ist derselbe wie meiner, nur haben Sie bei min stop = 0 nur mit dem Spread*2 multipliziert, aber wie wir bei vielen Brokern wissen min stop = 3 Spread, warum haben Sie 2 gemacht?

Ich überprüfe bei jedem Tick, ob ein Mindeststopp vorliegt.

 
StopLevel wird nicht helfen, da es auch Null zurückgibt, verwenden Sie Ask-Bid Differenz, kann mit einigen Multiplikator sein
 
Alexander Bereznyak:
StopLevel hilft nicht, da es auch Null zurückgibt, ich verwende die Ask-Bid-Differenz
ist es für Spread, aber für Min-Stop?
 
und auch für eine kurze Pause
 
Alexander Bereznyak:
und auch für den Minusstopp.
Sie machen also den Mindeststopp gleich dem Spread?
 
Vladislav Andruschenko:

Hallo, Freunde!

Es gibt eine Besonderheit bei Marketplace: Wir müssen alle Werte für min stop überprüfen.

Wenn der Wert der Variablen kleiner ist als der Min-Stopp, dann weisen Sie einen Min-Stopp zu, damit kein Fehler 130 auftritt.

Gegenwärtig haben 90 % der Broker einen variablen Spread und einen Mindest-STOP sowie eine Rendite von 0.

Es gibt ein Code-Konstrukt, das alle Variablen dem Min-Stop zuweist.

Aber das funktioniert auf dem Marktplatz nicht mehr, weil minstop = 0 überall jetzt,

Wer kümmert sich um dieses Problem?

Als Option kann eine Beschränkung der Mindestgröße der Haltestellen eingeführt werden. Wenn ein Benutzer beispielsweise in OnInit() einen Anschlag kleiner als 2 Punkte setzt, wird eine Warnung ausgegeben und der Code INIT_PARAMETERS_INCORRECT zurückgegeben.

Eine andere Möglichkeit besteht darin, dem Benutzer nicht zu erlauben, die Größe des Stopps zu kontrollieren, sondern ihn dynamisch im Expert Advisor auf der Grundlage der Handelsbedingungen zu berechnen.

 
Da der Broker den Mindeststopp mit Null angibt, gibt es nichts weiter zu tun, Sie können den Multiplikator aufheben, wenn der Spread nicht ausreicht
 
Vitalii Ananev:

Alternativ können Sie auch eine Begrenzung der Mindestgröße des Stopps einführen. Wenn ein Benutzer beispielsweise in OnInit() einen Stopp von weniger als 2 Pips setzt, wird eine Warnung ausgegeben und der Code INIT_PARAMETERS_INCORRECT zurückgegeben.

Eine andere Möglichkeit besteht darin, dass der Benutzer die Größe des Stopps nicht steuern kann und dieser dynamisch im Expert Advisor auf der Grundlage der Handelsbedingungen berechnet wird.

Ich stimme zu - nicht die Kontrolle abzugeben, aber Sie wissen, wie es von dem Typ verlangt wird: Ich möchte meinen eigenen Anschlag setzen.

Ich werde über die Ausgabe der Nachricht nachdenken - vielen Dank.

 
Alexander Bereznyak:
Da der Broker den Mindeststopp auf Null setzt, bleibt nichts anderes übrig, als einen Multiplikator zu nehmen, wenn der Spread nicht ausreicht

Ja, das gilt nur für den Markt - aber es gibt keine Universalität für jeden Makler

Die Funktionsweise ist, dass Sie einen Mindeststopp bei 3 Spreads machen müssen, um auf dem Markt akzeptiert zu werden,

Der einzige Unterschied ist, dass der Markt sie akzeptiert - Sie müssen einen Mindeststopp und 3 Spreads machen, aber in Wirklichkeit ist das falsch - wenn ein Broker Mindeststopp = 1 Spread - dann kann der Benutzer nicht weniger als 3 Spreads setzen.

Schallwand.