Linguagem algorítmica QPILE para programação de robôs de negociação para QUIK.
Os robôs de negociação podem ser escritos em uma linguagem específica, semelhante ao código do programa. QPILE é um deles, este artigo irá considerar esta linguagem, comparar as linguagens QPILE e
LUA , e também dar exemplos de robôs nesta linguagem.
- Informações gerais sobre QPILE
- Trabalhando com uma mesa
- Construções QPILE
- Tipos de dados
- Expressões
- Funções
- Programas de depuração
- QPILE ou LUA?
- Como criar um robô de negociação no QPILE?
- Robôs de negociação no QPILE – soluções prontas
- Robô médio móvel
- Calculadora de posição N. Moroshkin
- Filtro de volume
- Opções Gregas
- Robô de negociação TRIX para QUIK
- Pré-processador M4
Informações gerais sobre QPILE
QPILE é uma abreviação que significa QUIK Programmable Interface and Logic Environment.
Esta é uma série de comandos interpretados pela estação de trabalho QUIK. É usado principalmente para calcular o preço de carteiras de títulos. A linguagem também é usada para:
- recálculo dinâmico do preço dos ativos dos clientes no desktop da corretora e em suas carteiras. Neste último caso, seu preço total também é recalculado;
- encontrar indicadores ausentes usando seus próprios algoritmos e dados para empréstimos de margem;
- desenvolver a estratégia de negociação correta.
A linguagem descreve a estrutura da tabela: a nomeação de colunas e linhas, fórmulas. Neste último, operações matemáticas, variáveis, dados de outras tabelas podem ser usados para cálculo. O código do programa carregado do servidor QUIK ou do disco do usuário é processado pelo interpretador de linguagem, que calcula os valores nas fórmulas. As tabelas de um programa têm uma fonte de dados, mas os cálculos não são duplicados e não afetam a eficiência do sistema. Ao trabalhar com tabelas QUIK, as tabelas no QPILE possuem funções padrão. O QUIK no local de trabalho está equipado com um depurador de código QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm A linguagem permitirá descrever novas tabelas com uma determinada estrutura, destacar células com determinados valores, calcular campos com base em expressões matemáticas e lógicas. O usuário receberá notificações na forma de um sinal sonoro ou uma mensagem de texto. As tabelas no QPILE podem ser editadas, impressas, copiadas, exportadas via servidor ODBC e DDE. Os dados iniciais são das tabelas QUIK:
- transações, inclusive para execução e impessoais;
- ordens, incluindo ordens de parada, para negócios de balcão e ordens – relatórios para negócios em acordos de liquidação;
- “carteira de clientes”, “comprar/vender”
- dados das posições do participante por dinheiro, contas de negociação, instrumento.
Tabelas baseadas em QPILE não podem ser copiadas para um arquivo de texto através do menu de contexto e exportadas para sistemas de análise técnica, e gráficos não podem ser desenvolvidos com base nelas. As tabelas baseadas em QPILE não podem ser filtradas ou classificadas.
Trabalhando com uma mesa
Para carregar o código do programa, você precisa selecionar o menu de serviços e, em seguida, os scripts QPILE. Você também pode usar a combinação Ctrl+F11. Depois você precisa clicar em “Adicionar” e selecionar o arquivo desejado. Possui extensão .qpl e seu nome aparecerá na lista Scripts Disponíveis.
- Nome da tabela;
- número de colunas e clientes;
- lista de identificadores e clientes;
- a lista de parâmetros e o código fonte do arquivo.
Construções QPILE
Tipos de dados
- Cadeia – cadeia.
- Double é um número de ponto flutuante.
- Coleção – uma coleção.
- Map – uma matriz associativa – uma sequência de pares que permite obter informações por chave.
Expressões
As operações aritméticas de adição, subtração, multiplicação, divisão são aplicadas. Também são utilizadas as expressões lógicas “e”, “ou”, igual, mais, menos, desigualdades, construção condicional “se…então…”.
Funções
As funções podem estar localizadas em qualquer lugar do programa e ter nomes diferentes. No total, 18 grupos de funções e funções matemáticas estão disponíveis para obter os valores de tabelas e parâmetros, matrizes associativas, lista de tabelas e outras tarefas. Primeira série:
- Funções matemáticas que permitem retornar o valor do seno, cosseno, tangente, cotangente do argumento, calcular o expoente do argumento, gerar um número aleatório, etc.
- Comandos gerais : NEW_GLOBAL para inicializar uma variável global e MESSAGE para abrir mensagens.
Funções para trabalhar:
- Coleções de objetos (Coleção) . Eles permitem que você crie uma nova coleção, retorne o número necessário de elementos, substitua ou insira os valores desejados.
- Matrizes Associativas (MAP) . Ajude a criar e gerenciar a matriz.
- Arquivos – trabalhando com arquivos de texto, mantendo um log-log do programa. O nome do arquivo pode conter o caminho para ele.
- Cordas .
- Gráficos . Funções GET_CANDLE para acessar dados de velas e GET_CANDLE EX para retornar um array associativo.
- Aplicativos . Criação de ordens e envio para o sistema de negociação.
- Etiquetas . Sua construção e instalação no gráfico. Adicionando, excluindo um ou todos os rótulos, obtendo e configurando parâmetros para um rótulo específico.
Existem também funções para:
- Para acessar linhas de tabelas QUIK arbitrárias e listas de parâmetros disponíveis . Acesso aos dados da tabela do local de trabalho. Estes incluem GET_ITEM para retornar o MAP e GET_NUMBER_OF para retornar o número de entradas.
- Para trabalhar com uma tabela programável . Esses comandos operam na tabela OWN. É legível pelas funções padrão do parágrafo anterior e por essas funções. Este grupo inclui comandos para adicionar, modificar e excluir uma linha com um índice e limpar completamente a tabela PRÓPRIA.
Para obter valores use:
- Tabelas de negócios atuais . Obtendo parâmetros de informações de troca usando comandos GET_PARAM (_EX).
- Janelas de cotação . Obtenção dos valores das cotações de instrumentos.
- Tabelas de posições por instrumentos e dinheiro . Obtenção de dados sobre um cliente, empresa, instrumento, conta de depósito por código.
Funções de serviço – retornando a data do pregão atual, série associativa, data e hora atuais, determinando o estado da conexão, interrompendo o modo de cálculo.
Programas de depuração
O controle passo a passo sobre a operação do programa é realizado na janela “Depurar”. Ele é aberto a partir do menu de contexto “Iniciar cálculo no modo de depuração”. Ele também pode ser aberto com o comando breakpoint(), e a linha do programa será destacada em vermelho. A janela contém campos com código de programa e valores de variáveis. Na parte inferior da janela existem botões “Próximo passo”, “Continuar execução”, “Parar cálculo”. Pressionar F5 continuará a execução do programa, a combinação Shift + F5 interromperá a depuração, a tecla F10 direcionará para a próxima linha.
QPILE ou LUA?
LUA é uma nova linguagem de programação para criar robôs de negociação. Assim como o QPILE, ele é implementado no terminal QUIK. https://articles.opexflow.com/programming/lua.htm Um site dedicado ao desenvolvimento de robôs de negociação para negociação mostra as vantagens da linguagem LUA sobre o QPILE. Assim, ele pode funcionar como um script e bytecode não compilado, equipado com ferramentas de desenvolvimento e mecanismos de programação orientados a objetos. Objetos escritos em outras linguagens de programação podem ser conectados a programas LUA. LUA fornece 8 tipos de dados, incluindo metatabelas. A linguagem LUA é multithread, rápida e as transações e eventos de terminal são assíncronos. LUA é mais comum que QPILE, e muitas extensões foram escritas para ele.
A linguagem QPILE agora está obsoleta. Especialistas nos fóruns recomendam o uso de LUA. Embora programas úteis e eficazes ainda estejam sendo usados.
No entanto, a linguagem QPILE é simples em comparação com LUA, portanto, se você não tem experiência em programação, é melhor escolher QPILE. Nesta linguagem, você pode escrever um robô simples se não precisar realizar cálculos complexos.
Como criar um robô de negociação no QPILE?
Para criar um consultor de negociação, você precisará dos seguintes programas:
- SEU Quik.
- Editor de código Notepad++.
- Guia para QPILE.
- Plugin XML para detecção de código no Notepad++.
Baixe e instale esses programas. Habilite a sintaxe do idioma colocando userDefineLang.xml no caminho C:\Users\User\ AppData\Roaming\Notepad++\
O bloco “Configurações do usuário” é complementado com as variáveis NUMBER e INTERVAL, que serão utilizadas na função de obtenção das últimas N barras. A função DATETIME define a data e hora do servidor, e as funções atuais de data e hora CURDATE e CURTIME são chamadas a partir dela. A hora atual é convertida em um número na linha 24. A linha 26 define a hora para que o algoritmo seja executado de 10:00:01 a 18:40:00 UTC.
Robôs de negociação no QPILE – soluções prontas
Robô médio móvel
Robô de demonstração não adequado para negociação real.
Calculadora de posição N. Moroshkin
Um programa para calcular os níveis do rebaixamento máximo permitido e a meta para posições longas e curtas nos preços atuais de venda e oferta. Os níveis são calculados para 2 valores do volume de entrada da posição. O robô encontra o volume de posição permitido ao atribuir uma ordem de parada em uma etapa do preço de abertura com o cálculo de abertura de uma posição na direção ascendente da barra. Os níveis encontrados são inseridos na janela do terminal, que são posteriormente refletidos no gráfico de preços. As transações são fixas para um determinado instrumento. Se uma posição for aberta, o robô começa a calcular seus parâmetros. Dependendo da mudança de posição, as ordens atribuídas são ajustadas.
Filtro de volume
Um robô-portfólio para calcular a média aritmética do volume das velas e compará-lo com o produto médio pelo coeficiente X. Funciona corretamente com gráficos plotados em um período de tempo selecionado.
Opções Gregas
Portfólio para calcular e exibir “Gregos” de opções. Difere do método Black-Showers.
Robô de negociação TRIX para QUIK
O programa é baseado no Indicador TRIX. Quando o indicador fecha acima da linha zero, o nível especificado, o robô assume a posição Longa. A posição é fechada por Take Profit, Stop Loss ou Trailing Stop.
Pré-processador M4
Programa para trabalhar com QPILE e Lua. Inclui arquivos com arquivos executáveis, documentação e arquivos DLL com análise de expressão regular. Para usar o programa, você precisa descompactar os arquivos executáveis e colocar regexp2 no caminho C:\Windows. Lições sobre QPILE para QUIK: https://youtu.be/vMTXwDUujpI Instalando um script no QPILE no terminal Quik: https://youtu.be/0B7qL8Svh7I Uma seção no github que descreve o uso da linguagem algorítmica QPILE incorporada ao Estação de trabalho do sistema QUIK localizada no link – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE é uma linguagem desatualizada, mas bastante simples e acessível até para traders iniciantes. Robôs e programas de negociação que se provaram por um longo tempo continuam trabalhando nele. No entanto, para tarefas mais complexas, é melhor usar LUA.
0к