[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 320
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
Zählen Sie entweder alle linken Klammern, dann alle rechten Klammern, dann vergleichen Sie die Mengen, oder kommentieren Sie die Funktionen einzeln, bis Sie den Fehler gefunden haben. Jeder hat einen anderen Geschmack und eine andere Farbe (Quellcode-Design).
Es gibt 4 öffnende Klammern und 4 schließende Klammern, alles klar. Aber wie die Kommentare helfen können, verstehe ich nicht ganz
Sie können zuerst benutzerdefinierte Funktionen auskommentieren, dann Schleifen, logische Konstrukte... Ich kann Ihnen versichern, dass Sie durch sequenzielles Abschneiden eine Übereinstimmung mit Ihrer Klammer finden werden. Oder vielleicht haben Sie auch vergessen, irgendwo ";" einzufügen...
Verwechseln Sie nicht IF mit FOR?
Entschuldigung, ich habe es nicht sofort bemerkt.
Vergleichen Sie es mit diesem Fragment. Das ist nur eine Variante.
Wer kann erklären, warum der 6. Auftrag nicht auf der Kerze geöffnet wurde und was zu tun ist, damit er geöffnet wird?
Protokoll.
2011.11.04 19:42:21 1999.11.04 20:00 RLB_FLAT GBPUSD,H4: open #7 sell stop 0.10 GBPUSD bei 1.62233 sl: 1.64443 tp: 1.57089 ok
2011.11.04 19:42:21 1999.11.04 20:00 Tester: #6 wegen Ablauf gelöscht
2011.11.04 19:42:10 1999.11.04 12:00 RLB_FLAT GBPUSD,H4: open #6 sell stop 0.10 GBPUSD bei 1.63373 sl: 1.64570 tp: 1.62652 ok
2011.11.04 19:42:09 1999.11.04 08:00 Tester: #5 gelöscht wegen Verfall
2011.11.04 19:42:06 1999.11.04 00:00 RLB_FLAT GBPUSD,H4: open #5 sell stop 0.10 GBPUSD bei 1.63622 sl: 1.64702 tp: 1.63411 ok
2011.11.04 19:42:00 1999.11.02 04:00 Tester: #4 wegen Ablauf gelöscht
2011.11.04 19:41:53 1999.11.01 20:00 RLB_FLAT GBPUSD,H4: open #4 sell stop 0.10 GBPUSD bei 1.63365 sl: 1.64917 tp: 1.61097 ok
Der vierte, fünfte und sechste ausstehende Auftrag wurde wegen Ablaufs gelöscht.
Erhöhen Sie ihre Lebensdauer oder setzen Sie 0 (Null), siehe. BestellungÄndern()
Die vierte, fünfte und sechste Stundung wurden aufgrund ihres Ablaufdatums gestrichen.
Erhöhen Sie das Verfallsdatum oder setzen Sie es auf 0 (Null), siehe OrderModify(). BestellungÄndern()
Was mich verwirrt, ist, dass es vor dem Ablauf der 6. Order (die um 20:00 Uhr ablief) um 16:00 Uhr eine Kerze nach unten gab. Dies ist auf dem Bild zu sehen.
1. Die Funktion findet den Auftrag mit dem höchsten Ticker in der Historie, d.h. den zuletzt geschlossenen Auftrag (es sei denn, es liegt ein Ausnahmefall vor, für den Ihre Option mit der maximalen Schlusszeit vorzuziehen ist).
2. Gemäß den Bedingungen wird die erste Order mit dem angegebenen TP/SL geöffnet und nur die zweite Order kann mit dem neuen TP/SL geöffnet werden, was bedeutet, dass die Funktion nur dann Null zurückgeben kann, wenn der erste Handel Null war, aber nicht, wenn es keine geschlossenen Orders in der Historie gibt.
Eine letzte Sache. In Ihrer Variante ist die Verwendung von j und einem weiteren SELECT in der Funktion redundant.
Es ist genug:
1. Sie können sich zu 100 % auf Ihren Makler (oder den Makler des Kunden) verlassen, was die Nummerierung der Tickets angeht? Die Zeit ist immer noch ein stabiler Wert - hier kann er die Zeit nur manuell ändern, indem er den Verlauf anpasst. IMHO ist es besser, die Zeit zu nutzen.
2. Wenn der Kunde die Logik ändern muss, muss Ihre Funktion möglicherweise neu geschrieben werden.
3. Schlagen Sie vor
innerhalb einer Schleife zu verwenden? Und wozu? Sie können ihn nur einmal für die letzte bereits gefundene Bestellung verwenden.
А... Ihr Kunde wird nicht testen und optimieren. Ich verstehe...
GlobalVariableSetOnCondition() - können Sie bitte im Klartext erklären, was diese Funktion bewirkt? Die Beschreibung in der Hilfe ist sehr verwirrend, ich kann einige Punkte nicht verstehen?
Setzt einen neuen Wert der bestehenden globalen Variablen, wenn der aktuelle Wert der Variablen gleich dem Wert des dritten Parameters check_value ist. Wenn die Variable nicht existiert, erzeugt die Funktion einen Fehler ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) und gibt FALSE zurück. Die Funktion gibt bei erfolgreicher Ausführung TRUE zurück, andernfalls FALSE. Um die Fehlerinformationen zu erhalten, muss die Funktion GetLastError() aufgerufen werden. Wenn sich der aktuelle Wert der globalen Variablen von check_value unterscheidet, gibt die Funktion FALSE zurück.
Diese Funktion ermöglicht einen atomaren Zugriff auf die globale Variable, so dass sie zur Erstellung einer Semaphore für die gleichzeitige Kommunikation zwischen mehreren Expert Advisors auf demselben Client-Terminal verwendet werden kann.
GlobalVariableSetOnCondition() - können Sie bitte im Klartext erklären, was diese Funktion bewirkt? Die Beschreibung in der Hilfe ist sehr verwirrend, ich kann einige Punkte nicht verstehen?
Setzt einen neuen Wert für eine bestehende globale Variable, wenn der aktuelle Wert der Variable gleich dem dritten Parameter von check_value ist. Wenn die Variable nicht existiert, erzeugt die Funktion einen Fehler ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) und gibt FALSE zurück. Die Funktion gibt bei erfolgreicher Ausführung TRUE zurück, andernfalls FALSE. Um die Fehlerinformationen zu erhalten, muss die Funktion GetLastError() aufgerufen werden. Wenn sich der aktuelle Wert der globalen Variablen von check_value unterscheidet, gibt die Funktion FALSE zurück.
Diese Funktion ermöglicht einen atomaren Zugriff auf die globale Variable, so dass sie zur Erstellung einer Semaphore für die gleichzeitige Kommunikation zwischen mehreren Expert Advisors auf demselben Client-Terminal verwendet werden kann.
Angenommen, Sie haben eine globale Variable GL_Var.
Sie hat derzeit einen Wert von 1,0.
Sie müssen prüfen, ob diese Variable den Wert 1,0 hat, und wenn ja, diese Variable auf 2,0 setzen
Das wird so sein:
Um die Rückgabewerte dieser Funktion zu behandeln, können Sie sie über if aufrufen
Bevor Sie diese Funktion aufrufen, können Sie prüfen, ob die globale Variable GL_Var existiert, um den Fehler ERR_GLOBAL_VARIABLE_NOT_FOUND zu vermeiden
Bitte helfen Sie mir, ein kleines geometrisches Problem zu lösen. Es gibt eine Linie mit den Koordinaten p1 und p2 (in der Abbildung rot dargestellt). Ich muss die Koordinate von p3 finden, die 38,2 % der Koordinate von p2 ist. Ich habe Folgendes getan:
if(p2>p1) p3=p2-(p2-p1)*0,382; wahr für den oberen Teil der Abbildung
if(p1>p2) p3= p2+(p1-p2)*0,382; gilt für den unteren Teil der Abbildung
Gibt es eine Möglichkeit, dies in einer Gleichung ohne "wenn" aufzuschreiben?
Dann schreiben Sie es doch so.
p3=p2-(p2-p1)*0,382
Nun, schreiben Sie es so.
p3=p2-(p2-p1)*0,382
Und tatsächlich! Ich danke Ihnen für Ihre Hilfe.