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
Schreiben Sie dann an Service Desk und fügen Sie den Code bei.
Ja, es ist besser, dem Service Desk den Expertencode beizufügen.
Machen Sie sich keine Sorgen um den Code - wir löschen alles nach den Tests. Unsere wichtigste und einzige Aufgabe ist es , Fehler zu finden.
Eine andere Frage. Ich verwende die Funktion CopyTime. Anrufen:
gibt aus irgendeinem Grund nur ein Element mit dem Wert D'2011.08.01' zurück. Wo ist eigentlich D'2011.07.01'? Was ist der Trick?
P.S. Array[] ist ein dynamisches Array.
Eine andere Frage. Ich verwende die Funktion CopyTime. Anrufen:
gibt aus irgendeinem Grund nur ein Element mit dem Wert D'2011.08.01' zurück. Wo ist eigentlich D'2011.07.01'? Wo ist der Haken?
P.S. Das Array Array[] ist dynamisch.
Ja, aus irgendeinem Grund wird das erste Element übersprungen, schreiben Sie an servicedesk.
1 2011.08.01 00:00:00
0 2011.07.01 00:00:00
Eine andere Frage. Ich verwende die Funktion CopyTime.
Es gibt bereits eine ähnliche Anwendung.
Es herauszufinden.
Hier ist ein weiteres Rätsel. Ich kann mich nicht anstecken - ich weiß nicht, ob es mein Fehler ist oder der des Terminals.
Es gibt einen trivialen Code, der die Anzahl der vom Expert Advisor erteilten Aufträge zählt. Der Zähler wird in globalen Variablen gespeichert. Das sieht folgendermaßen aus:
Diese Zahl wird in Bestellkommentaren verwendet. Infolgedessen stelle ich gelegentlich fest, dass die nächste Auftragsnummer (um einige Einheiten) niedriger ist als die Anzahl der Positionen, die bereits auf dem Markt sind. Das Protokoll enthält keine Fehler.
Haben Sie eine Ahnung? Vielleicht ist jemand auf ein ähnliches "Verschwinden" der letzten Werte globaler Variablen gestoßen, z.B. weil sie beim Beenden des Terminals unter bestimmten Bedingungen nicht gespeichert werden (nun, vielleicht in einem Fall, in dem die Verbindung unterbrochen wird - nur eine Version)?
Hier ist ein weiteres Rätsel. Ich kann mich nicht anstecken - ich weiß nicht, ob es mein Fehler ist oder der des Terminals.
Versuchen Sie so etwas. Ich habe es nicht wirklich global gemacht. Aber es zählt richtig.
Versuchen Sie so etwas. Ich habe es nicht wirklich global gemacht. Aber es zählt richtig.
An die Entwickler:
Ist es beabsichtigt, dass die Schließung einer Order bis zu ihrer Verfallszeit in keiner Weise von OnTrade verfolgt wird?
PS: Der Zweck des Handlers für Handelsereignisse OnTrade ist nicht klar: Wenn ein Stop-Loss oder Take nicht abgefangen wird, wenn eine schwebende Order bis zu ihrer Verfallszeit geschlossen wird, wird sie nicht abgefangen. Wir müssen während des Algorithmuslaufs alles doppelt überprüfen. Dieser Ansatz führt zu Verwirrung, weil wir uns auf den Handler für Handelsereignisse verlassen, ihn aber doppelt überprüfen müssen. Umso mehr, dass wir nach einer doppelten Überprüfung Ereignisse abfangen, die nicht von OnTrade() behandelt werden. Warum ist das notwendig? Aber jetzt können wir Tetris spielen und allen möglichen Unsinn auf Karten zeichnen. Die Entwickler, bitte bringen Sie den Handelsteil der Plattform zu seinem logischen Abschluss.
Zu laufenden Aufträgen kann ich nichts sagen, da ich noch nicht mit ihnen gearbeitet habe.
Zum Beispiel gibt der OnTrade-Handler diese Zeilen in das Protokoll aus:
2011.08.08 09:03:05 ChTestExp (EURUSD,H1) Long-Position von EURAUD wird mit Stop-Loss geschlossen2011.08.08:09:03:05 ChTestExp (EURUSD,H1) -----------------Deal #5263582 [sl 1.37819]
2011.08.08 09:03:05 ChTestExp (EURUSD,H1) oldDealsTotal=558 newDealsTotal=559
Fügen Sie die Funktion Print(__FUNCTION__) in die Funktion OnTrade() ein. Und wenn Sie es in Ihrem Logbuch haben
Stop-Loss ausgelöst buy 0.10 AUDUSD 0.89783 sl: 0.89544 tp: 0.90024 [#15 sell 0.10 AUDUSD at 0.89544]
Geschäft #7 Verkauf 0.10 AUDUSD zu 0.89544 abgeschlossen (basierend auf Auftrag #15)
Geschäft durchgeführt [#7 Verkauf 0,10 AUDUSD bei 0,89544]
Auftrag ausgeführt Verkauf 0,10 zu 0,89544 [#15 Verkauf 0,10 AUDUSD zu 0,89544]
Können Sie überprüfen, ob OnTrade() funktioniert hat?
Bei mir funktioniert alles auch ohne Ihre Eingabe, denn alle Geschäfte, ihre Volumina, Gewinne werden berechnet, es wird alles summiert und in OnDeinite für jedes Symbol einzeln angezeigt. Da alle summierten Parameter (Anzahl der Trades, Gewinn) genau mit dem Bericht des Testers übereinstimmen, habe ich keinen Grund, an OnTrade() zu zweifeln.
Das Einzige, was nicht in OnTrade() verarbeitet wird, sind die Transaktionen der Positionsschließung am Ende des Tests (mit dem Kommentar 'end of test') und die Schließung durch einen Stop Out im Tester (Kommentar 'so ...'), im Testmodus müssen wir sie zusätzlich in OnDeinit verarbeiten. Auszug aus dem Protokoll des Testers:
2011.08.09 00:06:43 Kern 1 Protokolldatei "E:\Programme\MetaTrader 5\Tester\Agent-127.0.0.1-3000\logs\20110809.log" geschrieben2011.08.09 00:06:43 Core 1 EURUSD,H1: 888296 Ticks (275 Balken) generiert innerhalb von 13962 ms (Gesamtbalken in der Historie 6479, Gesamtzeit 16177 ms)
2011.08.09 00:06:43 Kern 1 Stopout bei 8% des Testintervalls aufgetreten
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Deinit Ende
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Alle Gewinn = -9072,04
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Geschäfte insgesamt: 17
.....
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 ----------------------------------------
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Gesamtgewinn EURGBP = -4738.97
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Gewinn für die Woche EURGBP = 319.68
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 GBPUSD Gesamtgewinn = -3775.86
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Gewinn für die Woche GBPUSD = -1798.83
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Gesamtgewinn EURUSD = -557.21
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Gewinn für die Woche EURUSD = 65.85
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Saldo=927,96 Eigenkapital=927,96 Gewinn=0,00 Margenniveau=0,00
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 ---------------Bericht-------------------
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Saldo=10000.00 Equite=927.96 Gewinn=0.00 MarginLevel=0.00
2011.08.09 00:06:43 2011.01.18 10:11:00 Kern 1 Fehler beim Öffnen: 1 Fehler beim Schließen: 0 Fehler beim Ändern: 0 Requotes: 1
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Laufzeit: 0 min. 14 sec.
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 ChTestExp Expert Advisor beendet Arbeit auf EURUSD Chart, H1 Periode
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Deinit-Ausführung
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 OnDeinit_UninitReason = Ein anderer Grund
2011.08.09 00:06:43 Kern 1 OnTestergebnis 0
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Auftrag Kauf 1,65 zu 1,59804 [#69 Kauf 1,65 GBPUSD zu 1,59804]
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Geschäft durchgeführt [#68 buy 1.65 GBPUSD at 1.59804]
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Geschäft #68 Kauf 1,65 GBPUSD zu 1,59804 erledigt (basierend auf Auftrag #69)
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Position geschlossen wegen Ende des Tests bei 1,59804 [sell 1,65 GBPUSD 1,57341182 tp: 1,57247]
2011.08.09 00:06:43 Kern 1 2011.01.18 10:11:00 Auftrag Kauf 0,45 zu 0,83931 [#68 Kauf 0,45 EURGBP zu 0,83931]
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Auftrag ausgeführt [#67 buy 0.45 EURGBP at 0.83931]
2011.08.09 00:06:43 2011.01.18 10:11:00 Geschäft #67 Kauf 0.45 EURGBP zu 0.83931 erledigt (basierend auf Auftrag #68)
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 position stop triggered at 29.09% [sell 0.45 EURGBP 0.83930333 tp: 0.80463]
2011.08.09 00:06:43 Kern 1 2011.01.17 14:39:39 Lange Position durch EURUSD zu schließen von stop-loss
2011.08.09 00:06:43 Kern 1 2011.01.17 14:39:39 -----------------Deal #66 sl 1.32900
2011.08.09 00:06:43 Kern 1 2011.01.17 14:39:39 oldDealsTotal=65 newDealsTotal=66
Aus dem Bericht des Testers:
Wie Sie sehen können, sind die unabhängig voneinander berechneten Gesamtwerte gleich, d. h. alles ist korrekt. Ich habe das Beispiel mit dem Stopp absichtlich herausgenommen.