Lenguaje algorítmico QPILE para programar robots comerciales para QUIK

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

Lenguaje algorítmico QPILE para programar robots comerciales para QUIK.
Los robots comerciales se pueden escribir en un lenguaje específico, similar al código del programa. QPILE es uno de ellos, este artículo considerará este lenguaje, comparará los lenguajes QPILE y
LUA y también dará ejemplos de robots en este lenguaje.

Información general sobre QPILE

QPILE es una abreviatura que significa QUIK Programmable Interface and Logic Environment.

Esta es una serie de comandos interpretados por la estación de trabajo QUIK. Se utiliza principalmente para calcular el precio de las carteras de valores. El lenguaje también se usa para:

  • recálculo dinámico del precio de los activos de los clientes en el escritorio del corredor y en sus carteras. En este último caso, también se recalcula su precio total;
  • encontrar indicadores faltantes utilizando sus propios algoritmos y datos para préstamos de margen;
  • desarrollar la estrategia comercial adecuada.

El lenguaje describe la estructura de la tabla: el nombramiento de columnas y filas, fórmulas. En este último, se pueden utilizar operaciones matemáticas, variables, datos de otras tablas para el cálculo. El código del programa cargado desde el servidor QUIK o desde el disco del usuario es procesado por el intérprete de lenguaje, que calcula los valores en las fórmulas. Las tablas de un programa tienen una fuente de datos, pero los cálculos no se duplican y no afectan la eficiencia del sistema. Cuando se trabaja con tablas QUIK, las tablas en QPILE tienen funciones estándar. QUIK en el lugar de trabajo está equipado con un depurador de código QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm El lenguaje le permitirá describir nuevas tablas con una estructura dada, resaltar celdas con ciertos valores, calcular campos basados ​​en expresiones matemáticas y lógicas. El usuario recibirá notificaciones en forma de señal sonora o mensaje de texto. Las tablas en QPILE se pueden editar, imprimir, copiar y exportar a través del servidor ODBC y DDE. Los datos iniciales son de las tablas QUIK:

  • transacciones, incluidas las de ejecución e impersonales;
  • órdenes, incluidas órdenes de detención, para transacciones extrabursátiles y órdenes: informes para transacciones en acuerdos de liquidación;
  • «cartera de clientes», «comprar/vender»
  • datos de las posiciones del participante por dinero, cuentas comerciales, instrumento.

Las tablas basadas en QPILE no se pueden copiar a un archivo de texto a través del menú contextual y exportar a sistemas de análisis técnico, y los gráficos no se pueden desarrollar en base a ellos. Las tablas basadas en QPILE no se pueden filtrar ni ordenar.

Trabajando con una mesa

Para cargar el código del programa, debe seleccionar el menú de servicios, luego los scripts QPILE. También puede utilizar la combinación Ctrl+F11. Después, debe hacer clic en «Agregar» y seleccionar el archivo deseado. Tiene una extensión .qpl y su nombre aparecerá en la lista de Scripts disponibles.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK Si hay un error en el programa, el sistema hará una notificación en la «Ventana de mensaje», que contendrá el nombre del archivo defectuoso y el número de línea con el error. Si no se encontraron fallas en el archivo, en los campos se indicarán los siguientes datos:

  • nombre de la tabla;
  • número de columnas y clientes;
  • lista de identificadores y clientes;
  • la lista de parámetros y el código fuente del archivo.

Lenguaje algorítmico QPILE para programar robots comerciales para QUIK El botón «Descargar localmente» le permitirá obtener la tabla desde un archivo, y «Subir al servidor» enviará el programa al servidor para que todos los usuarios puedan acceder a él. Para crear una tabla, haga clic en Crear tabla. En «Scripts disponibles», seleccione el programa que necesita ejecutar, configure el número de líneas a través del «Filtro de cliente», defina las columnas requeridas y su secuencia.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK Pausar y reanudar el cálculo, comenzar el cálculo nuevamente y en modo de depuración, guardar la descripción en un archivo, demostrar la fórmula y los parámetros del script están disponibles en el menú contextual.

Construcciones QPILE

Tipos de datos

  • Cadena – cadena.
  • El doble es un número de punto flotante.
  • Colección – una colección.
  • Mapa: una matriz asociativa: una secuencia de pares que le permite obtener información por clave.

Expresiones

Se aplican las operaciones aritméticas de suma, resta, multiplicación, división. También se utilizan las expresiones lógicas “y”, “o”, igual, más, menos, desigualdades, construcción condicional “si…entonces…”.

Funciones

Las funciones se pueden ubicar en cualquier parte del programa y tener diferentes nombres. En total, hay disponibles 18 grupos de funciones y funciones matemáticas para obtener los valores de tablas y parámetros, matrices asociativas, una lista de tablas y otras tareas. Primer grado:

  1. Funciones matemáticas que permiten devolver el valor del seno, coseno, tangente, cotangente del argumento, calcular el exponente del argumento, generar un número aleatorio, etc.
  2. Comandos generales : NEW_GLOBAL para inicializar una variable global y MESSAGE para abrir mensajes.

Funciones para trabajar con:

  • Colecciones de objetos (Colección) . Le permiten crear una nueva colección, devolver la cantidad requerida de elementos, reemplazar o insertar los valores deseados.
  • Matrices Asociativas (MAP) . Ayuda para crear y administrar la matriz.
  • Archivos : trabajar con archivos de texto, mantener un registro del programa. El nombre del archivo puede contener la ruta al mismo.
  • cuerdas _
  • gráficos _ Funciones GET_CANDLE para acceder a datos de velas y GET_CANDLE EX para devolver una matriz asociativa.
  • Aplicaciones _ Crear órdenes y enviarlas al sistema de negociación.
  • etiquetas _ Su construcción e instalación en el gráfico. Agregar, eliminar una o todas las etiquetas, obtener y configurar parámetros para una etiqueta específica.

También hay funciones para:

  1. Para acceder a filas de tablas QUIK arbitrarias y listas de parámetros disponibles . Acceso a los datos de la tabla del lugar de trabajo. Estos incluyen GET_ITEM para devolver el MAP y GET_NUMBER_OF para devolver el número de entradas.
  2. Para trabajar con una mesa programable . Estos comandos operan en la tabla OWN. Es legible por las funciones estándar del párrafo anterior y por estas funciones. Este grupo incluye comandos para agregar, modificar y eliminar una fila con un índice y borrar completamente la tabla PROPIA.

Para obtener valores usa:

  1. Tablas de transacciones actuales . Obtención de parámetros de información de intercambio mediante comandos GET_PARAM (_EX).
  2. Ventanas de cotización . Obtención de los valores de las cotizaciones de los instrumentos.
  3. Tablas de posiciones por instrumentos y dinero . Obtención de datos de un cliente, empresa, instrumento, cuenta de depósito por código.

Funciones de servicio: devolución de la fecha de la sesión de negociación actual, serie asociativa, fecha y hora actuales, determinación del estado de conexión, interrupción del modo de cálculo.

Programas de depuración

El control paso a paso sobre el funcionamiento del programa se lleva a cabo en la ventana «Depuración». Se abre desde el menú contextual «Iniciar cálculo en modo depuración». También se puede abrir con el comando breakpoint() y la línea del programa se resaltará en rojo. La ventana contiene campos con código de programa y valores de variables. En la parte inferior de la ventana hay botones «Siguiente paso», «Continuar ejecución», «Detener cálculo». Al presionar F5 continuará la ejecución del programa, la combinación Shift + F5 detendrá la depuración, la tecla F10 lo dirigirá a la siguiente línea.

¿QPILE o LUA?

LUA es un nuevo lenguaje de programación para crear robots comerciales. Al igual que QPILE, se implementa en la terminal QUIK. https://articles.opexflow.com/programming/lua.htm Un sitio dedicado al desarrollo de robots comerciales para el comercio muestra las ventajas del lenguaje LUA sobre QPILE. Por lo tanto, puede funcionar como un script y código de bytes sin compilar, equipado con herramientas de desarrollo y mecanismos de programación orientados a objetos. Los objetos escritos en otros lenguajes de programación se pueden conectar a programas LUA. LUA proporciona 8 tipos de datos, incluidas las metatablas. El lenguaje LUA es multiproceso, rápido y las transacciones y los eventos de terminal son asincrónicos. LUA es más común que QPILE y se han escrito muchas extensiones para él.

El lenguaje QPILE ahora está en desuso. Los expertos en los foros recomiendan usar LUA. Aunque todavía se utilizan programas útiles y efectivos.

Sin embargo, el lenguaje QPILE es simple en comparación con LUA, por lo que si no tiene experiencia en programación, es mejor elegir QPILE. En este lenguaje, puede escribir un robot simple si no necesita realizar cálculos complejos.

¿Cómo crear un robot comercial en QPILE?

Para crear un asesor comercial, necesitará los siguientes programas:

  1. ES Quik.
  2. Editor de código Notepad++.
  3. Guía de QPILE.
  4. Complemento XML para la detección de código en Notepad++.

Descarga e instala estos programas. Habilite la sintaxis del idioma colocando userDefineLang.xml en la ruta C:\Users\User\ AppData\Roaming\Notepad++\
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK Primero, creemos la siguiente estrategia comercial. El script debe calcular Hi y Low para las últimas velas cada minuto, verifique el precio actual del instrumento. Se abre una posición en la dirección requerida si el precio del instrumento alcanza el valor máximo o mínimo para el período. Cuando se recibe una señal de corto, la posición larga se cierra automáticamente. El robot utiliza la herramienta GAZP, el marco de tiempo se establece en 1 min. La profundidad de medición alta-baja se establece en 5 velas. Para ingresar Long, se establece una regla y la intersección del precio actual del valor máximo para el período. El robot entrará en Corto si el precio actual cruza el valor mínimo de estas 5 velas. Escriba un bloque de código en Notepad++ con la configuración básica y la fecha y hora del servidor. Este código se muestra en la siguiente imagen.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK Las primeras 4 líneas de código forman el encabezado del programa. Entre las líneas 6 y 44 se encuentra el cuerpo del programa, que contiene el contenido del robot. Las líneas 7 – 12 contienen configuraciones de usuario, que incluyen los códigos del instrumento, grupo y cliente, el número de cuenta en el MICEX. Estos valores no cambian durante la ejecución del programa. Las líneas 13 – 16 son los valores iniciales de las variables. Se restablecerán a cero en cada paso de iteración. Las líneas 17 – 21 contienen una indicación para usar la fecha y hora del servidor. Estos datos se pasan a la función DATETIME y se convierten a formato de texto. Las líneas 22 – 29 envían los datos recibidos a la tabla. Se debe guardar el código y se debe especificar la extensión qpl.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK Abra el programa en QUIK presionando Ctrl+F10 y seleccionando el archivo qpl generado. Utilice la combinación Ctrl+F11 para abrir la ventana «Trabajar con carteras» y establezca el período de cálculo de la cartera en 5 minutos. Presione Ctrl+F12 para establecer las columnas que se mostrarán en la tabla. La imagen muestra el resultado del trabajo del robot.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK Agreguemos algunas funciones y condiciones más a nuestro programa.
El bloque «Configuración de usuario» se complementa con las variables NÚMERO e INTERVALO, que se utilizarán en función de obtener las últimas N barras. La función DATETIME establece la fecha y la hora del servidor, y las funciones de fecha y hora actuales CURDATE y CURTIME se llaman desde él. La hora actual se convierte en un número en la línea 24. La línea 26 establece la hora de ejecución del algoritmo de 10:00:01 a 18:40:00 UTC.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK Lenguaje algorítmico QPILE para programar robots comerciales para QUIK La mayoría de las veces, los indicadores, los osciladores y los cálculos estadísticos se calculan con las últimas N velas del gráfico. QPILE no tiene una función para recolectar el número de velas hace N períodos como tal, pero hay una función GET_CANDLE que accede a las velas en el gráfico por fecha y hora en formato de texto. Nuestro código contiene la función para obtener las últimas N barras OHLC(). Crea una colección con los parámetros de las últimas velas anidadas en la lista COLLECTION. El programa verifica el valor de INTERVALO, y si no cae dentro del rango 0…60, se muestra un mensaje de que el valor no corresponde al rango permitido. Se crea una colección MAP con velas en la línea 88. Un bucle FOR sondeando el gráfico a la profundidad requerida con el paso de INTERVALO de la vela nueva a la vieja. En la línea 90, después de declarar el ciclo, el robot retrocede un intervalo. Cuando obtienes una vela con GET_CANDLE, colóquelo en la colección BARLIST usando la función INSERT_COLLECTION_TEAM. Como resultado de la operación del comando OHLC(), BARLIST se repone con las últimas velas del gráfico de instrumentos en la cantidad de NÚMERO. El número de elementos en la colección es solicitado por el comando GET_COLLECTION_COUNT() y reportado por la variable BARCOUNT. La fecha del servidor, la hora, los valores de las variables INSTRUMENT y BARCOUNT son informados por la función SET_VALUE() en OUTPUT. Esta matriz se crea con el comando CREATE_MAP(). Los datos caen en la tabla personalizada, que se puede ver en la foto a continuación. los valores de las variables INSTRUMENT y BARCOUNT son reportados por la función SET_VALUE() en OUTPUT. Esta matriz se crea con el comando CREATE_MAP(). Los datos caen en la tabla personalizada, que se puede ver en la foto a continuación. los valores de las variables INSTRUMENT y BARCOUNT son reportados por la función SET_VALUE() en OUTPUT. Esta matriz se crea con el comando CREATE_MAP(). Los datos caen en la tabla personalizada, que se puede ver en la foto a continuación.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK

Robots comerciales en QPILE: soluciones listas para usar

Robot de promedio móvil

Robot de demostración no apto para operaciones reales.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK El robot incluye 5 parámetros. Los valores de los identificadores de FECHA, HORA, PRECIO se establecen en el nivel 30. Los identificadores MOVING y TP se establecen en precisión cero. Código de robot en promedio móvil escrito bajo QPILE: [columnas de galería=»5″ ids=»14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907″]

Calculadora de posición de N. Moroshkin

Un programa para calcular los niveles de reducción máxima permitida y el objetivo para posiciones largas y cortas a los precios actuales de compra y venta. Los niveles se calculan para 2 valores del volumen de entrada de posición. El robot encuentra el volumen de posición permitido al asignar una orden stop en un paso desde el precio de apertura con el cálculo de abrir una posición en la dirección ascendente de la barra. Los niveles encontrados se ingresan en la ventana del terminal, que posteriormente se reflejan en el gráfico de precios. Las transacciones son fijas para un instrumento dado. Si se abre una posición, el robot comienza a calcular sus parámetros. En función del cambio de puesto, se ajustan las órdenes asignadas.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK

Filtro de volumen

Una cartera de robots para calcular la media aritmética del volumen de velas y compararla con el producto promedio por el coeficiente X. Funciona correctamente con gráficos trazados en un período de tiempo seleccionado.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK

Opciones Griegos

Portafolio para calcular y mostrar «griegos» de opciones. Se diferencia del método Black-Showers.
Lenguaje algorítmico QPILE para programar robots comerciales para QUIK

Robot comercial TRIX para QUIK

El programa se basa en el indicador TRIX. Cuando el indicador se cierra por encima de la línea cero, el nivel especificado, el robot toma la posición Larga. La posición se cierra con Take Profit, Stop Loss o trailing stop.

Preprocesador M4

Programa para trabajar con QPILE y Lua. Incluye archivos con archivos ejecutables, documentación y archivos DLL con análisis de expresiones regulares. Para usar el programa, debe descomprimir los archivos ejecutables y colocar regexp2 en la ruta C:\Windows. Lecciones sobre QPILE para QUIK: https://youtu.be/vMTXwDUujpI Instalación de un script en QPILE en el terminal Quik: https://youtu.be/0B7qL8Svh7I Una sección sobre github que describe el uso del lenguaje algorítmico QPILE integrado en el Estación de trabajo del sistema QUIK ubicada en el enlace: https://euvgub.github.io/quik_user_manual/ch8.html. QPILE es un lenguaje obsoleto, pero bastante simple y accesible incluso para operadores novatos. Los robots comerciales y los programas que han demostrado su eficacia durante mucho tiempo continúan trabajando en él. Sin embargo, para tareas más complejas es mejor usar LUA.

info
Rate author
Add a comment

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

    Responder