Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 749

 
Vinin:

Diese Formel lässt sich ganz einfach an die jeweiligen Anforderungen anpassen. Sie müssen nur das Mindestlos berücksichtigen

Das sieht ein wenig anders aus

lot=Min_Lot+lotstep*MathRound((AccountBalance()-X)*0.001/lotstep);

Dabei ist X - Saldo für die Eröffnung der Mindestpartie,

Wir müssen aber noch die Mindestmenge prüfen.

Wozu brauchen wir all diese Komplexitäten, X, die separat berechnet werden müssen? Außerdem brauchen wir zusätzliche Kontrollen...

Wäre es nicht einfacher, die Gültigkeit und Akzeptanz aller Werte der Formel direkt und ehrlich zu überprüfen und sie dann einfach ehrlich zu berechnen?

Übrigens rundet MathRound() auf die nächste ganze Zahl, d.h. es kann leicht zu einer falschen Überschätzung kommen, was zusätzliche Folgen haben kann.

 

Armer kleiner Kerl.

 
simpleton:
Sie nicht.
 
Hallo. Ich versuche, den StopLoss aus dem Tiefst- und Höchststand des ersten Balkens zu berechnen, nachdem ich eine schwebende Order für den Kauf bzw. Verkauf erteilt habe. Aber ich habe kein Ergebnis, nur 130 Fehler, das ist alles. Vielen Dank im Voraus.
if(ticket>0)
           {
            SL = NormalizeDouble(Low[1] - StopLoss*Point, Digits);
            {
               if(OrderModify(ticket, OrderOpenPrice(), SL, 0, 0))
...
//+-------------------------------------------------------------------------+
if(ticket>0)
           {
SL = NormalizeDouble(High[1] + StopLoss*Point, Digits);
            {
               if(OrderModify(ticket, OrderOpenPrice(), SL, 0, 0))
...                     																							
 
Du normalisierst das Falsche.
 
Petiyashaket:
Wenn Sie es in einer Codezeile und mit Kommentaren erklären können, wie in meinem vorherigen Code, wäre ich Ihnen sehr dankbar.

"Ich habe Zweifel", und ich kann mich des Eindrucks nicht erwehren, dass es sich um den Caching-Mechanismus des Marktumfelds handelt.

Damit das Terminal nicht für jede Funktion wie OrdersTotal(), OrderSymbol() usw. zum Server laufen muss, wird die Marktumgebung in einen Cache kopiert, der für jedes Skript anders zu sein scheint, aber das Skript arbeitet nur mit diesem Cache. Der Cache wird während der gesamten Laufzeit der Hauptfunktion des Skripts NICHT automatisch aktualisiert, auch nicht nach erfolgreicher Ausführung von Funktionen wie OrderSend(), die die Marktumgebung auf dem Server verändern, weshalb eine Order, die innerhalb des Skripts erscheint, "nicht sichtbar" ist, d.h. sie täuscht ihre Abwesenheit vor. Sie kann in der for-Schleife einfach nicht erkannt werden, weshalb OrderModify() nicht aufgerufen wird. Dies ist eine Hypothese, die auf der Grundlage vager Zweifel und unverständlicher Gefühle entstanden ist.

Der beschriebene Cache kann mit dem Aufruf RefreshRates() zwangsweise aktualisiert werden, zum Beispiel unmittelbar nach dem Aufruf von OrderSend(). Prüfen Sie, ob die Hypothese richtig ist.

Wenn u.a. RefreshRates() den Wert true liefert, ist dies eine zusätzliche indirekte Bestätigung der Hypothese.

 
Petiyashaket:
Wenn Sie es mir in einer Codezeile und mit Kommentaren erklären, wie in meinem vorherigen Code, wäre ich Ihnen sehr dankbar.
Wenn Sie ihn nicht verstehen, lesen Sie ihn hier. Und hier. Sorgen Sie dann dafür, dass die Variablen nicht bei jedem Ticken ihre Bedeutung verlieren, und organisieren Sie die Schleife auf eine angemessene Weise.
 
simpleton:

"Ich habe Zweifel", und ich kann mich des Eindrucks nicht erwehren, dass es sich dabei um den Caching-Mechanismus des Marktumfelds handelt.

Damit das Terminal nicht für jede Funktion wie OrdersTotal(), OrderSymbol() usw. zum Server laufen muss, wird die Marktumgebung in einen Cache kopiert, der für jedes Skript anders zu sein scheint, aber das Skript arbeitet nur mit diesem Cache. Der Cache wird während der gesamten Laufzeit der Hauptfunktion des Skripts NICHT automatisch aktualisiert, auch nicht nach erfolgreicher Ausführung von Funktionen wie OrderSend(), die die Marktumgebung auf dem Server verändern, daher ist die im Skript erscheinende Order "nicht sichtbar", d.h. sie täuscht ihre Abwesenheit vor. Sie kann in der for-Schleife einfach nicht erkannt werden, weshalb OrderModify() nicht aufgerufen wird. Dies ist die Hypothese, die aus vagen Zweifeln und wenig überzeugenden Gefühlen entstanden ist.

Der beschriebene Cache kann mit dem Aufruf RefreshRates() zwangsweise aktualisiert werden, zum Beispiel unmittelbar nach dem Aufruf OrderSend(). Prüfen Sie, ob die Hypothese richtig ist.

Wenn u.a. RefreshRates() den Wert true liefert, ist dies eine zusätzliche indirekte Bestätigung der Hypothese.

Nimmst du Drogen?
 
noob1:
Hallo. Bitte beraten Sie mich, wenn ich weiß, dass ich versuche, einen StopLoss vom Tiefst- und Höchststand des ersten Balkens zu berechnen, nachdem eine schwebende Order für den Kauf bzw. Verkauf platziert wurde. Aber ich habe nichts bekommen, nur 130 Fehler und sonst nichts. Ich danke Ihnen im Voraus.

Prüfen Sie, ob OrderOpenPrice() zu nahe am SL liegt und ob die Stops "auf der richtigen Seite des Preises" liegen. Sie können es hier nachlesen:

StopLoss- und TakeProfit-Kurse dürfen nicht zu nahe am Markt liegen. Der minimale Stop-Abstand in Pips kann mit der Funktion MarketInfo() mit dem Parameter MODE_STOPLEVEL ermittelt werden. Der Fehler 130 (ERR_INVALID_STOPS) wird generiert, wenn die Haltestellen falsch oder nicht normalisiert sind.

In diesem Fall, d.h. bei einem schwebenden Auftrag, ist der "Markt" der "schwebende offene Preis".

 
tara:
Sie normalisieren das Falsche.
Aus der Dokumentation: