![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ich werde das Thema Starter unterstützen, habe ich mql viele Male als 4 und 5 ausgeliehen, und ich werde sagen, dass ich persönlich wenig Lust, die Sprache, die ich nur hier im Handel verwenden können lernen ...
Nun, das ist entweder umsonst oder weil Sie das Problem nicht verstehen. Wollen Sie die Indikatoralgorithmen wirklich noch einmal schreiben? Das ist so, als würde man von Wolgograd über Wladiwostok nach Moskau fahren. Und noch etwas: Alle Indikatoren berücksichtigen die Geschichte. Das heißt, wenn Sie die Daten (Balken) für einen Monat nehmen, den Indikator nach Ihrem Algorithmus berechnen und ihn mit Terminal vergleichen, werden Ihre Berechnungen anders ausfallen.
Ich verstehe den Satz auch nicht:
Ausgehend von dem, was ich geschrieben habe, stellt sich heraus, dass es eine große Schicht von Python-Kenntnissen gibt :) Du öffnest einen Editor und kennst dich schon mit Python aus - es ist so einfach, und wenn du mql öffnest, hast du überhaupt keine Ahnung.
Gleichzeitig wird mql, dasvollständig plattformorientiert ist, als "veraltetes" Werkzeug bezeichnet ... python wurde 1991 entwickelt und dies ist viel früher
Was ich in diesem Thread gesehen habe, geschrieben in Python, ist sehr einfach in mql zu implementieren
---
Nun, als allgemeine Idee ist es interessant, aber nicht mehr.
Außerdem macht er sich die Vorteile von Python nicht zunutze und es ist nicht "Python-Stil". Das ist so, als würde man Nägel mit einem Schraubenzieher einschlagen, der Hammer ist altmodisch.
Ich vermute, dass das einzige Geschirr in Ihrem Haus ein Löffel ist - Sie können eine Suppe oder einen Kuchen kochen und es ist sicherer, ihn zu benutzen
)))
Wenn es Ihnen gefällt, verwenden Sie Python, aber nicht als Themenstarter - erstellen Sie keine eigenen Datentypen - Balken und so weiter, schreiben Sie keine eigenen Berechnungen ... und verwenden Sie bestehende Lösungen, sonst macht es keinen Sinn, diese Sprache zu verwenden, Sie können genauso gut Ihre eigenen Pakete für neuronale Netzwerke schreiben ;)
Ja) Übrigens, es gibt keine Python-Bibel für solche handelsnahen Funktionen, oder wenn Sie die vollständige statistische Analyse einer Serie in ein paar Zeilen schreiben können, brauchen Sie MA) nicht...
Ja) Übrigens, es gibt keine Python-Bibliothek für alle möglichen handelsnahen Funktionen, oder wenn man eine komplette statistische Analyse einer Serie in ein paar Zeilen schreiben kann, dann wird die MA nicht mehr benötigt)...
Die besten 101 Python-Bibliotheken für den algorithmischen Handel | PythonRepo
Konnte gestern nicht mehr ins Forum. Ich werde fortsetzen. Ich habe ein neues Demokonto eröffnet, und darauf sind die Namen von Instrumenten ohne '_i' am Ende, also habe ich den Code in diesem Teil korrigiert.
Ich werde die allmähliche und langsame Bewegung fortsetzen, eine Art Mikro-Tutorial für diejenigen, die sich als nützlich erweisen könnten.
Führen wir eine Variable n (klein) ein - sei es sozusagen die Länge des Fensters. Das heißt, in Dateien mit Preisen, N Messwerten, zum Beispiel 1000, und n, lassen Sie uns zum Beispiel 10 oder 100 oder 288 einstellen (ein Tag, wenn der Zeitrahmen M5 ist).
Die Variable d bedeutet für mich die Verschiebung dieses Zeitfensters in die Vergangenheit. Setzen wir d = 0.
Zum Beispiel werden wir 10 Messwerte von Schlusskursen und SMA in der Größenordnung von 101 anzeigen (um 50 Intervalle zwischen den Messwerten verzögert):
Ergebnis der Arbeit:
Wir wollen lernen, wie man das Terminal über die aktuellen Geschäfte auf dem Markt abfragt, sozusagen für die Instrumente.
Ich werde die Funktion
Er nimmt die Liste der offenen Positionen des Symbols und gibt das Tupel(Anzahl der zu verkaufendenGeschäfte, Anzahl der zu kaufenden Geschäfte) zurück.
In der Hauptfunktion fügen Sie dieses Fragment vor der Funktion terminal_done() ein
Das Ergebnis (n ist zugunsten der Ausgabe auf 5 reduziert):
Ich schlage vor, mit der tatsächlichen Eröffnung von Geschäften zu beginnen. Zum Beispiel: Wenn der Kurs um einen gewissen Betrag über dem SMA liegt, eröffnen Sie einen Verkauf, wenn er um einen gewissen Betrag unter dem SMA liegt, eröffnen Sie einen Kauf.
Ich schlage ein paar weitere Funktionen vor: zur Kontrolle offener Trades in Bezug auf SL und TP, um sie zu schließen, wenn sie nicht vorhanden sind, und eine Funktion, die das aktuelle Ergebnis (Gewinn oder Verlust) in Pips zurückgibt.
Wir müssen daran denken, die Situation irgendwie zu handhaben, wenn der Auftrag bereits in der Historie ist und sich nicht in der aktiven Position befindet, und den Auftrag in diesem Fall nicht erneut zur Eröffnung zu senden.
Diese Situation tritt von Zeit zu Zeit auf, und die Arbeit mit Trade.mqh löst dieses Problem nicht (zumindest war das früher nicht der Fall - ich habe Trade.mqh vor langer Zeit aufgegeben).
Manchmal ist es auch umgekehrt - der Schließungsauftrag ist bereits in der Historie enthalten und die Position ist noch sichtbar.
Wir müssen daran denken, die Situation irgendwie zu handhaben, wenn der Auftrag bereits in der Historie ist und sich nicht in der aktiven Position befindet, und den Auftrag in diesem Fall nicht erneut zur Eröffnung zu senden.
Diese Situation tritt von Zeit zu Zeit auf, und die Arbeit mit Trade.mqh löst dieses Problem nicht (zumindest war das früher nicht der Fall - ich habe Trade.mqh vor langer Zeit aufgegeben).
Manchmal ist es umgekehrt - der Schließungsauftrag befindet sich bereits in der Historie und die Position ist noch sichtbar.
Ich habe gezeigt, wie man das Terminal nach den offenen Positionen abfragt. Nichts hindert uns daran, den Code so zu schreiben, dass wir, wenn die Position bereits existiert, die Anfrage nicht erneut senden müssen, wenn nicht - dann schon. Vor allem, dass nach dem Senden einer Anfrage, das Objekt zurückgegeben wird, die alles in seinen Eigenschaften hat, können wir sehen, ob es normal ist, oder welche Art von Fehler vorhanden ist, und auf der Grundlage dieser Tat. Hier gibt es kein Problem.
Die besten 101 Python-Bibliotheken für den algorithmischen Handel | PythonRepo
Es ist bereits 104) Es ist 105)
Vollständiger Code der Datei TradeLogic.py (ja, sie ist primitiv, aber ich bin sicher, dass sie einigen die Tür zum Handel mit Metatrader 5 und Python öffnen könnte)
Ergebnis der Arbeit:
Z.I.Y. Die gezeigten primitivsten, elementarsten Codestücke zeigen meiner Meinung nach bereits recht deutlich, dass es nicht schwierig ist, absolut jede Logik, jede Berechnung, jeden Vergleich, die Kontrolle offener Geschäfte nach verschiedenen Kriterien, das automatische Schließen unter bestimmten Bedingungen, das Führen von Protokollen sowohl auf der Kommandozeile als auch durch Schreiben in Dateien usw. usw. zu implementieren - alles ohne jegliche Einschränkungen.
S.U.2 Bis jetzt habe ich die Klasse Sdelka nicht benutzt, und im Allgemeinen ist es praktisch, Objekte dieser Klasse in Funktionen zu übergeben, sie in Dateien als .json zu schreiben, usw. - aber irgendwie bin ich ein wenig müde, ich denke, wer es verstehen will, dem kann ich hier mit etwas helfen. Wenn Sie wollen, können Sie eine grafische Schnittstelle einbauen.
Ich empfehle dringend den Handel mit Python + metatrader5 Bibliothek.
Ich habe gezeigt, wie man das Terminal nach offenen Positionen abfragt. Es gibt nichts, was Sie daran hindert, den Code so zu schreiben, dass Sie, wenn es bereits eine Position gibt, die Anfrage nicht erneut senden müssen, wenn nicht - senden Sie sie. Vor allem, dass nach dem Senden einer Anfrage, das Objekt zurückgegeben wird, die alles in seinen Eigenschaften hat, können wir sehen, ob es normal geöffnet oder gibt es einen Fehler, und auf der Grundlage dieser Handlung. Hier gibt es keine Probleme.
Auch hier ist der Auftrag bereits ausgeführt und in die Geschichte eingegangen. Sie ist nicht mehr in der aktiven Position. Die Position wurde bereits geöffnet, ist aber noch nicht sichtbar; die Anfrage zeigt sie nicht an.
In der Regel handelt es sich dabei um ein sehr kurzes Zeitintervall, und es ist schwierig, es zu erreichen, zumal dies nicht immer der Fall ist.
Diese Situation kann jedoch bei einer morgendlichen Eröffnung mit einem Gap und einer großen Anzahl von Aufträgen nicht einmal Sekunden, sondern Minuten dauern.
Um es deutlicher zu machen: TRADE_TRANSACTION_ORDER_DELETE ist früher gekommen als TRADE_TRANSACTION_HISTORY_ADD oder TRADE_TRANSACTION_DEAL_ADD
Und es kann sein, dass wir zu einem bestimmten Zeitpunkt keine Aufträge in aktiv oder in der Historie sehen, oder dass wir keine Aufträge oder Abschlüsse sehen.