Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIK.
Handelsrobots kunnen in een specifieke taal worden geschreven, vergelijkbaar met programmacode. QPILE is een van hen, dit artikel zal deze taal beschouwen, de QPILE- en
LUA-talen vergelijken en ook voorbeelden geven van robots in deze taal.
- Algemene informatie over QPILE
- Werken met een tafel
- QPILE-constructies
- Gegevenstypen
- Uitdrukkingen
- Functies
- Foutopsporingsprogramma’s
- QPILE of LUA?
- Hoe maak je een handelsrobot op QPILE?
- Handelsrobots op QPILE – kant-en-klare oplossingen
- voortschrijdend gemiddelde robot
- N. Moroshkin positiecalculator
- Volumefilter
- Opties Grieken
- TRIX handelsrobot voor QUIK
- M4 Preprocessor
Algemene informatie over QPILE
QPILE is een afkorting die staat voor QUIK Programmable Interface and Logic Environment.
Dit is een reeks opdrachten die door het QUIK-werkstation worden geïnterpreteerd. Het wordt voornamelijk gebruikt om de prijs van effectenportefeuilles te berekenen. De taal wordt ook gebruikt voor:
- dynamische herberekening van de prijs van de activa van klanten op de desktop van de broker en in hun portefeuilles. In het laatste geval wordt ook hun totale prijs herberekend;
- het vinden van ontbrekende indicatoren met behulp van hun eigen algoritmen en gegevens voor margeleningen;
- het ontwikkelen van de juiste handelsstrategie.
De taal beschrijft de structuur van de tabel: de benoeming van kolommen en rijen, formules. In de laatste kunnen wiskundige bewerkingen, variabelen en gegevens uit andere tabellen worden gebruikt voor berekening. De programmacode die van de QUIK-server of van de schijf van de gebruiker is geladen, wordt verwerkt door de taalinterpreter, die de waarden in de formules berekent. De tabellen van één programma hebben één gegevensbron, maar de berekeningen worden niet gedupliceerd en hebben geen invloed op de efficiëntie van het systeem. Bij het werken met QUIK-tabellen hebben tabellen op QPILE standaardfuncties. QUIK op de werkvloer is uitgerust met een QPILE code debugger. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm De taal stelt u in staat nieuwe tabellen met een bepaalde structuur te beschrijven, cellen met bepaalde waarden te markeren en velden te berekenen op basis van wiskundige en logische uitdrukkingen. De gebruiker ontvangt notificaties in de vorm van een geluidssignaal of een sms. Tabellen op QPILE kunnen worden bewerkt, afgedrukt, gekopieerd, geëxporteerd via ODBC en DDE-server. De initiële gegevens komen uit de QUIK-tabellen:
- transacties, ook voor uitvoering en onpersoonlijk;
- orders, inclusief stoporders, voor over-the-counter transacties en orders – rapporten voor transacties in afwikkelingsdeals;
- “klantenportfolio”, “kopen/verkopen”
- gegevens van de posities van de deelnemer per geld, handelsrekeningen, instrument.
Tabellen op basis van QPILE kunnen niet via het contextmenu naar een tekstbestand worden gekopieerd en naar technische analysesystemen worden geëxporteerd, en op basis daarvan kunnen geen grafieken worden ontwikkeld. Op QPILE gebaseerde tabellen kunnen niet worden gefilterd of gesorteerd.
Werken met een tafel
Om de programmacode te laden, moet u het dienstenmenu selecteren en vervolgens QPILE-scripts. U kunt ook de combinatie Ctrl+F11 gebruiken. Nadat u op “Toevoegen” moet klikken en het gewenste bestand moet selecteren. Het heeft de extensie .qpl en de naam verschijnt in de lijst Beschikbare scripts.
- tafel naam;
- aantal kolommen en klanten;
- lijst met identificatiegegevens en klanten;
- de lijst met parameters en de broncode van het bestand.
QPILE-constructies
Gegevenstypen
- Snaar – snaar.
- Dubbel is een getal met drijvende komma.
- Collectie – een collectie.
- Kaart – een associatieve array – een reeks paren waarmee u informatie per sleutel kunt krijgen.
Uitdrukkingen
De rekenkundige bewerkingen van optellen, aftrekken, vermenigvuldigen en delen worden toegepast. De logische uitdrukkingen “en”, “of”, gelijk aan, meer, minder, ongelijkheden, voorwaardelijke constructie “als … dan …” worden ook gebruikt.
Functies
Functies kunnen overal in het programma worden geplaatst en hebben verschillende namen. In totaal zijn 18 groepen wiskundige functies en functies beschikbaar om de waarden van tabellen en parameters, associatieve arrays, een lijst met tabellen en andere taken te verkrijgen. Eerste leerjaar:
- Wiskundige functies waarmee u de waarde van de sinus, cosinus, tangens, cotangens van het argument kunt retourneren, de exponent van het argument kunt berekenen, een willekeurig getal kunt genereren, enz.
- Algemene commando’s : NEW_GLOBAL om een globale variabele te initialiseren en MESSAGE om berichten te openen.
Functies om mee te werken:
- Collecties van objecten (Collectie) . Hiermee kunt u een nieuwe verzameling maken, het vereiste aantal elementen retourneren, de gewenste waarden vervangen of invoegen.
- Associatieve arrays (MAP) . Hulp bij het maken en beheren van de array.
- Bestanden – werken met tekstbestanden, een log-log van het programma bijhouden. De bestandsnaam kan het pad ernaar toe bevatten.
- Snaren .
- Grafieken . Functies GET_CANDLE om toegang te krijgen tot kaarsgegevens en GET_CANDLE EX om een associatieve array te retourneren.
- Toepassingen . Orders aanmaken en naar het handelssysteem sturen.
- Labels . Hun constructie en installatie op de kaart. Toevoegen, verwijderen van één of alle labels, ophalen en instellen van parameters voor een specifiek label.
Er zijn ook functies voor:
- Voor toegang tot rijen met willekeurige QUIK-tabellen en lijsten met beschikbare parameters . Toegang tot werkplektabelgegevens. Deze omvatten GET_ITEM om de MAP te retourneren en GET_NUMBER_OF om het aantal items te retourneren.
- Werken met een programmeerbare tabel . Deze commando’s werken op de EIGEN tafel. Het is leesbaar door de standaardfuncties uit de vorige paragraaf en door deze functies. Deze groep bevat opdrachten voor het toevoegen, wijzigen en verwijderen van een rij met een index en het volledig wissen van de OWN-tabel.
Gebruik om waarden te krijgen:
- Tabellen van lopende transacties . Parameters voor uitwisselingsinformatie ophalen met GET_PARAM (_EX)-opdrachten.
- Offerte ramen . Het verkrijgen van de waarden van instrumentcitaten.
- Tabellen met posities per instrument en geld . Het verkrijgen van gegevens over een klant, bedrijf, instrument, depo-rekening per code.
Servicefuncties – de datum van de huidige handelssessie retourneren, associatieve reeksen, huidige datum en tijd, de verbindingsstatus bepalen, de berekeningsmodus onderbreken.
Foutopsporingsprogramma’s
Stapsgewijze controle over de werking van het programma wordt uitgevoerd in het venster “Debug”. Het wordt geopend vanuit het contextmenu “Start berekening in debug-modus”. Het kan ook worden geopend met de opdracht breakpoint(), en de programmaregel wordt rood gemarkeerd. Het venster bevat velden met programmacode en variabele waarden. Onderaan het venster zijn er knoppen “Volgende stap”, “Doorgaan met uitvoering”, “Berekening stoppen”. Door op F5 te drukken gaat het programma verder, de combinatie Shift + F5 stopt met debuggen, de F10-toets leidt naar de volgende regel.
QPILE of LUA?
LUA is een nieuwe programmeertaal voor het maken van handelsrobots. Net als QPILE is het geïmplementeerd in de QUIK-terminal. https://articles.opexflow.com/programming/lua.htm Een site gewijd aan de ontwikkeling van handelsrobots voor handel toont de voordelen van de LUA-taal boven QPILE. Het kan dus functioneren als een niet-gecompileerd script en bytecode, uitgerust met ontwikkelaarstools en objectgeoriënteerde programmeermechanismen. Objecten die in andere programmeertalen zijn geschreven, kunnen worden gekoppeld aan LUA-programma’s. LUA biedt 8 datatypes, inclusief metatables. De LUA-taal is multi-threaded, snel en transacties en terminalgebeurtenissen zijn asynchroon. LUA komt vaker voor dan QPILE en er zijn veel extensies voor geschreven.
De QPILE-taal is nu verouderd. Experts op de forums raden het gebruik van LUA aan. Hoewel er nog steeds nuttige en effectieve programma’s worden gebruikt.
De taal QPILE is echter eenvoudig in vergelijking met LUA, dus als je geen ervaring hebt met programmeren, kun je beter voor QPILE kiezen. In deze taal kun je een eenvoudige robot schrijven als je geen ingewikkelde berekeningen hoeft uit te voeren.
Hoe maak je een handelsrobot op QPILE?
Om een handelsadviseur aan te maken, heeft u de volgende programma’s nodig:
- ITS Quik.
- Notepad++ code-editor.
- Gids voor QPILE.
- XML-plug-in voor codedetectie in Notepad++.
Download en installeer deze programma’s. Schakel de taalsyntaxis in door userDefineLang.xml in het pad C:\Users\User\ AppData\Roaming\Notepad++\ te plaatsen
Het blok “Gebruikersinstellingen” wordt aangevuld met de variabelen NUMBER en INTERVAL, die zullen worden gebruikt voor het verkrijgen van de laatste N staven. De DATETIME-functie stelt de serverdatum en -tijd in, en de huidige datum- en tijdfuncties CURDATE en CURTIME worden daaruit aangeroepen. De huidige tijd wordt geconverteerd naar een getal op regel 24. Regel 26 stelt de tijd in waarop het algoritme loopt van 10:00:01 tot 18:40:00 UTC.
Handelsrobots op QPILE – kant-en-klare oplossingen
voortschrijdend gemiddelde robot
Demorobot niet geschikt voor echte handel.
N. Moroshkin positiecalculator
Een programma voor het berekenen van de niveaus van de maximaal toegestane opname en het doel voor long- en shortposities tegen de huidige vraag- en biedprijzen. De niveaus worden berekend voor 2 waarden van het positie-invoervolume. De robot vindt het toegestane positievolume bij het toewijzen van een stoporder in één stap vanaf de openingsprijs met de berekening van het openen van een positie in de opwaartse richting van de balk. De gevonden niveaus worden ingevoerd in het terminalvenster, die vervolgens worden weergegeven in de prijsgrafiek. Transacties zijn vast voor een bepaald instrument. Als een positie wordt geopend, begint de robot zijn parameters te berekenen. Afhankelijk van de positiewijziging worden de toegewezen opdrachten aangepast.
Volumefilter
Een robotportfolio om het rekenkundig gemiddelde van het volume voor kaarsen te berekenen en te vergelijken met het gemiddelde product met de coëfficiënt X. Werkt correct met geplotte grafieken in een geselecteerde tijdsperiode.
Opties Grieken
Portfolio voor het berekenen en weergeven van “Grieken” van opties. Het verschilt van de Black-Showers-methode.
TRIX handelsrobot voor QUIK
Het programma is gebaseerd op de TRIX Indicator. Wanneer de indicator sluit boven de nullijn, het gespecificeerde niveau, neemt de robot de lange positie in. De positie wordt gesloten door Take Profit, Stop Loss of trailing stop.
M4 Preprocessor
Programma voor het werken met QPILE en Lua. Bevat archieven met uitvoerbare bestanden, documentatie en DLL-bestanden met parsing van reguliere expressies. Om het programma te gebruiken, moet u de uitvoerbare bestanden uitpakken en regexp2 in het C:\Windows-pad plaatsen. Lessen over QPILE voor QUIK: https://youtu.be/vMTXwDUujpI Een script installeren op QPILE in de Quik-terminal: https://youtu.be/0B7qL8Svh7I Een gedeelte over github dat het gebruik beschrijft van de algoritmische taal QPILE die is ingebouwd in de QUIK-systeemwerkstation op de link – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE is een verouderde taal, maar vrij eenvoudig en toegankelijk, zelfs voor beginnende handelaren. Handelsrobots en programma’s die zich al lang bewezen hebben, blijven eraan werken. Voor complexere taken is het echter beter om LUA te gebruiken.
0к