Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIK

Программирование

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

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.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKAls er een fout in het programma zit, zal het systeem een ​​melding maken in het “Berichtenvenster”, die de naam van het defecte bestand en het regelnummer met de fout zal bevatten. Als er geen fouten in het bestand zijn gevonden, worden de volgende gegevens in de velden weergegeven:

  • tafel naam;
  • aantal kolommen en klanten;
  • lijst met identificatiegegevens en klanten;
  • de lijst met parameters en de broncode van het bestand.

Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKMet de knop “Lokaal downloaden” kunt u de tabel uit een bestand halen en “Uploaden naar server” stuurt het programma naar de server zodat alle gebruikers er toegang toe hebben. Klik op Tabel maken om een ​​tabel te maken. Selecteer in de “Beschikbare scripts” het programma dat u moet uitvoeren, stel het aantal regels in via het “Clientfilter”, definieer de vereiste kolommen en hun volgorde.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKDe berekening pauzeren en hervatten, de berekening opnieuw starten en in debug-modus, de beschrijving opslaan in een bestand, de formule demonstreren en scriptparameters zijn beschikbaar in het contextmenu.

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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. Tabellen van lopende transacties . Parameters voor uitwisselingsinformatie ophalen met GET_PARAM (_EX)-opdrachten.
  2. Offerte ramen . Het verkrijgen van de waarden van instrumentcitaten.
  3. 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:

  1. ITS Quik.
  2. Notepad++ code-editor.
  3. Gids voor QPILE.
  4. 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
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKLaten we eerst de volgende handelsstrategie maken. Het script zou elke minuut Hi en Low moeten berekenen voor de laatste paar kaarsen, controleer de huidige prijs van het instrument. Een positie wordt in de vereiste richting geopend als de prijs van het instrument de maximale of minimale waarde voor de periode bereikt. Wanneer een signaal voor short wordt ontvangen, wordt de long-positie automatisch gesloten. De robot gebruikt de GAZP-tool, het tijdsbestek is ingesteld op 1 minuut. De hi-low meetdiepte is ingesteld op 5 kaarsen. Om Long in te voeren, wordt een regel ingesteld en het snijpunt van de huidige prijs van de maximale waarde voor de periode. De robot gaat Short binnen als de huidige prijs de minimumwaarde voor deze 5 kaarsen overschrijdt. Schrijf een codeblok in Notepad++ met basisinstellingen en serverdatum en tijd. Deze code wordt weergegeven in de onderstaande afbeelding.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKDe eerste 4 regels code vormen de programmakop. Tussen regel 6 en 44 bevindt zich de hoofdtekst van het programma, dat de inhoud van de robot bevat. Regels 7 – 12 bevatten gebruikersinstellingen, waaronder de codes van het instrument, de groep en de cliënt, het rekeningnummer op de MICEX. Deze waarden veranderen niet tijdens de uitvoering van het programma. Regels 13 – 16 zijn de beginwaarden van de variabelen. Ze worden bij elke iteratie opnieuw op nul gezet. Regels 17 – 21 bevatten een indicatie om de serverdatum en -tijd te gebruiken. Deze gegevens worden doorgegeven aan de DATETIME-functie en geconverteerd naar tekstformaat. Regels 22 – 29 sturen de ontvangen gegevens naar de tafel. De code moet worden opgeslagen en de qpl-extensie moet worden opgegeven.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKOpen het programma in QUIK door op Ctrl+F10 te drukken en het gegenereerde qpl-bestand te selecteren. Gebruik de combinatie Ctrl+F11 om het venster “Werken met portfolio’s” te openen en stel de berekeningsperiode van de portfolio in op 5 minuten. Druk op Ctrl+F12 om de kolommen in te stellen die in de tabel moeten worden weergegeven. De afbeelding toont het resultaat van het werk van de robot.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKLaten we nog een paar functies en voorwaarden aan ons programma toevoegen.
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.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIK
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIK
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKAlgoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKMeestal worden indicatoren, oscillatoren en statistische berekeningen berekend door de laatste N-kaarsen van de grafiek. QPILE heeft geen functie voor het verzamelen van het aantal kaarsen N perioden geleden als zodanig, maar er is een GET_CANDLE-functie die kaarsen op de kaart benadert op datum en tijd in tekstformaat. Onze code bevat de functie om de laatste N bars OHLC() te krijgen. Het creëert een verzameling met de parameters van de laatste kaarsen die in de COLLECTIE-lijst zijn genest. Het programma controleert de INTERVAL-waarde en als deze niet binnen het bereik 0…60 valt, wordt een bericht weergegeven dat de waarde niet overeenkomt met het toegestane bereik. Een MAP-verzameling met kaarsen wordt gemaakt in regel 88. Een FOR-lus die de kaart naar de vereiste diepte peilt met de INTERVAL-stap van de nieuwe naar de oude kaars. In regel 90, nadat de cyclus is aangegeven, gaat de robot een interval terug. Als je een kaars krijgt met GET_CANDLE, plaats het in de BARLIST-verzameling met behulp van de INSERT_COLLECTION_TEAM-functie. Als resultaat van de bewerking van het OHLC()-commando, wordt BARLIST aangevuld met de laatste kaarsen uit de instrumentenkaart in een hoeveelheid van NUMBER. Het aantal elementen in de verzameling wordt opgevraagd door de opdracht GET_COLLECTION_COUNT() en gerapporteerd door de variabele BARCOUNT. Serverdatum, tijd, waarden van INSTRUMENT- en BARCOUNT-variabelen worden gerapporteerd door de functie SET_VALUE() in OUTPUT. Deze array wordt gemaakt door de opdracht CREATE_MAP(). De gegevens vallen in de aangepaste tabel, die te zien is op de onderstaande foto. de waarden van de variabelen INSTRUMENT en BARCOUNT worden gerapporteerd door de functie SET_VALUE() in OUTPUT. Deze array wordt gemaakt door de opdracht CREATE_MAP(). De gegevens vallen in de aangepaste tabel, die te zien is op de onderstaande foto. de waarden van de variabelen INSTRUMENT en BARCOUNT worden gerapporteerd door de functie SET_VALUE() in OUTPUT. Deze array wordt gemaakt door de opdracht CREATE_MAP(). De gegevens vallen in de aangepaste tabel, die te zien is op de onderstaande foto.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIK

Handelsrobots op QPILE – kant-en-klare oplossingen

voortschrijdend gemiddelde robot

Demorobot niet geschikt voor echte handel.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIKDe robot bevat 5 parameters. DATUM, TIJD, PRIJS identifier waarden zijn ingesteld op niveau 30. MOVING en TP identifiers zijn ingesteld op nul precisie. Robotcode op voortschrijdend gemiddelde geschreven onder QPILE: [galerijkolommen=”5″ ids=”14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907″]

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.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIK
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIK

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.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIK

Opties Grieken

Portfolio voor het berekenen en weergeven van “Grieken” van opties. Het verschilt van de Black-Showers-methode.
Algoritmische taal QPILE voor het programmeren van handelsrobots voor QUIK

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.

info
Rate author
Add a comment

  1. Владимир Геннадьевич Евсеев

    Beantwoorden