Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIK

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

Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIK.
I robot di trading possono essere scritti in un linguaggio specifico, simile al codice del programma. QPILE è uno di questi, questo articolo considererà questo linguaggio, confronterà i linguaggi QPILE e
LUA e fornirà anche esempi di robot in questo linguaggio.

Informazioni generali su QPILE

QPILE è un’abbreviazione che sta per QUIK Programmable Interface and Logic Environment.

Questa è una serie di comandi interpretati dalla workstation QUIK. Viene utilizzato principalmente per calcolare il prezzo di portafogli di titoli. La lingua viene utilizzata anche per:

  • ricalcolo dinamico del prezzo degli asset dei clienti sul desktop del broker e nei loro portafogli. In quest’ultimo caso viene ricalcolato anche il loro prezzo totale;
  • trovare gli indicatori mancanti utilizzando i propri algoritmi e dati per il prestito a margine;
  • sviluppare la giusta strategia di trading.

Il linguaggio descrive la struttura della tabella: la nomina di colonne e righe, formule. In quest’ultimo, per il calcolo possono essere utilizzate operazioni matematiche, variabili, dati di altre tabelle. Il codice del programma caricato dal server QUIK o dal disco dell’utente viene elaborato dall’interprete di lingua, che calcola i valori nelle formule. Le tabelle di un programma hanno un’origine dati, ma i calcoli non sono duplicati e non influiscono sull’efficienza del sistema. Quando si lavora con le tabelle QUIK, le tabelle su QPILE hanno funzioni standard. QUIK sul posto di lavoro è dotato di un debugger di codice QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Il linguaggio ti permetterà di descrivere nuove tabelle con una determinata struttura, evidenziare celle con determinati valori, calcolare campi in base a espressioni matematiche e logiche. L’utente riceverà notifiche sotto forma di segnale acustico o messaggio di testo. Le tabelle su QPILE possono essere modificate, stampate, copiate, esportate tramite server ODBC e DDE. I dati iniziali provengono dalle tabelle QUIK:

  • transazioni, anche di esecuzione e impersonali;
  • ordini, compresi gli ordini stop, per operazioni e ordini over-the-counter – rapporti per operazioni in accordi con regolamento;
  • “portafoglio clienti”, “compra/vendi”
  • dati dalle posizioni del partecipante per denaro, conti di trading, strumento.

Le tabelle basate su QPILE non possono essere copiate in un file di testo tramite il menu contestuale ed esportate in sistemi di analisi tecnica e non è possibile sviluppare grafici sulla base di esse. Le tabelle basate su QPILE non possono essere filtrate o ordinate.

Lavorare con un tavolo

Per caricare il codice del programma, è necessario selezionare il menu dei servizi, quindi gli script QPILE. Puoi anche usare la combinazione Ctrl+F11. Dopo è necessario fare clic su “Aggiungi” e selezionare il file desiderato. Ha un’estensione .qpl e il suo nome apparirà nell’elenco degli script disponibili.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKSe c’è un errore nel programma, il sistema farà una notifica nella “Finestra dei messaggi”, che conterrà il nome del file difettoso e il numero di riga con l’errore. Se non sono stati rilevati errori nel file, nei campi verranno indicati i seguenti dati:

  • nome della tabella;
  • numero di colonne e client;
  • elenco di identificatori e client;
  • l’elenco dei parametri e il codice sorgente del file.

Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKIl pulsante “Scarica in locale” ti consentirà di ottenere la tabella da un file e “Carica sul server” invierà il programma al server in modo che tutti gli utenti possano accedervi. Per creare una tabella, fare clic su Crea tabella. Nella sezione “Script disponibili” selezionare il programma che si desidera eseguire, impostare il numero di righe tramite il “Filtro client”, definire le colonne desiderate e la loro sequenza.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKNel menu contestuale sono disponibili la sospensione e la ripresa del calcolo, il riavvio del calcolo e in modalità debug, il salvataggio della descrizione in un file, la dimostrazione della formula e i parametri dello script.

Costrutti QPILE

Tipi di dati

  • Stringa – stringa.
  • Double è un numero in virgola mobile.
  • Collezione – una collezione.
  • Mappa – un array associativo – una sequenza di coppie che consente di ottenere informazioni per chiave.

Espressioni

Vengono applicate le operazioni aritmetiche di addizione, sottrazione, moltiplicazione, divisione. Vengono utilizzate anche le espressioni logiche “e”, “o”, uguale, più, meno, disuguaglianze, costruzione condizionale “se … allora …”.

Funzioni

Le funzioni possono trovarsi in qualsiasi punto del programma e avere nomi diversi. In totale, sono disponibili 18 gruppi di funzioni e funzioni matematiche per ottenere i valori di tabelle e parametri, array associativi, un elenco di tabelle e altre attività. Primo grado:

  1. Funzioni matematiche che consentono di restituire il valore del seno, coseno, tangente, cotangente dell’argomento, calcolare l’esponente dell’argomento, generare un numero casuale, ecc.
  2. Comandi generali : NEW_GLOBAL per inizializzare una variabile globale e MESSAGE per aprire i messaggi.

Funzioni con cui lavorare:

  • Collezioni di oggetti (Collezione) . Consentono di creare una nuova collezione, restituire il numero di elementi richiesto, sostituire o inserire i valori desiderati.
  • Array associativi (MAP) . Aiuta a creare e gestire l’array.
  • File : lavorare con file di testo, mantenere un registro del programma. Il nome del file può contenere il percorso ad esso.
  • Stringhe .
  • Grafici . Funzioni GET_CANDLE per accedere ai dati della candela e GET_CANDLE EX per restituire un array associativo.
  • Applicazioni . Creazione di ordini e invio al sistema di trading.
  • Tag . La loro costruzione e installazione sul grafico. Aggiunta, eliminazione di una o tutte le etichette, recupero e impostazione dei parametri per un’etichetta specifica.

Ci sono anche funzioni per:

  1. Per accedere a righe di tabelle QUIK arbitrarie ed elenchi di parametri disponibili . Accesso ai dati della tabella di lavoro. Questi includono GET_ITEM per restituire la MAPPA e GET_NUMBER_OF per restituire il numero di voci.
  2. Per lavorare con una tabella programmabile . Questi comandi operano sulla tabella OWN. È leggibile dalle funzioni standard del paragrafo precedente e da queste funzioni. Questo gruppo include comandi per aggiungere, modificare ed eliminare una riga con un indice e cancellare completamente la tabella PROPRIA.

Per ottenere valori usa:

  1. Tabelle dei mestieri correnti . Ottenere i parametri delle informazioni di scambio utilizzando i comandi GET_PARAM (_EX).
  2. Preventivo finestre . Ottenere i valori delle quotazioni degli strumenti.
  3. Tabelle delle posizioni per strumenti e denaro . Ottenere dati su un cliente, azienda, strumento, conto deposito per codice.

Funzioni di servizio – restituzione della data della sessione di negoziazione corrente, serie associativa, data e ora correnti, determinazione dello stato della connessione, interruzione della modalità di calcolo.

Programmi di debug

Il controllo passo passo sul funzionamento del programma viene eseguito nella finestra “Debug”. Si apre dal menu contestuale “Avvia calcolo in modalità debug”. Può anche essere aperto con il comando breakpoint() e la riga del programma verrà evidenziata in rosso. La finestra contiene campi con codice programma e valori variabili. Nella parte inferiore della finestra sono presenti i pulsanti “Passo successivo”, “Continua esecuzione”, “Interrompi calcolo”. Premendo F5 si proseguirà l’esecuzione del programma, la combinazione Maiusc + F5 interromperà il debug, il tasto F10 indirizzerà alla riga successiva.

QPILE o LUA?

LUA è un nuovo linguaggio di programmazione per la creazione di robot di trading. Come QPILE, è implementato nel terminale QUIK. https://articles.opexflow.com/programming/lua.htm Un sito dedicato allo sviluppo di robot di trading per il trading mostra i vantaggi del linguaggio LUA rispetto a QPILE. Quindi, può funzionare come uno script e un bytecode non compilato, dotato di strumenti di sviluppo e meccanismi di programmazione orientati agli oggetti. Oggetti scritti in altri linguaggi di programmazione possono essere collegati a programmi LUA. LUA fornisce 8 tipi di dati, inclusi i metatables. Il linguaggio LUA è multi-thread, veloce e le transazioni e gli eventi del terminale sono asincroni. LUA è più comune di QPILE e per esso sono state scritte molte estensioni.

Il linguaggio QPILE è ora deprecato. Gli esperti dei forum consigliano di utilizzare LUA. Sebbene vengano ancora utilizzati programmi utili ed efficaci.

Tuttavia, il linguaggio QPILE è semplice rispetto a LUA, quindi se non hai esperienza di programmazione, è meglio scegliere QPILE. In questa lingua puoi scrivere un semplice robot se non hai bisogno di eseguire calcoli complessi.

Come creare un robot di trading su QPILE?

Per creare un consulente commerciale, avrai bisogno dei seguenti programmi:

  1. È Quik.
  2. Editor di codice Notepad++.
  3. Guida a QPILE.
  4. Plugin XML per il rilevamento del codice in Notepad++.

Scarica e installa questi programmi. Abilita la sintassi della lingua inserendo userDefineLang.xml nel percorso C:\Utenti\Utente\AppData\Roaming\Notepad++\
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKPer prima cosa, creiamo la seguente strategia di trading. Lo script dovrebbe calcolare Hi e Low per le ultime candele ogni minuto, controllare il prezzo corrente dello strumento. Una posizione viene aperta nella direzione richiesta se il prezzo dello strumento raggiunge il valore massimo o minimo per il periodo. Quando viene ricevuto un segnale per short, la posizione long viene automaticamente chiusa. Il robot utilizza lo strumento GAZP, l’intervallo di tempo è impostato su 1 min. La profondità di misurazione hi-low è impostata su 5 candele. Per inserire Long, viene impostata una regola e l’intersezione del prezzo corrente del valore massimo per il periodo. Il robot entrerà in Short se il prezzo corrente supera il valore minimo per queste 5 candele. Scrivi un blocco di codice in Notepad++ con le impostazioni di base e la data e l’ora del server. Questo codice è mostrato nell’immagine qui sotto.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKLe prime 4 righe di codice formano l’intestazione del programma. Tra le righe 6 e 44 c’è il corpo del programma, che contiene il contenuto del robot. Le righe 7 – 12 contengono le impostazioni utente, che includono i codici dello strumento, del gruppo e del cliente, il numero di conto sul MICEX. Questi valori non cambiano durante l’esecuzione del programma. Le righe 13 – 16 sono i valori iniziali delle variabili. Verranno ripristinati a zero ad ogni passaggio di iterazione. Le righe 17 – 21 contengono un’indicazione per utilizzare la data e l’ora del server. Questi dati vengono passati alla funzione DATETIME e convertiti in formato testo. Le righe 22 – 29 inviano i dati ricevuti alla tabella. Il codice deve essere salvato e l’estensione qpl deve essere specificata.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKApri il programma in QUIK premendo Ctrl+F10 e selezionando il file qpl generato. Utilizzare la combinazione Ctrl+F11 per aprire la finestra “Lavora con i portfolio” e impostare il periodo di calcolo del portfolio su 5 minuti. Premere Ctrl+F12 per impostare le colonne da visualizzare nella tabella. L’immagine mostra il risultato del lavoro del robot.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKAggiungiamo alcune altre funzioni e condizioni al nostro programma.
Il blocco “Impostazioni utente” è integrato con le variabili NUMBER e INTERVAL, che verranno utilizzate nella funzione di ottenere le ultime N barre. La funzione DATETIME imposta la data e l’ora del server e da essa vengono richiamate le funzioni di data e ora correnti CURDATE e CURTIME. L’ora corrente viene convertita in un numero sulla riga 24. La riga 26 imposta l’ora per l’esecuzione dell’algoritmo dalle 10:00:01 alle 18:40:00 UTC.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIK
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIK
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKLinguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKMolto spesso, indicatori, oscillatori, calcoli statistici vengono calcolati dalle ultime N candele del grafico. QPILE non ha una funzione per raccogliere il numero di candele N periodi fa in quanto tale, ma esiste una funzione GET_CANDLE che accede alle candele sul grafico per data e ora in formato testo. Il nostro codice contiene la funzione per ottenere le ultime N barre OHLC(). Crea una collezione con i parametri delle ultime candele annidate nella lista COLLEZIONE. Il programma verifica il valore dell’INTERVALLO e, se non rientra nel range 0…60, viene visualizzato un messaggio che indica che il valore non corrisponde al range consentito. Nella riga 88 viene creata una raccolta MAP con candele. Un ciclo FOR che esegue il polling del grafico alla profondità richiesta con il passaggio INTERVAL dalla nuova candela alla vecchia. Nella riga 90, dopo che il ciclo è stato dichiarato, il robot torna indietro di un intervallo. Quando ottieni una candela con GET_CANDLE, posizionalo nella raccolta BARLIST utilizzando la funzione INSERT_COLLECTION_TEAM. Come risultato dell’operazione del comando OHLC(), BARLIST viene rifornito con le ultime candele del grafico dello strumento per un importo pari a NUMBER. Il numero di elementi nella raccolta è richiesto dal comando GET_COLLECTION_COUNT() e riportato dalla variabile BARCOUNT. La data del server, l’ora, i valori delle variabili INSTRUMENT e BARCOUNT sono riportati dalla funzione SET_VALUE() in OUTPUT. Questa matrice viene creata dal comando CREATE_MAP(). I dati cadono nella tabella personalizzata, che si può vedere nella foto qui sotto. i valori delle variabili INSTRUMENT e BARCOUNT sono riportati dalla funzione SET_VALUE() in OUTPUT. Questa matrice viene creata dal comando CREATE_MAP(). I dati cadono nella tabella personalizzata, che si può vedere nella foto qui sotto. i valori delle variabili INSTRUMENT e BARCOUNT sono riportati dalla funzione SET_VALUE() in OUTPUT. Questa matrice viene creata dal comando CREATE_MAP(). I dati cadono nella tabella personalizzata, che si può vedere nella foto qui sotto.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIK

Robot commerciali su QPILE – soluzioni già pronte

Robot medio mobile

Robot demo non adatto al trading reale.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIKIl robot include 5 parametri. I valori degli identificatori DATE, TIME, PRICE sono impostati al livello 30. Gli identificatori MOVING e TP sono impostati su precisione zero. Codice robot su media mobile scritto sotto QPILE:

Calcolatore di posizione N. Moroshkin

Un programma per calcolare i livelli del drawdown massimo consentito e l’obiettivo per le posizioni long e short ai prezzi ask e bid correnti. I livelli sono calcolati per 2 valori del volume di ingresso della posizione. Il robot trova il volume di posizione consentito quando assegna un ordine stop in un passaggio dal prezzo di apertura con il calcolo dell’apertura di una posizione nella direzione verso l’alto della barra. I livelli trovati vengono inseriti nella finestra del terminale, che si riflette successivamente nel grafico dei prezzi. Le transazioni sono fisse per un determinato strumento. Se viene aperta una posizione, il robot inizia a calcolarne i parametri. A seconda del cambio di posizione, gli ordini assegnati vengono adeguati.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIK
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIK

Filtro volume

Un portafoglio robot per calcolare la media aritmetica del volume per candele e confrontarla con il prodotto medio per il coefficiente X. Funziona correttamente con grafici tracciati in un periodo di tempo selezionato.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIK

Opzioni Greci

Portafoglio per il calcolo e la visualizzazione di “greci” di opzioni. Si differenzia dal metodo Black-Showers.
Linguaggio algoritmico QPILE per la programmazione di robot commerciali per QUIK

Robot commerciale TRIX per QUIK

Il programma si basa sull’indicatore TRIX. Quando l’indicatore si chiude al di sopra della linea dello zero, il livello specificato, il robot assume la posizione Long. La posizione viene chiusa da Take Profit, Stop Loss o trailing stop.

Preprocessore M4

Programma per lavorare con QPILE e Lua. Include archivi con file eseguibili, documentazione e file DLL con analisi di espressioni regolari. Per utilizzare il programma, è necessario decomprimere i file eseguibili e posizionare regexp2 nel percorso C:\Windows. Lezioni su QPILE per QUIK: https://youtu.be/vMTXwDUujpI Installazione di uno script su QPILE nel terminale di Quik: https://youtu.be/0B7qL8Svh7I Una sezione su github che descrive l’uso del linguaggio algoritmico QPILE integrato nel Workstation di sistema QUIK situata al link – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE è un linguaggio obsoleto, ma abbastanza semplice e accessibile anche ai trader alle prime armi. Robot commerciali e programmi che si sono dimostrati validi da molto tempo continuano a lavorarci. Tuttavia, per compiti più complessi è meglio usare LUA.

info
Rate author
Add a comment

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

    Rispondi