Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
3 Leute schauten zu =)) Renat kam und zeigte einfach mit dem Finger auf den Fehler =)))
Ich werde das natürlich sofort überprüfen, aber das ist wahrscheinlich das Problem... Ich habe "bid - TrailingStop * point" nicht normalisiert, und genau diese Konstruktion ist an der Auftragsänderung beteiligt...
Wir sind nicht aufmerksam, meine Herren ;)
Mehrere Personen haben Ihnen also diese Variante des Problems angeboten. Ich habe sogar geschrieben, dass ein Gebot 5 Dezimalstellen haben kann. Ich dachte zuerst, das sei nicht möglich, aber dann fiel mir ein, dass die Kurse von einem Automaten erstellt werden, der wahrscheinlich Kurse aus mehreren Dateneinspeisungen nimmt und sie mit Hilfe eines Algorithmus mittelt.
Bid/Ask haben eine eindeutige Standard-Symbolgenauigkeit. Außerdem kann es sein, dass statt 1,6666 1,6665999 angezeigt wird (aufgrund eines Gleitkommafehlers).
Ich möchte anmerken: Probleme beim Vergleich dieser Zahlen(Typ double) gibt es in _allen_ Sprachen und sind eine Folge der begrenzten Genauigkeit dieser Art von Arithmetik. Daher sollte man niemandem die Schuld geben, sondern sich des Problems bewusst sein und geschützten Code schreiben.
Bid/Ask sind eindeutig von standardmäßiger Zeichengenauigkeit. Außerdem kann es vorkommen, dass statt 1,6666 1,6665999 angezeigt wird (wegen der Besonderheiten des Gleitkommafehlers).
Ich möchte anmerken: Probleme beim Vergleich dieser Zahlen (Typ double) gibt es in _allen_ Sprachen und sind eine Folge der grundsätzlich begrenzten Genauigkeit dieser Art von Arithmetik. Dementsprechend sollten Sie niemandem die Schuld geben, sondern sich des Problems bewusst sein und sicheren Code schreiben.
Ich will also niemanden beschuldigen. Ich habe komposter nicht umsonst gefragt, bei welcher Währung das Trailing nicht richtig funktioniert hat. Ich erinnere mich sicher, dass in MT3 Sie 3 Dezimalstellen in Yen sehen können. Zumindest habe ich es mehr als einmal gesehen.
wir sind nicht aufmerksam, meine Herren ;)
die Normalisierung hat nicht geholfen =(
genauer - Nachlauffehler (Euro - Kaufposition):
03:41
12:07
12:11
14:31
14:33
14:36
14:39
14:44
14:46
14:47
14:48
(Serverzeit)
Renat, wie soll ich vorgehen?
Im Moment gibt es 3 Möglichkeiten:
1. if ( orderstoploss < ( bid - TrailingStop * point ) ) ersetzt durch if ( TrailingStop < ( bid -orderstoploss) / point )
2. Vergleichen Sie int, nicht double, mit Begun-Funktionen
3. Ändern Sie den Stop-Vorlauf ( nicht jeden Punkt, sondern nach n Spreads)
und natürlich deren Kombinationen.
Da die Software recht verantwortungsvoll ist, möchte ich gerne (! keine Garantie!) Empfehlungen zum Schreiben bekommen...
Versuchen Sie es stattdessen:
schreiben:
Wird es auch Fehler geben?
Es ist klar, dass man eine Gegenreaktion machen kann, aber es ist nicht ernst.... Und wenn ich eine 10-20 Pips Spielraum machen muss, "für die Zuverlässigkeit", ja, auf M30, nur ein Märchen =)
Bitte überprüfen Sie Ihren Code noch einmal, vereinfachen Sie ihn, fügen Sie Debug-Meldungen ein.
Um ehrlich zu sein, weiß ich nicht, wie ich es vereinfachen soll...
Aber Sie können es natürlich überprüfen. Hier ist der Code, wie er jetzt verwendet wird (in Teilen):
check incoming parameters and select required order. Wenn ein Fehler auftritt, werden wir einfach verlassen, d.h. der Auftrag wird nicht geändert...
Speichern Sie alle Auftragsdaten in Variablen und normalisieren Sie sie:
das ist die Farbe und "Schönheit" des Holzes...
jetzt für eine Long-Position ein neues SL-Level definieren, es normalisieren und mit dem alten vergleichen (nur wenn die Position profitabel ist)
in das Protokoll einfügen
ein dreifacher Versuch, die Bestellung nach einer 10-Sekunden-Pause zu ändern (die Bestellung wird jedes Mal hervorgehoben)
und nur wenn ordermodify <= 0 wird ein Fehlercode gesendet
wenn nach 3 Versuchen der Auftrag nicht geändert wurde, wird der Vorgang abgebrochen (-1)
dann das Gleiche für Verkaufspositionen
und schließlich, wenn keine Notwendigkeit besteht, die Haltestelle zu ändern, exit(0)
Ich weiß es nicht....
Was hat das mit der Sache zu tun? Mit "+Point" wird das Problem der Rundung der letzten signifikanten Stelle des Preises gelöst. Wir sprechen hier nicht von 2, 3 und erst recht nicht von 10-20 Pips.