Linguaxe algorítmica QPILE para programar robots comerciais para QUIK

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

Linguaxe algorítmica QPILE para programar robots comerciais para QUIK.
Os robots comerciais pódense escribir nunha linguaxe específica, semellante ao código do programa. QPILE é un deles, este artigo considerará esta linguaxe, comparará as linguaxes QPILE e
LUA e tamén dará exemplos de robots nesta linguaxe.

Información xeral sobre QPILE

QPILE é unha abreviatura que significa QUIK Programmable Interface and Logic Environment.

Esta é unha serie de comandos interpretados pola estación de traballo QUIK. Úsase principalmente para calcular o prezo das carteiras de valores. A linguaxe tamén se usa para:

  • recálculo dinámico do prezo dos activos dos clientes no escritorio do corredor e nas súas carteiras. Neste último caso tamén se recalcula o seu prezo total;
  • atopar indicadores que faltan utilizando os seus propios algoritmos e datos para o préstamo de marxe;
  • desenvolver a estratexia comercial correcta.

A linguaxe describe a estrutura da táboa: o nomeamento de columnas e filas, fórmulas. Neste último, pódense utilizar para o cálculo operacións matemáticas, variables, datos doutras táboas. O código do programa cargado desde o servidor QUIK ou desde o disco do usuario é procesado polo intérprete de linguaxe, que calcula os valores nas fórmulas. As táboas dun programa teñen unha fonte de datos, pero os cálculos non se duplican e non afectan á eficiencia do sistema. Cando se traballa con táboas QUIK, as táboas en QPILE teñen funcións estándar. QUIK no lugar de traballo está equipado cun depurador de código QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm A linguaxe permitirache describir novas táboas cunha estrutura determinada, resaltar celas con determinados valores, calcular campos en función de expresións matemáticas e lóxicas. O usuario recibirá notificacións en forma de sinal sonoro ou mensaxe de texto. As táboas en QPILE pódense editar, imprimir, copiar, exportar a través do servidor ODBC e DDE. Os datos iniciais son das táboas QUIK:

  • transaccións, incluso para a execución e impersoais;
  • ordes, incluídas as ordes de parada, para operacións e ordes sen receita: informes para operacións en acordos de liquidación;
  • “cartera de clientes”, “comprar/vender”
  • datos das posicións do participante por diñeiro, contas comerciais, instrumento.

As táboas baseadas en QPILE non se poden copiar nun ficheiro de texto a través do menú contextual e exportarse a sistemas de análise técnica, e non se poden desenvolver gráficos baseados neles. As táboas baseadas en QPILE non se poden filtrar nin ordenar.

Traballar cunha mesa

Para cargar o código do programa, cómpre seleccionar o menú servizos e, a continuación, os scripts QPILE. Tamén pode usar a combinación Ctrl+F11. Despois de ter que facer clic en “Engadir” e seleccionar o ficheiro desexado. Ten unha extensión .qpl e o seu nome aparecerá na lista de Scripts dispoñibles.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIKSe hai un erro no programa, o sistema fará unha notificación na “Xanela de mensaxes”, que conterá o nome do ficheiro defectuoso e o número de liña co erro. Se non se atoparon fallos no ficheiro, indicaranse os seguintes datos nos campos:

  • nome da táboa;
  • número de columnas e clientes;
  • lista de identificadores e clientes;
  • a lista de parámetros e o código fonte do ficheiro.

Linguaxe algorítmica QPILE para programar robots comerciais para QUIKO botón “Descargar localmente” permitirache obter a táboa dun ficheiro, e “Cargar ao servidor” enviará o programa ao servidor para que todos os usuarios poidan acceder a el. Para crear unha táboa, fai clic en Crear táboa. No “Scripts dispoñibles” seleccione o programa que precisa executar, estableza o número de liñas a través do “Filtro de cliente”, defina as columnas necesarias e a súa secuencia.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIKPoñer en pausa e retomar o cálculo, iniciar o cálculo de novo e no modo de depuración, gardar a descrición nun ficheiro, demostrar a fórmula e os parámetros do script están dispoñibles no menú contextual.

Construcións QPILE

Tipos de datos

  • String – cadea.
  • Double é un número de coma flotante.
  • Colección – unha colección.
  • Mapa – unha matriz asociativa – unha secuencia de pares que permite obter información por clave.

Expresións

Aplícanse as operacións aritméticas de suma, resta, multiplicación e división. Tamén se empregan as expresións lóxicas “e”, “ou”, é igual, máis, menos, desigualdades, construción condicional “se … entón …”.

Funcións

As funcións pódense localizar en calquera lugar do programa e ter nomes diferentes. En total, están dispoñibles 18 grupos de funcións e funcións matemáticas para obter os valores de táboas e parámetros, matrices asociativas, unha lista de táboas e outras tarefas. Primeiro grao:

  1. Funcións matemáticas que permiten devolver o valor do seno, coseno, tanxente, cotanxente do argumento, calcular o expoñente do argumento, xerar un número aleatorio, etc.
  2. Comandos xerais : NEW_GLOBAL para inicializar unha variable global e MESSAGE para abrir mensaxes.

Funcións coas que traballar:

  • Coleccións de obxectos (Colección) . Permítenche crear unha nova colección, devolver o número necesario de elementos, substituír ou inserir os valores desexados.
  • Matrices asociativas (MAP) . Axuda a crear e xestionar a matriz.
  • Ficheiros – traballar con ficheiros de texto, mantendo un rexistro de rexistro do programa. O nome do ficheiro pode conter o camiño a el.
  • Cordas .
  • Gráficos . Funcións GET_CANDLE para acceder aos datos da vela e GET_CANDLE EX para devolver unha matriz asociativa.
  • Aplicacións . Creación de pedidos e envialos ao sistema de negociación.
  • Etiquetas . A súa construción e instalación no gráfico. Engadir, eliminar unha ou todas as etiquetas, obter e establecer parámetros para unha etiqueta específica.

Tamén hai funcións para:

  1. Para acceder a filas de táboas QUIK arbitrarias e listas de parámetros dispoñibles . Acceso aos datos da táboa do lugar de traballo. Estes inclúen GET_ITEM para devolver o MAP e GET_NUMBER_OF para devolver o número de entradas.
  2. Para traballar cunha táboa programable . Estes comandos operan na táboa PROPIA. É lexible polas funcións estándar do parágrafo anterior e por estas funcións. Este grupo inclúe comandos para engadir, modificar e eliminar unha fila cun índice e borrar completamente a táboa PROPIA.

Para obter valores use:

  1. Táboas de comercios actuais . Obtención de parámetros de información de intercambio mediante comandos GET_PARAM (_EX).
  2. Cotizar windows . Obtención dos valores das cotizacións do instrumento.
  3. Táboas de posicións por instrumentos e diñeiro . Obtención de datos dun cliente, empresa, instrumento, conta de depósito por código.

Funcións de servizo: devolver a data da sesión de negociación actual, series asociativas, data e hora actual, determinar o estado de conexión, interromper o modo de cálculo.

Programas de depuración

O control paso a paso sobre o funcionamento do programa realízase na xanela “Depurar”. Ábrese desde o menú contextual “Iniciar cálculo no modo de depuración”. Tamén se pode abrir co comando breakpoint() e a liña do programa resaltarase en vermello. A xanela contén campos con código de programa e valores variables. Na parte inferior da xanela hai botóns “Seguinte paso”, “Continuar execución”, “Deter cálculo”. Premendo F5 continuará a execución do programa, a combinación Shift + F5 deixará de depurar, a tecla F10 dirixirase á seguinte liña.

QPILE ou LUA?

LUA é unha nova linguaxe de programación para crear robots comerciais. Do mesmo xeito que QPILE, está implementado no terminal QUIK. https://articles.opexflow.com/programming/lua.htm Un sitio dedicado ao desenvolvemento de robots comerciais para o comercio mostra as vantaxes da linguaxe LUA sobre QPILE. Polo tanto, pode funcionar como un script e código de bytes sen compilar, equipado con ferramentas de desenvolvemento e mecanismos de programación orientada a obxectos. Os obxectos escritos noutras linguaxes de programación pódense conectar a programas LUA. LUA ofrece 8 tipos de datos, incluíndo metatáboas. A linguaxe LUA é multiproceso, rápida e as transaccións e os eventos do terminal son asíncronos. LUA é máis común que QPILE, e para el escribiuse moitas extensións.

A linguaxe QPILE xa está en desuso. Os expertos dos foros recomendan usar LUA. Aínda que aínda se están utilizando programas útiles e eficaces.

Non obstante, a linguaxe QPILE é sinxela en comparación coa LUA, polo que se non tes experiencia en programación, é mellor escoller QPILE. Neste idioma, podes escribir un robot sinxelo se non necesitas realizar cálculos complexos.

Como crear un robot comercial en QPILE?

Para crear un asesor comercial, necesitarás os seguintes programas:

  1. O SEU Quik.
  2. Editor de código Notepad++.
  3. Guía de QPILE.
  4. Plugin XML para a detección de código en Notepad++.

Descarga e instala estes programas. Activa a sintaxe do idioma colocando userDefineLang.xml na ruta C:\Users\User\AppData\Roaming\Notepad++\
Linguaxe algorítmica QPILE para programar robots comerciais para QUIKEn primeiro lugar, creemos a seguinte estratexia de negociación. O script debe calcular Hi e Low para as últimas velas cada minuto, verifique o prezo actual do instrumento. Ábrese unha posición na dirección requirida se o prezo do instrumento alcanza o valor máximo ou mínimo para o período. Cando se recibe un sinal abreviado, a posición longa péchase automaticamente. O robot usa a ferramenta GAZP, o período de tempo establécese en 1 min. A profundidade de medición alta-baixa está establecida en 5 velas. Para entrar Long, establécese unha regra e a intersección do prezo actual do valor máximo para o período. O robot entrará en Short se o prezo actual supera o valor mínimo destas 5 velas. Escribe un bloque de código en Notepad++ con configuración básica e data e hora do servidor. Este código móstrase na imaxe de abaixo.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIKAs primeiras 4 liñas de código forman a cabeceira do programa. Entre as liñas 6 e 44 está o corpo do programa, que contén o contido do robot. As liñas 7 – 12 conteñen configuracións de usuario, que inclúen os códigos do instrumento, grupo e cliente, o número de conta no MICEX. Estes valores non cambian durante a execución do programa. As liñas 13 – 16 son os valores iniciais das variables. Reiniciaranse a cero en cada paso de iteración. As liñas 17 – 21 conteñen unha indicación para usar a data e a hora do servidor. Estes datos pásanse á función DATETIME e convértense a formato de texto. As liñas 22 – 29 envían os datos recibidos á táboa. Hai que gardar o código e especificar a extensión qpl.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIKAbra o programa en QUIK premendo Ctrl+F10 e seleccionando o ficheiro qpl xerado. Use a combinación Ctrl+F11 para abrir a xanela “Traballar con carteiras” e configure o período de cálculo da carteira en 5 minutos. Preme Ctrl+F12 para configurar as columnas que se mostrarán na táboa. A imaxe mostra o resultado do traballo do robot.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIKEngademos algunhas funcións e condicións máis ao noso programa.
O bloque “Configuración de usuario” complétase coas variables NÚMERO e INTERVALO, que se utilizarán na función de obter as N últimas barras. A función DATETIME establece a data e a hora do servidor, e desde ela chámanse as funcións de data e hora actuais CURDATE e CURTIME. A hora actual convértese nun número na liña 24. A liña 26 establece a hora para que o algoritmo se execute de 10:00:01 a 18:40:00 UTC.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIK
Linguaxe algorítmica QPILE para programar robots comerciais para QUIK
Linguaxe algorítmica QPILE para programar robots comerciais para QUIKLinguaxe algorítmica QPILE para programar robots comerciais para QUIKNa maioría das veces, os indicadores, osciladores e cálculos estatísticos son calculados polas últimas N velas do gráfico. QPILE non ten unha función para recoller o número de velas hai N períodos como tal, pero hai unha función GET_CANDLE que accede ás velas no gráfico por data e hora en formato de texto. O noso código contén a función para obter as últimas N barras OHLC(). Crea unha colección cos parámetros das últimas velas aniñadas na lista COLECCIÓN. O programa comproba o valor INTERVAL, e se non está dentro do intervalo 0…60, móstrase unha mensaxe de que o valor non se corresponde co intervalo permitido. Na liña 88 créase unha colección de MAPA con velas. Un bucle FOR que examina o gráfico ata a profundidade necesaria co paso INTERVAL desde a vela nova á antiga. Na liña 90, despois de que se declara o ciclo, o robot retrocede un intervalo. Cando recibes unha vela con GET_CANDLE, colócao na colección BARLIST usando a función INSERT_COLLECTION_TEAM. Como resultado da operación do comando OHLC(), BARLIST enchégase coas últimas velas do gráfico de instrumentos na cantidade de NUMBER. O número de elementos da colección é solicitado polo comando GET_COLLECTION_COUNT() e indicado pola variable BARCOUNT. A data do servidor, a hora, os valores das variables INSTRUMENT e BARCOUNT son informados pola función SET_VALUE() en OUTPUT. Esta matriz é creada polo comando CREATE_MAP(). Os datos caen na táboa personalizada, que se pode ver na foto de abaixo. os valores das variables INSTRUMENT e BARCOUNT son informados pola función SET_VALUE() en OUTPUT. Esta matriz é creada polo comando CREATE_MAP(). Os datos caen na táboa personalizada, que se pode ver na foto de abaixo. os valores das variables INSTRUMENT e BARCOUNT son informados pola función SET_VALUE() en OUTPUT. Esta matriz é creada polo comando CREATE_MAP(). Os datos caen na táboa personalizada, que se pode ver na foto de abaixo.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIK

Robots comerciais en QPILE: solucións preparadas

Robot medio móbil

O robot de demostración non é adecuado para o comercio real.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIKO robot inclúe 5 parámetros. Os valores dos identificadores DATE, TIME, PRICE están definidos no nivel 30. Os identificadores MOVING e TP están configurados con precisión cero. Código de robot na media móbil escrito en QPILE:

Calculadora de posición N. Moroshkin

Un programa para calcular os niveis de retirada máxima permitida e o obxectivo de posicións longas e curtas a prezos de compra e oferta actuais. Os niveis calcúlanse para 2 valores do volume de entrada de posición. O robot atopa o volume de posición permitido ao asignar unha orde de parada nun paso do prezo de apertura co cálculo de abrir unha posición na dirección ascendente da barra. Os niveis atopados introdúcense na xanela do terminal, que posteriormente se reflicten no gráfico de prezos. As transaccións están fixadas para un determinado instrumento. Se se abre unha posición, o robot comeza a calcular os seus parámetros. En función do cambio de posición, axústanse as ordes asignadas.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIK
Linguaxe algorítmica QPILE para programar robots comerciais para QUIK

Filtro de volume

Un robot-cartera para calcular a media aritmética do volume das velas e comparala co produto medio polo coeficiente X. Traballa correctamente con gráficos representados nun período de tempo seleccionado.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIK

Opcións gregos

Carteira para calcular e mostrar “gregos” de opcións. Diferénciase do método Black-Showers.
Linguaxe algorítmica QPILE para programar robots comerciais para QUIK

Robot comercial TRIX para QUIK

O programa baséase no indicador TRIX. Cando o indicador se pecha por riba da liña cero, o nivel especificado, o robot toma a posición Long. A posición é pechada por Take Profit, Stop Loss ou trailing stop.

Preprocesador M4

Programa para traballar con QPILE e Lua. Inclúe arquivos con ficheiros executables, documentación e ficheiros DLL con análise de expresións regulares. Para usar o programa, cómpre desempaquetar os ficheiros executables e colocar regexp2 na ruta C:\Windows. Leccións sobre QPILE para QUIK: https://youtu.be/vMTXwDUujpI Instalación dun script en QPILE no terminal Quik: https://youtu.be/0B7qL8Svh7I Unha sección sobre github que describe o uso da linguaxe algorítmica QPILE integrada no Estación de traballo do sistema QUIK situada na ligazón – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE é unha linguaxe obsoleta, pero bastante sinxela e accesible incluso para comerciantes novatos. Os robots comerciais e os programas que se demostraron durante moito tempo seguen traballando nel. Non obstante, para tarefas máis complexas é mellor usar LUA.

info
Rate author
Add a comment

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

    Reply