Algorithmische Sprache QPILE zur Programmierung von Handelsrobotern für QUIK.
Handelsroboter können in einer bestimmten Sprache geschrieben werden, ähnlich wie Programmcode. QPILE ist einer von ihnen, dieser Artikel wird diese Sprache betrachten, die Sprachen QPILE und
LUA vergleichen und auch Beispiele für Roboter in dieser Sprache geben.
- Allgemeine Informationen zu QPILE
- Arbeiten mit einer Tabelle
- QPILE-Konstrukte
- Datentypen
- Ausdrücke
- Funktionen
- Programme debuggen
- QPILE oder LUA?
- Wie erstelle ich einen Handelsroboter auf QPILE?
- Handelsroboter auf QPILE – fertige Lösungen
- Beweglicher durchschnittlicher Roboter
- N. Moroshkin-Positionsrechner
- Volumenfilter
- Optionen Griechen
- TRIX Handelsroboter für QUIK
- M4-Präprozessor
Allgemeine Informationen zu QPILE
QPILE ist eine Abkürzung, die für QUIK Programmable Interface and Logic Environment steht.
Dies ist eine Reihe von Befehlen, die von der QUIK-Workstation interpretiert werden. Es wird hauptsächlich verwendet, um den Preis von Wertpapierportfolios zu berechnen. Die Sprache wird auch verwendet für:
- dynamische Neuberechnung des Preises der Vermögenswerte der Kunden auf dem Desktop des Maklers und in ihren Portfolios. Im letzteren Fall wird auch ihr Gesamtpreis neu berechnet;
- Finden fehlender Indikatoren unter Verwendung ihrer eigenen Algorithmen und Daten für Margenkredite;
- Entwicklung der richtigen Handelsstrategie.
Die Sprache beschreibt den Aufbau der Tabelle: die Benennung von Spalten und Zeilen, Formeln. In letzterem können mathematische Operationen, Variablen, Daten aus anderen Tabellen zur Berechnung verwendet werden. Der vom QUIK-Server oder von der Festplatte des Benutzers geladene Programmcode wird vom Sprachinterpreter verarbeitet, der die Werte in den Formeln berechnet. Die Tabellen eines Programms haben eine Datenquelle, aber die Berechnungen werden nicht dupliziert und beeinträchtigen die Effizienz des Systems nicht. Beim Arbeiten mit QUIK-Tabellen haben Tabellen auf QPILE Standardfunktionen. QUIK am Arbeitsplatz ist mit einem QPILE-Code-Debugger ausgestattet. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Die Sprache ermöglicht es Ihnen, neue Tabellen mit einer bestimmten Struktur zu beschreiben, Zellen mit bestimmten Werten hervorzuheben und Felder basierend auf mathematischen und logischen Ausdrücken zu berechnen. Der Benutzer erhält Benachrichtigungen in Form eines Tonsignals oder einer Textnachricht. Tabellen auf QPILE können bearbeitet, gedruckt, kopiert und über ODBC- und DDE-Server exportiert werden. Die Anfangsdaten stammen aus den QUIK-Tabellen:
- Transaktionen, einschließlich zur Ausführung und unpersönlich;
- Orders, einschließlich Stop-Orders, für außerbörsliche Geschäfte und Orders – Berichte für Geschäfte in Abwicklungsgeschäften;
- „Kundenportfolio“, „Kauf/Verkauf“
- Daten aus den Positionen des Teilnehmers nach Geld, Handelskonten, Instrumenten.
Auf QPILE basierende Tabellen können nicht über das Kontextmenü in eine Textdatei kopiert und in technische Analysesysteme exportiert werden, und es können keine Diagramme darauf basierend entwickelt werden. QPILE-basierte Tabellen können nicht gefiltert oder sortiert werden.
Arbeiten mit einer Tabelle
Um den Programmcode zu laden, müssen Sie das Dienstemenü und dann QPILE-Skripte auswählen. Sie können auch die Kombination Strg+F11 verwenden. Danach müssen Sie auf „Hinzufügen“ klicken und die gewünschte Datei auswählen. Es hat die Erweiterung .qpl und sein Name erscheint in der Liste Verfügbare Skripte.
Wenn im Programm ein Fehler auftritt, gibt das System im „Meldungsfenster“ eine Benachrichtigung aus, die den Namen der fehlerhaften Datei und die Zeilennummer mit dem Fehler enthält. Wenn in der Datei keine Fehler gefunden wurden, werden die folgenden Daten in den Feldern angezeigt:
- Tabellenname;
- Anzahl Spalten und Clients;
- Liste der Identifikatoren und Kunden;
- die Liste der Parameter und den Quellcode der Datei.
Mit der Schaltfläche „Lokal herunterladen“ können Sie die Tabelle aus einer Datei abrufen, und „Auf Server hochladen“ sendet das Programm an den Server, sodass alle Benutzer darauf zugreifen können. Um eine Tabelle zu erstellen, klicken Sie auf Tabelle erstellen. Wählen Sie in den „Verfügbaren Skripten“ das Programm aus, das Sie ausführen möchten, stellen Sie die Anzahl der Zeilen über den „Client-Filter“ ein, definieren Sie die erforderlichen Spalten und deren Reihenfolge.
Das Anhalten und Fortsetzen der Berechnung, das erneute Starten der Berechnung und im Debug-Modus, das Speichern der Beschreibung in einer Datei, das Demonstrieren der Formel und die Skriptparameter sind im Kontextmenü verfügbar.
QPILE-Konstrukte
Datentypen
- Schnur – Schnur.
- Double ist eine Fließkommazahl.
- Sammlung – eine Sammlung.
- Map – ein assoziatives Array – eine Folge von Paaren, mit der Sie Informationen nach Schlüssel abrufen können.
Ausdrücke
Es werden die Rechenoperationen Addition, Subtraktion, Multiplikation, Division angewendet. Die logischen Ausdrücke „und“, „oder“, gleich, mehr, weniger, Ungleichungen, bedingte Konstruktionen „wenn … dann …“ werden ebenfalls verwendet.
Funktionen
Funktionen können sich überall im Programm befinden und unterschiedliche Namen haben. Insgesamt stehen 18 Gruppen von mathematischen Funktionen und Funktionen zur Verfügung, um die Werte von Tabellen und Parametern, assoziativen Arrays, einer Liste von Tabellen und anderen Aufgaben zu erhalten. Erste Klasse:
- Mathematische Funktionen , mit denen Sie den Wert von Sinus, Kosinus, Tangens, Kotangens des Arguments zurückgeben, den Exponenten des Arguments berechnen, eine Zufallszahl generieren usw.
- Allgemeine Befehle : NEW_GLOBAL zum Initialisieren einer globalen Variablen und MESSAGE zum Öffnen von Nachrichten.
Funktionen zum Arbeiten mit:
- Sammlungen von Objekten (Sammlung) . Sie ermöglichen es Ihnen, eine neue Sammlung zu erstellen, die erforderliche Anzahl von Elementen zurückzugeben, die gewünschten Werte zu ersetzen oder einzufügen.
- Assoziative Arrays (MAP) . Helfen Sie mit, das Array zu erstellen und zu verwalten.
- Dateien – Arbeiten mit Textdateien, Führen eines Log-Logs des Programms. Der Dateiname kann den Pfad dazu enthalten.
- Saiten .
- Grafiken . Funktionen GET_CANDLE für den Zugriff auf Kerzendaten und GET_CANDLE EX für die Rückgabe eines assoziativen Arrays.
- Anwendungen . Aufträge erstellen und an das Handelssystem senden.
- Tags . Ihre Konstruktion und Installation auf der Karte. Hinzufügen, Löschen eines oder aller Etiketten, Abrufen und Einstellen von Parametern für ein bestimmtes Etikett.
Es gibt auch Funktionen für:
- Für den Zugriff auf Zeilen beliebiger QUIK-Tabellen und Listen verfügbarer Parameter . Zugriff auf Arbeitsplatztabellendaten. Dazu gehören GET_ITEM, um die MAP zurückzugeben, und GET_NUMBER_OF, um die Anzahl der Einträge zurückzugeben.
- Arbeiten mit einer programmierbaren Tabelle . Diese Befehle wirken auf die OWN-Tabelle. Es ist von den Standardfunktionen aus dem vorherigen Absatz und von diesen Funktionen lesbar. Diese Gruppe enthält Befehle zum Hinzufügen, Ändern und Löschen einer Zeile mit einem Index und zum vollständigen Löschen der OWN-Tabelle.
Um Werte zu erhalten, verwenden Sie:
- Tabellen der aktuellen Trades . Abrufen von Austauschinformationsparametern mit GET_PARAM (_EX)-Befehlen.
- Fenster zitieren . Abrufen der Werte von Instrumentennotierungen.
- Positionstabellen nach Instrumenten und Geld . Abrufen von Daten über einen Kunden, eine Firma, ein Instrument oder ein Depotkonto nach Code.
Servicefunktionen – Rückgabe des Datums der aktuellen Handelssitzung, assoziative Reihen, aktuelles Datum und aktuelle Uhrzeit, Bestimmung des Verbindungsstatus, Unterbrechung des Berechnungsmodus.
Programme debuggen
Die schrittweise Steuerung des Programmablaufs erfolgt im Fenster „Debug“. Es wird über das Kontextmenü „Berechnung im Debug-Modus starten“ geöffnet. Es kann auch mit dem Befehl breakpoint() geöffnet werden, und die Programmzeile wird rot hervorgehoben. Das Fenster enthält Felder mit Programmcode und Variablenwerten. Am unteren Rand des Fensters befinden sich die Schaltflächen „Nächster Schritt“, „Ausführung fortsetzen“, „Berechnung stoppen“. Durch Drücken von F5 wird die Ausführung des Programms fortgesetzt, die Kombination Umschalt + F5 stoppt das Debuggen, die Taste F10 führt zur nächsten Zeile.
QPILE oder LUA?
LUA ist eine neue Programmiersprache zum Erstellen von Handelsrobotern. Wie QPILE ist es im QUIK-Terminal implementiert. https://articles.opexflow.com/programming/lua.htm Eine Website, die sich der Entwicklung von Handelsrobotern für den Handel widmet, zeigt die Vorteile der LUA-Sprache gegenüber QPILE. So kann es als unkompiliertes Skript und Bytecode fungieren, ausgestattet mit Entwicklertools und objektorientierten Programmiermechanismen. In anderen Programmiersprachen geschriebene Objekte können mit LUA-Programmen verbunden werden. LUA bietet 8 Datentypen, einschließlich Metatabellen. Die LUA-Sprache ist multithreaded, schnell und Transaktionen und Terminalereignisse sind asynchron. LUA ist häufiger als QPILE und viele Erweiterungen wurden dafür geschrieben.
Die Sprache QPILE ist nun veraltet. Experten in den Foren empfehlen die Verwendung von LUA. Obwohl nützliche und effektive Programme immer noch verwendet werden.
Die QPILE-Sprache ist jedoch im Vergleich zu LUA einfach. Wenn Sie also keine Programmiererfahrung haben, ist es besser, QPILE zu wählen. In dieser Sprache können Sie einen einfachen Roboter schreiben, wenn Sie keine komplexen Berechnungen durchführen müssen.
Wie erstelle ich einen Handelsroboter auf QPILE?
Um einen Handelsberater zu erstellen, benötigen Sie die folgenden Programme:
- ITS Quik.
- Notepad++ Code-Editor.
- Anleitung zu QPILE.
- XML-Plugin zur Codeerkennung in Notepad++.
Laden Sie diese Programme herunter und installieren Sie sie. Aktivieren Sie die Sprachsyntax, indem Sie userDefineLang.xml im Pfad C:\Users\User\ AppData\Roaming\Notepad++\ platzieren.
Lassen Sie uns zunächst die folgende Handelsstrategie erstellen. Das Skript sollte jede Minute Hi und Low für die letzten paar Kerzen berechnen und den aktuellen Preis des Instruments überprüfen. Eine Position wird in die erforderliche Richtung eröffnet, wenn der Preis des Instruments den Höchst- oder Mindestwert für den Zeitraum erreicht. Wenn ein Short-Signal empfangen wird, wird die Long-Position automatisch geschlossen. Der Roboter verwendet das GAZP-Tool, das Zeitfenster ist auf 1 Minute eingestellt. Die Hi-Low-Messtiefe ist auf 5 Kerzen eingestellt. Um Long einzugeben, wird eine Regel festgelegt und der Schnittpunkt des aktuellen Preises mit dem Maximalwert für den Zeitraum. Der Roboter geht Short ein, wenn der aktuelle Preis den Mindestwert für diese 5 Kerzen überschreitet. Schreiben Sie einen Codeblock in Notepad++ mit Grundeinstellungen und Serverdatum und -zeit. Dieser Code ist im Bild unten dargestellt.
Die ersten 4 Codezeilen bilden den Programmkopf. Zwischen den Zeilen 6 und 44 befindet sich der Hauptteil des Programms, der den Inhalt des Roboters enthält. Die Zeilen 7 – 12 enthalten Benutzereinstellungen, die die Codes des Instruments, der Gruppe und des Kunden sowie die Kontonummer auf dem MICEX enthalten. Diese Werte ändern sich während der Programmausführung nicht. Die Zeilen 13 – 16 sind die Anfangswerte der Variablen. Sie werden bei jedem Iterationsdurchlauf auf Null zurückgesetzt. Die Zeilen 17 – 21 enthalten eine Angabe zur Verwendung von Datum und Uhrzeit des Servers. Diese Daten werden an die DATETIME-Funktion übergeben und in das Textformat konvertiert. Die Zeilen 22 – 29 senden die empfangenen Daten an die Tabelle. Der Code muss gespeichert und die Erweiterung qpl angegeben werden.
Öffnen Sie das Programm in QUIK, indem Sie Strg+F10 drücken und die generierte qpl-Datei auswählen. Verwenden Sie die Kombination Strg+F11, um das Fenster „Arbeiten mit Portfolios“ zu öffnen, und stellen Sie den Portfolioberechnungszeitraum auf 5 Minuten ein. Drücken Sie Strg+F12, um festzulegen, welche Spalten in der Tabelle angezeigt werden sollen. Das Bild zeigt das Ergebnis der Arbeit des Roboters.
Fügen wir unserem Programm ein paar weitere Funktionen und Bedingungen hinzu.
Der Block „Benutzereinstellungen“ wird um die Variablen NUMBER und INTERVAL ergänzt, die in der Funktion zum Erhalten der letzten N Balken verwendet werden. Die DATETIME-Funktion setzt das Datum und die Uhrzeit des Servers, und die aktuellen Datums- und Uhrzeitfunktionen CURDATE und CURTIME werden von ihr aufgerufen. Die aktuelle Zeit wird in Zeile 24 in eine Zahl umgewandelt. Zeile 26 legt die Zeit fest, zu der der Algorithmus von 10:00:01 bis 18:40:00 UTC ausgeführt werden soll.
Am häufigsten werden Indikatoren, Oszillatoren und statistische Berechnungen von den letzten N Kerzen des Diagramms berechnet. QPILE hat keine Funktion zum Sammeln der Anzahl von Kerzen vor N Perioden als solche, aber es gibt eine GET_CANDLE-Funktion, die auf Kerzen im Chart nach Datum und Uhrzeit im Textformat zugreift. Unser Code enthält die Funktion, um die letzten N Balken OHLC() zu erhalten. Es erstellt eine Sammlung mit den Parametern der letzten Kerzen, die in der COLLECTION-Liste verschachtelt sind. Das Programm überprüft den INTERVAL-Wert, und wenn er nicht in den Bereich 0…60 fällt, wird eine Meldung angezeigt, dass der Wert nicht dem zulässigen Bereich entspricht. Eine MAP-Sammlung mit Kerzen wird in Zeile 88 erstellt. Eine FOR-Schleife, die den Chart bis zur erforderlichen Tiefe mit dem INTERVAL-Schritt von der neuen zur alten Kerze abfragt. In Zeile 90, nachdem der Zyklus deklariert wurde, geht der Roboter ein Intervall zurück. Wenn Sie mit GET_CANDLE eine Kerze erhalten, Platzieren Sie es mit der Funktion INSERT_COLLECTION_TEAM in der BARLIST-Sammlung. Als Ergebnis der Operation des Befehls OHLC() wird BARLIST mit den letzten Kerzen aus dem Instrumentenchart in Höhe von NUMBER aufgefüllt. Die Anzahl der Elemente in der Sammlung wird vom Befehl GET_COLLECTION_COUNT() angefordert und von der Variablen BARCOUNT gemeldet. Serverdatum, Uhrzeit, Werte der INSTRUMENT- und BARCOUNT-Variablen werden von der SET_VALUE()-Funktion in OUTPUT gemeldet. Dieses Array wird durch den Befehl CREATE_MAP() erstellt. Die Daten fallen in die benutzerdefinierte Tabelle, die auf dem Foto unten zu sehen ist. die Werte der Variablen INSTRUMENT und BARCOUNT werden von der Funktion SET_VALUE() in OUTPUT gemeldet. Dieses Array wird durch den Befehl CREATE_MAP() erstellt. Die Daten fallen in die benutzerdefinierte Tabelle, die auf dem Foto unten zu sehen ist. die Werte der Variablen INSTRUMENT und BARCOUNT werden von der Funktion SET_VALUE() in OUTPUT gemeldet. Dieses Array wird durch den Befehl CREATE_MAP() erstellt. Die Daten fallen in die benutzerdefinierte Tabelle, die auf dem Foto unten zu sehen ist.
Handelsroboter auf QPILE – fertige Lösungen
Beweglicher durchschnittlicher Roboter
Demo-Roboter nicht für echten Handel geeignet.
Der Roboter enthält 5 Parameter. DATUM, ZEIT, PREIS-Identifiziererwerte werden auf Stufe 30 gesetzt. MOVING- und TP-Identifizierer werden auf null Genauigkeit gesetzt. Robotercode zum gleitenden Durchschnitt geschrieben unter QPILE: [Galerie Spalten = „5“ ids = „14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907“]
N. Moroshkin-Positionsrechner
Ein Programm zur Berechnung der Höhe des maximal zulässigen Drawdowns und des Ziels für Long- und Short-Positionen zu aktuellen Brief- und Geldkursen. Die Levels werden für 2 Werte des Positionseinstiegsvolumens berechnet. Der Roboter findet das zulässige Positionsvolumen bei der Zuweisung einer Stop-Order in einem Schritt aus dem Eröffnungspreis mit der Berechnung der Eröffnung einer Position in Aufwärtsrichtung des Balkens. Die gefundenen Niveaus werden in das Terminalfenster eingegeben, die sich anschließend im Preisdiagramm widerspiegeln. Transaktionen sind für ein bestimmtes Instrument festgelegt. Wenn eine Position eröffnet wird, beginnt der Roboter mit der Berechnung seiner Parameter. Je nach Positionsänderung werden die zugeteilten Aufträge angepasst.
Volumenfilter
Ein Roboter-Portfolio zur Berechnung des arithmetischen Mittels des Volumens von Kerzen und zum Vergleich mit dem Durchschnittsprodukt durch den Koeffizienten X. Funktioniert korrekt mit geplotteten Diagrammen in einem ausgewählten Zeitraum.
Optionen Griechen
Portfolio zum Berechnen und Anzeigen von „Griechen“ von Optionen. Es unterscheidet sich von der Black-Showers-Methode.
TRIX Handelsroboter für QUIK
Das Programm basiert auf dem TRIX-Indikator. Wenn der Indikator über der Nulllinie schließt, dem angegebenen Level, nimmt der Roboter die Long-Position ein. Die Position wird durch Take Profit, Stop Loss oder Trailing Stop geschlossen.
M4-Präprozessor
Programm zum Arbeiten mit QPILE und Lua. Beinhaltet Archive mit ausführbaren Dateien, Dokumentation und DLL-Dateien mit regulärer Ausdrucksanalyse. Um das Programm zu verwenden, müssen Sie die ausführbaren Dateien entpacken und regexp2 im Pfad C:\Windows ablegen. Lektionen zu QPILE für QUIK: https://youtu.be/vMTXwDUujpI Installieren eines Skripts auf QPILE im Quik-Terminal: https://youtu.be/0B7qL8Svh7I Ein Abschnitt auf github, der die Verwendung der in QPILE integrierten algorithmischen Sprache beschreibt QUIK-System-Workstation unter dem Link – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE ist eine veraltete Sprache, aber ziemlich einfach und sogar für unerfahrene Händler zugänglich. Daran arbeiten seit langem bewährte Handelsroboter und Programme weiter. Für komplexere Aufgaben ist es jedoch besser, LUA zu verwenden.
0к