Algorytmiczny język QPILE do programowania robotów handlowych dla QUIK.
Roboty handlowe mogą być napisane w określonym języku, podobnym do kodu programu. QPILE jest jednym z nich, w tym artykule rozważymy ten język, porównamy języki QPILE i
LUA , a także podamy przykłady robotów w tym języku.
- Ogólne informacje o QPILE
- Praca ze stołem
- Konstrukcje QPILE
- Typy danych
- Wyrażenia
- Funkcje
- Programy do debugowania
- QPILE czy LUA?
- Jak stworzyć robota handlowego na QPILE?
- Handel robotami na QPILE – gotowe rozwiązania
- Ruchomy przeciętny robot
- Kalkulator pozycji N. Moroszkina
- Filtr objętości
- Opcje Grecy
- Robot handlowy TRIX dla QUIK
- Preprocesor M4
Ogólne informacje o QPILE
QPILE to skrót oznaczający QUIK Programmable Interface i Logic Environment.
Jest to seria poleceń interpretowanych przez stację roboczą QUIK. Służy głównie do obliczania ceny portfeli papierów wartościowych. Język jest również używany do:
- dynamiczne przeliczanie cen aktywów klientów na pulpicie brokera oraz w ich portfelach. W tym drugim przypadku przeliczana jest również ich łączna cena;
- znajdowanie brakujących wskaźników za pomocą własnych algorytmów i danych do kredytu pod zastaw;
- opracowanie odpowiedniej strategii handlowej.
Język opisuje strukturę tabeli: wyznaczenie kolumn i wierszy, formuły. W tych ostatnich do obliczeń można wykorzystać operacje matematyczne, zmienne, dane z innych tabel. Kod programu ładowany z serwera QUIK lub z dysku użytkownika przetwarzany jest przez interpreter języka, który oblicza wartości we wzorach. Tabele jednego programu mają jedno źródło danych, ale obliczenia nie są duplikowane i nie wpływają na wydajność systemu. Podczas pracy z tabelami QUIK, tabele w QPILE mają standardowe funkcje. QUIK w miejscu pracy wyposażony jest w debugger kodu QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Język pozwoli opisywać nowe tabele o zadanej strukturze, podświetlać komórki o określonych wartościach, obliczać pola na podstawie wyrażeń matematycznych i logicznych. Użytkownik otrzyma powiadomienia w formie sygnału dźwiękowego lub wiadomości tekstowej. Tabele na QPILE można edytować, drukować, kopiować, eksportować przez serwer ODBC i DDE. Początkowe dane pochodzą z tabel QUIK:
- transakcje, w tym egzekucyjne i bezosobowe;
- zlecenia, w tym zlecenia stop, dla transakcji pozagiełdowych i zleceń – raporty dla transakcji w rozliczeniach;
- „portfel klienta”, „kup/sprzedaj”
- dane z pozycji uczestnika według środków pieniężnych, kont handlowych, instrumentów.
Tabele oparte na QPILE nie mogą być kopiowane do pliku tekstowego poprzez menu kontekstowe i eksportowane do systemów analizy technicznej, a wykresów nie można na ich podstawie tworzyć. Tabele oparte na QPILE nie mogą być filtrowane ani sortowane.
Praca ze stołem
Aby załadować kod programu, musisz wybrać menu usług, a następnie skrypty QPILE. Możesz także użyć kombinacji Ctrl+F11. Po kliknięciu przycisku „Dodaj” i wybraniu żądanego pliku. Posiada rozszerzenie .qpl, a jego nazwa pojawi się na liście Dostępne skrypty.
- Nazwa tabeli;
- liczba kolumn i klientów;
- lista identyfikatorów i klientów;
- listę parametrów i kod źródłowy pliku.
Konstrukcje QPILE
Typy danych
- Ciąg – ciąg.
- Double to liczba zmiennoprzecinkowa.
- Kolekcja – kolekcja.
- Mapa – tablica asocjacyjna – sekwencja par, która pozwala uzyskać informacje według klucza.
Wyrażenia
Stosowane są operacje arytmetyczne dodawania, odejmowania, mnożenia, dzielenia. Stosowane są również wyrażenia logiczne „i”, „lub”, równa się, mniej, więcej, nierówności, konstrukcja warunkowa „jeśli… to…”.
Funkcje
Funkcje mogą znajdować się w dowolnym miejscu w programie i mieć różne nazwy. Łącznie dostępnych jest 18 grup funkcji i funkcji matematycznych do uzyskania wartości tabel i parametrów, tablic asocjacyjnych, listy tabel i innych zadań. Pierwsza klasa:
- Funkcje matematyczne pozwalające na zwrócenie wartości sinusa, cosinusa, tangensa, cotangensa argumentu, obliczenie wykładnika argumentu, wygenerowanie liczby losowej itp.
- Polecenia ogólne : NEW_GLOBAL do inicjalizacji zmiennej globalnej i MESSAGE do otwierania wiadomości.
Funkcje do pracy z:
- Kolekcje obiektów (Kolekcja) . Pozwalają stworzyć nową kolekcję, zwrócić wymaganą liczbę elementów, podmienić lub wstawić żądane wartości.
- Tablice asocjacyjne (MAP) . Pomoc w tworzeniu i zarządzaniu tablicą.
- Pliki – praca z plikami tekstowymi, prowadzenie log-logu programu. Nazwa pliku może zawierać ścieżkę do niego.
- Ciągi .
- Wykresy . Funkcje GET_CANDLE, aby uzyskać dostęp do danych świec i GET_CANDLE EX, aby zwrócić tablicę asocjacyjną.
- Aplikacje . Tworzenie zleceń i wysyłanie ich do systemu transakcyjnego.
- Tagi . Ich budowa i montaż na wykresie. Dodawanie, usuwanie jednej lub wszystkich etykiet, pobieranie i ustawianie parametrów dla konkretnej etykiety.
Dostępne są również funkcje:
- Dostęp do wierszy dowolnych tabel QUIK i list dostępnych parametrów . Dostęp do danych tabeli miejsca pracy. Obejmują one GET_ITEM, aby zwrócić MAP i GET_NUMBER_OF, aby zwrócić liczbę wpisów.
- Do pracy z programowalnym stołem . Te polecenia działają na tablicy OWN. Jest odczytywany przez standardowe funkcje z poprzedniego akapitu oraz przez te funkcje. Ta grupa zawiera polecenia dodawania, modyfikowania i usuwania wiersza z indeksem oraz całkowitego wyczyszczenia tabeli OWN.
Aby uzyskać wartości, użyj:
- Tabele aktualnych transakcji . Pobieranie parametrów wymiany informacji za pomocą poleceń GET_PARAM (_EX).
- Cytuj okna . Uzyskanie wartości notowań instrumentów.
- Tabele pozycji według instrumentów i pieniędzy . Pozyskiwanie danych o kliencie, firmie, instrumencie, rachunku depozytowym według kodu.
Funkcje serwisowe – zwracanie daty bieżącej sesji giełdowej, serii asocjacyjnej, aktualnej daty i czasu, określanie stanu połączenia, przerywanie trybu naliczania.
Programy do debugowania
Kontrola krok po kroku nad działaniem programu odbywa się w oknie „Debugowanie”. Jest otwierany z menu kontekstowego „Rozpocznij obliczenia w trybie debugowania”. Można go również otworzyć za pomocą polecenia breakpoint(), a wiersz programu zostanie podświetlony na czerwono. Okno zawiera pola z kodem programu i wartościami zmiennych. W dolnej części okna znajdują się przyciski „Następny krok”, „Kontynuuj wykonywanie”, „Zatrzymaj obliczenia”. Naciśnięcie F5 spowoduje kontynuację wykonywania programu, kombinacja Shift + F5 zatrzyma debugowanie, klawisz F10 przekieruje do następnej linii.
QPILE czy LUA?
LUA to nowy język programowania do tworzenia robotów handlowych. Podobnie jak QPILE, jest zaimplementowany w terminalu QUIK. https://articles.opexflow.com/programming/lua.htm Strona poświęcona rozwojowi robotów handlowych do handlu pokazuje zalety języka LUA nad QPILE. Może więc funkcjonować jako nieskompilowany skrypt i kod bajtowy, wyposażony w narzędzia programistyczne i mechanizmy programowania obiektowego. Obiekty napisane w innych językach programowania można podłączyć do programów LUA. LUA udostępnia 8 typów danych, w tym metatabele. Język LUA jest wielowątkowy, szybki, a transakcje i zdarzenia terminalowe są asynchroniczne. LUA jest bardziej powszechny niż QPILE i napisano dla niego wiele rozszerzeń.
Język QPILE jest teraz przestarzały. Eksperci na forach zalecają korzystanie z LUA. Chociaż nadal używane są przydatne i skuteczne programy.
Jednak język QPILE jest prosty w porównaniu do LUA, więc jeśli nie masz doświadczenia w programowaniu, lepiej wybrać QPILE. W tym języku możesz napisać prostego robota, jeśli nie musisz wykonywać skomplikowanych obliczeń.
Jak stworzyć robota handlowego na QPILE?
Aby stworzyć doradcę handlowego, będziesz potrzebować następujących programów:
- ITS Quik.
- Edytor kodu Notepad++.
- Przewodnik po QPILE.
- Wtyczka XML do wykrywania kodu w Notepad++.
Pobierz i zainstaluj te programy. Włącz składnię języka, umieszczając userDefineLang.xml w ścieżce C:\Users\User\AppData\Roaming\Notepad++\
Blok „Ustawienia użytkownika” uzupełniono o zmienne NUMBER i INTERVAL, które zostaną wykorzystane w funkcji uzyskania ostatnich N słupków. Funkcja DATETIME ustawia datę i czas serwera, z którego wywoływane są aktualne funkcje daty i czasu CURDATE i CURTIME. Aktualny czas jest konwertowany na liczbę w linii 24. Linia 26 ustawia czas działania algorytmu od 10:00:01 do 18:40:00 UTC.
Handel robotami na QPILE – gotowe rozwiązania
Ruchomy przeciętny robot
Robot demonstracyjny nie nadaje się do prawdziwego handlu.
Kalkulator pozycji N. Moroszkina
Program do obliczania poziomów maksymalnego dopuszczalnego wypłaty oraz celu dla długich i krótkich pozycji przy aktualnych cenach ask i bid. Poziomy są obliczane dla 2 wartości wolumenu wejścia pozycji. Robot znajduje dopuszczalny wolumen pozycji podczas przypisywania zlecenia stop w jednym kroku od ceny otwarcia z obliczeniem otwarcia pozycji w górę słupka. Znalezione poziomy są wprowadzane do okna terminala, które są następnie odzwierciedlane na wykresie cenowym. Transakcje są stałe dla danego instrumentu. Jeśli pozycja jest otwarta, robot zaczyna obliczać jej parametry. W zależności od zmiany pozycji, przypisane zlecenia są dostosowywane.
Filtr objętości
Robot-portfolio do obliczania średniej arytmetycznej objętości świec i porównywania jej ze średnim iloczynem współczynnikiem X. Działa poprawnie z wykreślonymi wykresami w wybranym okresie czasu.
Opcje Grecy
Portfolio do obliczania i wyświetlania „Greków” opcji. Różni się od metody Black-Showers.
Robot handlowy TRIX dla QUIK
Program oparty jest na wskaźniku TRIX. Gdy wskaźnik zamyka się powyżej linii zerowej, określonego poziomu, robot zajmuje pozycję długą. Pozycja jest zamykana przez Take Profit, Stop Loss lub trailing stop.
Preprocesor M4
Program do pracy z QPILE i Lua. Obejmuje archiwa z plikami wykonywalnymi, dokumentacją i plikami DLL z analizą wyrażeń regularnych. Aby skorzystać z programu, należy rozpakować pliki wykonywalne i umieścić regexp2 w ścieżce C:\Windows. Lekcje na temat QPILE dla QUIK: https://youtu.be/vMTXwDUujpI Instalowanie skryptu na QPILE w terminalu Quik: https://youtu.be/0B7qL8Svh7I Sekcja na github opisująca użycie języka algorytmicznego QPILE wbudowanego w Stacja robocza systemu QUIK znajdująca się pod linkiem – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE to przestarzały język, ale dość prosty i dostępny nawet dla początkujących traderów. Roboty handlowe i programy, które sprawdzają się przez długi czas, nadal nad tym pracują. Jednak w przypadku bardziej złożonych zadań lepiej jest użyć LUA.
0к