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

 
Igor Volodin:

Auf diese Weise können Sie nicht durch einen Punkt dividieren, da der Wert der FunktionSymbolInfoDouble(symToWorkmodify,SYMBOL_POINT) gleich Null sein kann.
Dies gilt auch für andere Marktfunktionen.

Zum Beispiel führte die Verwendung vonAccountInfoInteger(ACCOUNT_LEVERAGE) in Berechnungen dazu, dass einige Expert Advisors bei der 2010-Meisterschaft mit dem Fehler"Zero divide" abstürzten, wenn diese Funktion bei OnInit 0 zurückgab.

Wenn Sie sich die Referenz ansehen, müssenSymbolInfoDouble(), SymbolInfoInteger() immer auf Fehler geprüft werden.
 
Vladimir Gribachev:

Wenn es so schlimm ist, hier ist es

Bitte beachten Sie noch einmal, dass es hier um eine Situation geht, in der der Pegel 0 ist. Sie haben ein Testergebnis mit einem Wert größer als Null zitiert.

Und wenn es so schlimm ist, wieAndrey F. Zelinsky zu Recht feststellte

können Sie eine Prüfung für den 130. Fehler hinzufügen und +1 zu den Haltestellen hinzufügen. Aber das macht überhaupt keinen Sinn.
Das Prüfen auf Fehler 130 ist eine normale Praxis, genau wie jeder andere Fehler im Programm. Aber das Hinzufügen von 1 zu den Haltestellen ist erstens nicht hilfreich und zweitens eine schlechte Lösung.
 
Ihor Herasko:

Bitte beachten Sie noch einmal, dass es hier um die Situation geht, in der der Pegel 0 ist. Sie haben ein Testergebnis mit einem Wert größer als Null angegeben.

Zeigen Sie mir, wo auf dem MetaQuotes-Demo-Server stoplevel = 0

auch wenn Stop Level = 0 ist, dann entspricht der minimale Stop Loss dem Wert des Spreads.

Wenn der Spread auch 0 ist, dann zeige mir einen solchen Broker und ich werde mein Geld dort anlegen.

Das Prüfen auf Fehler 130 ist eine übliche Praxis, genau wie bei jedem anderen Fehler im Programm. Die Hinzufügung von 1 zu den Haltestellen ist erstens nicht hilfreich und zweitens eine schlechte Entscheidung.

Wer hat gesagt, dass es gut war?

Ich habe den Prüfcode gepostet, Sie haben Eulen zur Überprüfung eingesetzt, ich habe gezeigt, dass auf dem Server, auf dem die Moderatoren prüfen, diese Prüfung funktioniert.

Wenn Sie sich über das System lustig machen wollen und keine Lösung gefunden haben, die der Topikstarter wollte, müssen Sie ein neues Thema mit dem Titel "Lasst uns die Gehirne in die Luft jagen!

ZS: Der Topickeeper brauchte eine Lösung, um auf dem Markt getestet zu werden. Die Moderatoren testen auf ihrem Server, nicht auf Alps oder wo auch immer.

 
Vladimir Gribachev:

Wenn der Spread auch 0 ist, dann zeigen Sie mir einen solchen Broker und ich werde dorthin gehen, um Kohle zu hacken.

Nein, es wird eine Provision geben.
 

:-) Ich las ihn und lächelte.


Ich habe nicht gefragt, was zu tun ist, wenn der Server 0 zurückgibt, mäßigen Sie Ihr Ego - ich bin speziell an eine Person gerichtet, er wird es verstehen oder nicht - aber es spielt keine Rolle.

Der Beitrag wurde nicht um der Kommunikation willen geschrieben, sondern für konkrete Beispiele von Programmierern, die ihre Produkte auf den Markt bringen. Es ist seltsam, von einem Mann, der noch nie ein einziges Produkt verkauft hat, zu hören, was man tun und was man nicht tun sollte.

DIES IST EIN THEMA, UND WIR SPRECHEN ÜBER DIE ÜBERPRÜFUNG AUF DEM MARKT.

Wir sprechen nicht darüber, was ein EA prüfen sollte und wie Fehler zu behandeln sind. - Damit habe ich kein Problem.

 
Vladislav Andruschenko:

Ich habe nicht gefragt, was zu tun ist, wenn der Server 0 zurückgibt.

Dann hätten Sie sich in der Betreffzeile deutlicher ausdrücken müssen:

Zurzeit haben 90 % der Broker variable Spreads und Minstops und bringen 0.

 
Ihor Herasko:

Dann müssen Sie sich in diesem Thema deutlicher ausdrücken:

Ich fragte, wie man Marktplatz Fehler zu umgehen, wenn der Server 0 zurückgibt - und bei der Überprüfung in macret der Moderator setzt stoploss = 1, aber EA kann nicht ändern, um min Stop, wie es 0 ist, - es ist floating.

Es ist klar, dass der EA Fehler 130 zurückgibt und sagt, dass der Stoploss falsch ist, Änderungen vornehmen, aber auf dem Marktplatz, dieser Befehl funktioniert nicht.

mein Beitrag hörte sich so an:

Hallo, Freunde!

Es gibt eine Besonderheit des Marktplatzes: Sie müssen alle Werte für den Mindeststopp überprüfen.

Wenn der Wert der Variablen kleiner ist als der Min-Stopp, dann weisen Sie einen Min-Stopp zu, damit keinFehler 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 befasst sich mit diesem Problem?

 
Vladimir Gribachev:

Zeigen Sie mir, wo auf dem MetaQuotes-Demo-Server stoplevel = 0

Nicht auf dem MetaQuotes-Server, sondern bei der Überprüfung auf dem Marktplatz (siehe den ersten Beitrag des Threads):

aber es geht nicht mehr auf dem Marktplatz, weil jetzt überall min stoplevel = 0 ist,

Wladimir Gribatschow:

selbst wenn der Mindeststoppverlust = 0 ist, entspricht der Mindeststoppverlust dem Spread.

Das ist keine Tatsache. Es könnte 2 oder 3 Spreads geben. Vielleicht sind Sie solchen Situationen einfach noch nicht begegnet. Das heißt aber nicht, dass es sie nicht gibt. Wenn Sie nicht wissen, wovon ich spreche, können Sie versuchen, sie zu vermeiden.

 
Ihor Herasko:

Nicht auf dem MetaQuotes-Server, aber bei der Überprüfung auf dem Marktplatz (siehe den ersten Beitrag des Threads):

Das ist keine Tatsache. Es kann 2 oder 3 Streuungen geben. Vielleicht sind Sie solchen Situationen einfach noch nicht begegnet. Das heißt aber nicht, dass es sie nicht gibt. Die Situation bei dem von mir erwähnten Makler ist genau dieselbe.

i>Das ist der Punkt, die Festlegung eines harten Mindeststopps für 1-2-3-Spreads ist eine Ausrede.

Sie brauchen eine echte Lösung für das Problem der beweglichen Haltestellen.

Sie wissen nicht, was für eine Art von Schwebestopp sie haben, aber sie sagen dir nicht, wie du es machen sollst. Tut mir leid. Oder er will es mir einfach nicht sagen.

 

Ich denke, Sie sollten sich über die Frage im Klaren sein)). In der Zwischenzeit sind Sie verwirrt:

я не спрашивал что делать если сервер возвращает 0

und auf dem Postweg:

Ich wollte wissen, wie man den Marketplace-Fehler umgehen kann, wenn der Server 0 zurückgibt.

Grund der Beschwerde: