[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 262
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
Meine Herren, können Sie mir sagen, wo ich einen Fehler gemacht habe, als ich diese Timing-Funktion in meinen EA-Code eingefügt habe?
Der Compiler hat mich mit Fehlern überschüttet.
An der Stelle, an der Sie eine Funktion innerhalb einer anderen Funktion deklariert haben:
Siehe den 10. Parameter der angegebenen Funktion. Auf 0 gesetzt.
OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue);
diese Zeile gefunden und was ist dort zu ändern?
Die Anwendung ist einfach - ich lasse das Skript laufen...
Beispiele für ähnliche Funktionen finden Sie hier: Nützliche Funktionen von KimIV.
Wenn sie nicht von der Stange passen, können Sie sie in Analogie zu den vorhandenen selbst bauen.
Hier basiert die Berechnung auf der Preisträgheit. D.h. der Stop-Loss der ersten Order wird ausgelöst, die zweite Order ist im Gewinn mit einem Wert, der etwas unter dem Verlust liegt. Wenn sich der Kurs noch weiter in die gleiche Richtung bewegt, dann können wir den Gesamtgewinn erreichen.
Aber imho ist diese Strategie keinen Bissen wert.
Das ist genau das, was wir beweisen müssen. Mit anderen Worten: Sie brauchen einen Code, der die notwendige Reihenfolge findet. Es gibt Dutzende solcher Situationen, und wir können nicht für jede von ihnen eine spezielle Funktion bereitstellen, um den Code zu vereinfachen. Sie muss für jeden Fall geschrieben werden.
Beispiele für ähnliche Funktionen finden Sie hier: Nützliche Funktionen von KimIV.
Wenn sie nicht von der Stange passen, können Sie sie in Analogie zu den vorhandenen selbst bauen.
Ich glaube, ich habe mich nicht ganz klar ausgedrückt.
Behauptung 1: Jeder Code, der nach dem Auslösen einer schwebenden Order auf das Eröffnungsdatum dieser Order zugreift (die zum Zeitpunkt des Auslösens marktfähig geworden ist), erhält das Eröffnungsdatum, das dem Datum der Platzierung der schwebenden Order entspricht - so funktioniert die Funktion OrderOpenTime().
Behauptung 2: Ohne einen Expert Advisor, der den Status der Aufträge auf dem Konto ständig überwacht, können Sie sich nicht an den genauen Zeitpunkt der Auslösung eines schwebenden Auftrags erinnern.
Mögliche Lösung 1. Wir können versuchen, vom Datum der Einstellung des schwebenden Auftrags bis zum aktuellen Datum zu laufen und den Zeitpunkt der ersten Kreuzung des Eröffnungskurses und der Auslöseschwelle zu notieren.
Dies wird mehr oder weniger genau die Zeit sein, aber es gibt ein großes Minus: die Spanne. Da wir den Spread nicht in der Historie aufzeichnen (ich nehme zum Beispiel nicht die Tick-Historie mit dem Spread aus Dukas, da ich nicht mit Dukas handele und wir ihn sammeln und aufzeichnen müssen), kann der Auftrag viel früher ausgelöst worden sein, als der Preis fast das offene Niveau berührte, es aber nicht überschritt, und der Auftrag wurde aufgrund der Spread-Ausweitung geöffnet, und nicht später, als wir tatsächlich sahen, dass der Preis die Linie für die Einstellung der ausstehenden Aufträge überschritt.
Die wahrscheinlichste Lösung besteht darin, einen Expert Advisor zu erstellen, ihn auf dem Chart zu platzieren und die Aufträge auf dem Konto zu überwachen. Ich möchte es nicht tun, denn es gibt auch Nachteile, die mit möglichen Problemen bei Pausen im EA-Betrieb verbunden sind.
Die Funktionen, auf die Sie hingewiesen haben. Sie haben einen Link auf die Funktion OrderOpenTime() angegeben. Bei den verzögerten Aufträgen ist es das Datum ihrer Erstellung und nicht das Datum ihrer Auslösung. Daher sind die bestehenden Funktionen nicht geeignet. Und es gibt keine Möglichkeit, sie zu kombinieren, da sie sich immer noch auf OrderOpenTime() für das Datum der Auftragseröffnung beziehen.
OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue);
diese Zeile gefunden und was soll dort geändert werden?
OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue);
diese Zeile gefunden und was soll dort geändert werden?
Hier ist die ganze Zeile
Hier ist die ganze Zeile
Nochmals:
Dokumentation:
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
Der zehnte Parameter in der Zeichenfolge "Newest" ist keine Zahl. Aus diesem Grund gibt es einen Fehler
PapaYozh:
Sie haben eine Funktion innerhalb einer anderen Funktion deklariert:
Am Ende zeigte mir der Compiler diese Fehler an, und ich denke, er bezieht sich auf die falsche Variablendefinition?Danke für dein Feedback, lieber PapaYozh,aber ich habe diese Funktion in int start() eingefügt, aber das Ergebnis des Compilers ändert sich trotzdem nicht.
Ich entschuldige mich für etwaige Unannehmlichkeiten, Unverständnis, nachdem alle, gerade erst anfangen, Erfahrungen in einem solchen nicht einfach zu gewinnen, und ich denke, dank dieses Forums und die Menschen, die hier geantwortet, weiter zu entwickeln und ihre Fähigkeiten zu verbessern, danke.