Meine Unzufriedenheit mit dem Strategietester. mit den MQL-Entwicklern - Seite 2

 
Alexey Volchanskiy:

Renat, ich möchte die Gelegenheit nutzen und Sie fragen, da Sie ja hier sind. Wird es im neuen Gebäude Dienstleistungen geben, oder ist das vorerst verschoben?

Später.

In der Zwischenzeit können Sie Datafeeds für synthetische Instrumente ohne diese schreiben.

 
Renat Fatkhullin:

Später.

In der Zwischenzeit kann ich Datafeeds für synthetische Werkzeuge ohne sie schreiben.


Ich möchte Multithreading, ich hatte gehofft, dass es irgendwie mit Dienstleistungen getan werden könnte. Ich persönlich brauche noch keine Datafeeds.

 

Ich wünsche Ihnen allen einen guten Tag.

Nein, dieser Beitrag ist kein Blödsinn, wie jemand anderes schrieb.

Ich bin voll im Dienst.

Ich verstehe, was Programmierer schreiben und sagen, dass es funktioniert, aber es tut mir leid.

Wenn wir alle beim Broker mit fehlerhaften Daten arbeiten, komme ich sofort auf die Idee, dass meine Ergebnisse nicht fehlerhaft sind.

Die Sache ist die, dass ich ironischerweise an der Universität studiert habe, um Statistikingenieur zu werden.

Also für mich fehlerhafte Daten ist in der Regel falsche Daten entsprechend zu sagen, 99%, dass das, was ich sehe, funktioniert ich als ein Mann der Statistik sagen, ich weiß nicht, das gleiche sagen Sie und alle, die diesen Beitrag lesen.

Die Lösung ist das, was ich oben geschrieben habe.

Das Sammeln von Zecken kann jeder mit einem einfachen Roboter/Algorithmus erledigen.

Tatsache ist, dass wir weder in 5 noch in 4 MQL die Marktdaten haben, die zum Testen von Strategien verwendet werden sollten.

Für langfristige Strategien ist ein Roboter meiner Meinung nach nicht erforderlich.

Für mich ist es Zecke für Zecke und ich habe interessante Ideen für die Untersuchung von asc und bid by tick.

Entschuldigung für die lange Antwort und die lange Zeit, ich war sehr beschäftigt.

Mit freundlichen Grüßen Ivan S.

 
Alexey Volchanskiy:

Ich habe einmal geschrieben, ich werde es finden.

Für fünfhttps://www.mql5.com/ru/code/18046

Für vierhttps://www.mql5.com/ru/code/18047

Für eine Sechs,https://www.mql5.com/ru/code/.


Du würdest dich wundern, aber es ist dasselbe für 5 und 4.

Ich kann für 4 und 5 gleichzeitig sprechen!


Ich habe nicht den gesamten Code Ihres Algorithmus gelesen, aber im Grunde ist dieser Teil des Codes zum Speichern, aber jetzt muss ich dieses Ask reproduzieren und den Strategy Tester es ausgeben lassen.

Wenn es Programmierer gibt, die das können, höre ich sehr aufmerksam zu!

 
Renat Fatkhullin:
Wenn ich mich nicht irre, in mt5 der Tester ist auf reale Ticks, wo bid/ask real ist?

Renat hat sich vergewissert, dass mql5 auf die gleiche Weise funktioniert wie mql 4.

 
Ivan Stepanenko:

Renat hat sich vergewissert, dass mql5 auf die gleiche Weise funktioniert wie mql4.


das Problem wurde schon vor langer Zeit gelöst.

1. Die Frage ist bereits geklärt: Für MQL5 gibt es seit etwa einem Jahr Tests mit echten Ticks. Hätten Sie nur das Terminal studiert...

2. Für MQL4 können Sie Ihre eigenen Tick-.fxt-Dateien verwenden. Der einfachste Weg ist die Verwendung von TickStory Lite, das echte Ticks von Ducas herunterlädt.

 
Ivan Stepanenko:

renat hat überprüft, dass mql5 auf die gleiche Art und Weise funktioniert und einen festen Spread festlegt. wie in 4 mql.


eine Lüge

Wir nehmen meinen Expert Advisor für Ticks, der SaveTicks speichert, den Link zur CodeBase, den ich oben angegeben habe, und führen ihn im Tester im Modus"Jeder Tick basiert auf echten Ticks" aus. Schauen wir mal, was in der Ausgabedatei steht, in meinem Fall \Tester\Agent-127.0.0.1-3000\MQL5\Files\EURUSD_SaveTicks.csv

2017.11.28 09:11:16,1.1895,1.18952

2017.11.28 09:11:16,1.1895,1.18952

Verbreitung 2

2017.11.28 09:11:26,1.18947,1.18951

2017.11.28 09:11:26,1.18947,1.18951

Verbreitung 4
 

Schauen Sie sich den Zeichenbrowser an, und es gibt Häkchen für alle Zeichen.

Dies sind die tatsächlichen Zecken, die im Prüfgerät verwendet werden.

 
Ivan Stepanenko:

Ich wünsche Ihnen allen einen guten Tag.

Nein, dieser Beitrag ist kein Blödsinn, wie jemand anderes schrieb.

Ich bin voll im Dienst.

Ich verstehe, was Programmierer schreiben und sagen, dass es funktioniert, aber es tut mir leid.

Wenn wir alle beim Broker mit fehlerhaften Daten arbeiten, komme ich sofort auf die Idee, dass meine Ergebnisse nicht fehlerhaft sind.

Die Sache ist die, dass ich ironischerweise an der Universität studiert habe, um Statistikingenieur zu werden.

Also für mich fehlerhafte Daten ist in der Regel falsche Daten entsprechend zu sagen, 99%, dass das, was ich sehe, funktioniert ich als ein Mann der Statistik sagen, ich weiß nicht, das gleiche sagen Sie und alle, die diesen Beitrag lesen.

Die Lösung ist das, was ich oben geschrieben habe.

Das Sammeln von Zecken kann jeder mit einem einfachen Roboter/Algorithmus erledigen.

Tatsache ist, dass wir weder in 5 noch in 4 MQL die Marktdaten haben, die zum Testen von Strategien verwendet werden sollten.

Für langfristige Strategien ist ein Roboter meiner Meinung nach nicht erforderlich.

Für mich ist es Zecke für Zecke und ich habe interessante Ideen für die Untersuchung von asc und bid by tick.

Entschuldigung für die lange Antwort und die lange Zeit, ich war sehr beschäftigt.

Mit freundlichen Grüßen Ivan S.

Was ist mit Ihrer Grammatik? //Ich sage nur...

Wenn alles so ernst ist, lautet die Lösung für Ihre Frage wie folgt:

Sammeln Sie Statistiken, zitieren Geschichte und Arbeit, hat Alexey Volchansky bereits alles für Sie gefunden und gab Links oben.

Auf der Ask - Sie können den Verlauf mit Ask und Bids von DucasCopy herunterladen (googeln Sie es).

Viel Glück!
 

Hier sind einige interessante Artikel:


Darüber hinaus gibt es in der gestrigen Beta-Version von MetaTrader 5, auf die Sie von MetaQuotes-Demo upgraden können, ein vollwertiges Formelsystem für die Erstellung von benutzerdefinierten Symbolen.

Sie können nun synthetische Finanzinstrumente erstellen - Instrumente, die auf einem oder mehreren bestehenden Instrumenten basieren. Sie müssen lediglich die Formel für die Berechnung der Kurse angeben, und die Plattform generiert die Ticks des synthetischen Instruments im Echtzeitmodus und erstellt dessen Minutenverlauf.

Wie es funktioniert

  • Sie erstellen ein synthetisches Symbol und legen eine Formel für dieses Symbol fest.
  • Die Plattform berechnet ihre Ticks 10 Mal pro Sekunde (und nur dann, wenn sich der Preis mindestens eines der in der Formel enthaltenen Instrumente geändert hat).
  • Die Plattform berechnet den Verlauf der Minutenbalken (für die letzten zwei Monate) auf der Grundlage der Minutenbalken der in der Formel enthaltenen Instrumente. Alle neuen Balken (aktuelle und nachfolgende) werden in Echtzeit auf der Grundlage der generierten Ticks des synthetischen Instruments erstellt.
Sie können zum Beispiel ein Tool erstellen, das den Dollar-Index (USDX) anzeigt. Die Formel sieht wie folgt aus:
50.14348112 * pow(ask(EURUSD),-0.576) * pow(USDJPY,0.136) * pow(ask(GBPUSD),-0.119) * pow(USDCAD,0.091) * pow(USDSEK,0.042) * pow(USDCHF,0.036)
Hinweis: Die ursprüngliche Dollar-Index-Formel verwendet die Paare USDEUR und USDGBP. Da die Plattform nur über inverse Währungspaare verfügt, verwendet die Formel des synthetischen Tools für diese einen negativen Grad und den Ask-Kurs anstelle des Bid-Kurses.

Die Plattform berechnet den Preis des neuen Instruments in Echtzeit auf der Grundlage der Kurse der sechs anderen Instrumente, die von Ihrem Broker bereitgestellt werden. In der Marktbeobachtung und im Chart können Sie sehen, wie sich der Kurs verändert:



Erstellen Sie ein neues benutzerdefiniertes Instrument, öffnen Sie seine Spezifikation und geben Sie die Formel an:




Zur Vereinfachung zeigt der Formeleditor bei der Eingabe von Instrumenten- und Funktionsnamen eine Liste der möglichen Optionen an.

Die Berechnung der Ticks und Minutenbalken des synthetischen Instruments beginnt, sobald es zu "Market Watch" hinzugefügt wird. Alle Symbole, die für die Berechnung erforderlich sind, werden automatisch und sofort in den "Market Watch" aufgenommen. Der Beginn der Berechnung wird in das Protokoll der Plattform aufgenommen: Synthetisches Symbol USDX: Verarbeitung gestartet.
  • Die Berechnung des synthetischen Instruments wird gestoppt, wenn es von Market Watch ausgeblendet wird.
  • Symbole, die derzeit zur Berechnung synthetischer Instrumente verwendet werden, können nicht aus dem Market Watch ausgeblendet werden.

Berechnung von Kursen in Echtzeit
Alle 100 ms (zehnmal pro Sekunde) wird überprüft, ob sich der Preis mindestens eines der in der Formel enthaltenen Instrumente verändert hat. Ist dies der Fall, wird der Preis des synthetischen Instruments berechnet und ein Tick erzeugt. Die Berechnung erfolgt parallel in drei Streams für Bid-, Ask- und Last-Kurse. Wenn zum Beispiel EURUSD*GBPUSD in der Formel angegeben ist, wird der Preis des synthetischen Instruments wie folgt berechnet:

  • Bid - Bid(EURUSD)*Bid(GBPUSD)
  • Ask - ask(EURUSD)*ask(GBPUSD)
  • Letzte - letzte(EURUSD)*letzte(GBPUSD)

Das Vorhandensein von Änderungen wird für jeden Preis einzeln geprüft. Wenn sich zum Beispiel bei der nächsten Berechnung nur der Geldkurs des Ausgangsinstruments geändert hat, wird für den Tick des synthetischen Instruments nur der Kurs berechnet, bei dem sich Änderungen ergeben haben.

Aufbau der Geschichte der Minutenbarren
Die Plattform sammelt nicht nur Ticks in Echtzeit, sondern erstellt auch einen Minutenverlauf eines synthetischen Instruments. So kann ein Händler die Charts wie ein normales Instrument betrachten und mit Hilfe von Objekten und Indikatoren technische Analysen durchführen.

Sobald der Händler ein synthetisches Instrument zur Market Watch hinzufügt, prüft die Plattform, ob für dieses Instrument ein Minutenverlauf berechnet wurde. Wenn nicht, wird sie für die letzten 60 Tage erstellt, was etwa 50.000 Balken entspricht. Wenn die maximalen Balken im Fenster in den Plattformeinstellungen einen niedrigeren Wert haben, wird dieser Grenzwert verwendet.

Wenn einige der Balken in diesem Zeitraum bereits gebaut sind, wird die Plattform neue Balken erstellen. Eine tiefere Historie wird nur erstellt, wenn Sie versuchen, den entsprechenden Zeitrahmen auf dem Chart zu betrachten (wenn Sie zurückblättern oder die Historie vom MQL5-Programm anfordern).

Der Verlauf der Minutenbalken eines synthetischen Instruments wird auf der Grundlage der Minutenbalken (nicht der Ticks) der in seiner Formel enthaltenen Instrumente berechnet. Um beispielsweise den Preis des offenen Minutenbarrens eines synthetischen Instruments zu berechnen, verwendet die Plattform die Preise der offenen Instrumente, die in ihrer Formel enthalten sind. Die Preise von High, Low und Close werden auf die gleiche Weise berechnet.

Wenn Sie keinen Minutenbalken in der Formel für ein Symbol haben, berechnet die Plattform den Schlusskurs des vorherigen Balkens. Sie können zum Beispiel drei Symbole verwenden: EURUSD, USDJPY und GBPUSD. Wenn der USDJPY keinen Minutenbalken hat, der 12:00 Uhr entspricht, werden die folgenden Kurse für die Berechnung verwendet:

  • Für Open - EURUSD Open 12:00, USDJPY Close 11:59, GBPUSD Open 12:00
  • Für Hoch - EURUSD Hoch 12:00, USDJPY Schluss 11:59, GBPUSD Hoch 12:00
  • Für Tief - EURUSD Tief 12:00, USDJPY Schluss 11:59, GBPUSD Tief 12:00
  • Für Close - EURUSD Close 12:00, USDJPY Close 11:59, GBPUSD Close 12:00

Wenn nicht alle Symbole in der Formel einen Minutenbalken haben, wird der entsprechende synthetische Minutenbalken nicht berechnet.

Bau von neuen Minibars
Alle neuen Balken (aktueller und nächster) im synthetischen Tool werden auf der Grundlage der erzeugten Ticks erstellt. Der Preis, zu dem die Stäbe gebaut werden, hängt von dem Parameter "Chart construction" in der Spezifikation ab:





Welche Operationen können in der Werkzeugformel verwendet werden?
Sie können in Ihrer Formel sowohl Kursdaten als auch einige Eigenschaften der verfügbaren Symbole (die von Ihrem Broker bereitgestellt werden) verwenden. Geben Sie dazu an:

  • Symbolname - je nach synthetischem Symbolpreis verwendet die Formel den Geld-, Brief- oder letzten Preis des angegebenen Symbols. Wenn Sie zum Beispiel EURUSD*GBPUSD angeben, wird der Geldkurs als Bid(EURUSD)*Bid(GBPUSD) und der Briefkurs als Ask(EURUSD)*ask(GBPUSD) berechnet.
  • Bid(Symbolname) - um den Geldkurs eines synthetischen Symbols zu berechnen, wird zwangsweise der Geldkurs des angegebenen Symbols verwendet. Eigentlich entspricht diese Variante der vorherigen (ohne Angabe eines Preistyps).
  • Ask(Symbolname) - der Ask-Kurs des angegebenen Symbols wird zwangsweise für die Berechnung des Bid-Kurses des synthetischen Instruments verwendet. Für die Berechnung des Ask-Kurses wird hingegen der Bid-Kurs des angegebenen Symbols verwendet. Für die Berechnung des letzten Preises wird der letzte Preis des angegebenen Symbols verwendet. Wenn Sie zum Beispiel Ask(EURUSD)*GBPUSD angeben, sieht die Berechnung wie folgt aus:
    • Bid = ask(EURUSD)*bid(GBPUSD)
    • Ask = Bid(EURUSD)*ask(GBPUSD)
    • Letzte = letzte(EURUSD)*letzte(GBPUSD)
  • last(Symbolname) - der letzte Preis des angegebenen Symbols wird zur Berechnung aller synthetischen Symbolpreise (Bid, Ask und Last) verwendet. Wenn Sie z. B. last(EURUSD)*GBPUSD angeben, wird die Berechnung wie folgt aussehen:
    • Bid = last(EURUSD)*bid(GBPUSD)
    • Ask = last(EURUSD)*ask(GBPUSD)
    • Letzte = letzte(EURUSD)*letzte(GBPUSD)
  • volume(Symbol name) - die Formel verwendet das Volumen des Ticks für das angegebene Symbol. Bitte vergewissern Sie sich, dass die Mengenangaben für das angegebene Gerät übersetzt sind.
  • point(symbol name) - die Größe der minimalen Preisänderung eines bestimmten Instruments wird in der Formel verwendet.
  • Ziffern(Symbolname) - die Anzahl der Dezimalstellen im Preis des angegebenen Symbols wird in der Formel ersetzt.

Wenn ein Symbol einen komplexen Namen hat (mit Bindestrichen, Punkten usw.), muss es in Anführungszeichen gesetzt werden. Zum Beispiel: "RTS-6.17".
In der Formel können arithmetische Operationen verwendet werden: Addition (+), Subtraktion (-), Multiplikation (*), Division (/) und Rest der Division (%). Zum Beispiel bedeutet EURUSD+GBPUSD, dass der Preis als Summe von EURUSD und GBPUSD berechnet wird. Sie können auch ein unäres Minus in der Formel verwenden, um das Vorzeichen zu ändern, z. B: -10*EURUSD.

Es gibt eine Priorität für arithmetische Operationen:

  • Zuerst werden die Operationen der Multiplikation, Division und des Rests durchgeführt, dann die Operationen der Addition und Subtraktion.
  • Die Operationen werden von links nach rechts durchgeführt. Wenn in einer Formel mehrere Operationen verwendet werden, die die gleiche Priorität haben (z. B. Multiplikation und Division), wird die Operation auf der linken Seite zuerst ausgeführt.
  • Klammern ( und ) können verwendet werden, um die Priorität von Operationen zu ändern. Ausdrücke in Klammern haben bei der Berechnung die höchste Priorität. Auch für sie gilt das Prinzip von links nach rechts: Ausdrücke in Klammern links in einer Formel werden zuerst berechnet.

In der Formel können auch Konstanten verwendet werden:

  • Numerisch (Ganzzahl und Real mit Punkt). Zum Beispiel: EURUSD*2+GBPUSD*0,7.
  • Die Eigenschaften _Ziffern und _Punkt-Symbol. Sie ersetzen die benutzerdefinierten Symboleigenschaften aus der Spezifikation in der Formel. Stellen - Anzahl der Dezimalstellen im Symbolpreis, _Punkt - Größe der minimalen Veränderung des Symbolpreises.

Außerdem können alle in MQL5 unterstützten mathematischen Funktionen in der Formel verwendet werden, außer MathSrand, MathRand und MathIsValidNuber. Für alle Funktionen werden nur Kurznamen verwendet: fabs(), acos(), asin(), usw.