Linguagem algorítmica QPILE para programação de robôs de negociação para QUIK

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

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

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.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIKCaso haja algum erro no programa, o sistema fará uma notificação na “Janela de Mensagens”, que conterá o nome do arquivo com defeito e o número da linha com o erro. Caso não tenham sido encontradas falhas no arquivo, os seguintes dados serão indicados nos campos:

  • 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.

Linguagem algorítmica QPILE para programação de robôs de negociação para QUIKO botão “Baixar localmente” permitirá que você obtenha a tabela a partir de um arquivo, e “Carregar no servidor” enviará o programa ao servidor para que todos os usuários possam acessá-lo. Para criar uma tabela, clique em Criar Tabela. Em “Scripts disponíveis” selecione o programa que deseja executar, defina o número de linhas através do “Filtro de Clientes”, defina as colunas necessárias e sua sequência.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIKPausar e retomar o cálculo, iniciar o cálculo novamente e no modo de depuração, salvar a descrição em um arquivo, demonstrar a fórmula e os parâmetros do script estão disponíveis no menu de contexto.

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:

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

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

  1. Tabelas de negócios atuais . Obtendo parâmetros de informações de troca usando comandos GET_PARAM (_EX).
  2. Janelas de cotação . Obtenção dos valores das cotações de instrumentos.
  3. 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:

  1. SEU Quik.
  2. Editor de código Notepad++.
  3. Guia para QPILE.
  4. 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++\
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIKPrimeiro, vamos criar a seguinte estratégia de negociação. O script deve calcular Hi e Low para as últimas velas a cada minuto, verifique o preço atual do instrumento. Uma posição é aberta na direção desejada se o preço do instrumento atingir o valor máximo ou mínimo do período. Quando um sinal para curto é recebido, a posição comprada é fechada automaticamente. O robô usa a ferramenta GAZP, o período de tempo é definido como 1 min. A profundidade de medição alta-baixa é definida para 5 velas. Para entrar Long, é definida uma regra e a interseção do preço atual do valor máximo para o período. O robô entrará em Short se o preço atual ultrapassar o valor mínimo para essas 5 velas. Escreva um bloco de código no Notepad++ com configurações básicas e data e hora do servidor. Este código é mostrado na imagem abaixo.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIKAs primeiras 4 linhas de código formam o cabeçalho do programa. Entre as linhas 6 e 44 está o corpo do programa, que contém o conteúdo do robô. As linhas 7 – 12 contêm as configurações do usuário, que incluem os códigos do instrumento, grupo e cliente, o número da conta no MICEX. Esses valores não mudam durante a execução do programa. As linhas 13 – 16 são os valores iniciais das variáveis. Eles serão redefinidos para zero em cada passagem de iteração. As linhas 17 – 21 contêm uma indicação para usar a data e hora do servidor. Esses dados são passados ​​para a função DATETIME e convertidos em formato de texto. As linhas 22 – 29 enviam os dados recebidos para a tabela. O código deve ser salvo e a extensão qpl deve ser especificada.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIKAbra o programa no QUIK pressionando Ctrl+F10 e selecionando o arquivo qpl gerado. Use a combinação Ctrl+F11 para abrir a janela “Trabalhar com portfólios” e defina o período de cálculo do portfólio para 5 minutos. Pressione Ctrl+F12 para definir as colunas a serem exibidas na tabela. A imagem mostra o resultado do trabalho do robô.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIKVamos adicionar mais algumas funções e condições ao nosso programa.
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.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIK
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIK
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIKLinguagem algorítmica QPILE para programação de robôs de negociação para QUIKNa maioria das vezes, indicadores, osciladores e cálculos estatísticos são calculados pelas últimas N velas do gráfico. O QPILE não possui uma função para coletar o número de velas N períodos atrás como tal, mas existe uma função GET_CANDLE que acessa as velas no gráfico por data e hora em formato de texto. Nosso código contém a função para obter as últimas N barras OHLC(). Ele cria uma coleção com os parâmetros das últimas velas aninhadas na lista COLLECTION. O programa verifica o valor INTERVAL e, se não estiver dentro da faixa de 0…60, é exibida uma mensagem informando que o valor não corresponde à faixa permitida. Uma coleção MAP com velas é criada na linha 88. Um loop FOR sondando o gráfico até a profundidade necessária com a etapa INTERVAL da vela nova para a vela antiga. Na linha 90, após a declaração do ciclo, o robô retrocede um intervalo. Quando você recebe uma vela com GET_CANDLE, coloque-o na coleção BARLIST usando a função INSERT_COLLECTION_TEAM. Como resultado da operação do comando OHLC(), BARLIST é reabastecido com as últimas velas do gráfico do instrumento no valor de NUMBER. O número de elementos na coleção é solicitado pelo comando GET_COLLECTION_COUNT() e informado pela variável BARCOUNT. Data, hora do servidor, valores das variáveis ​​INSTRUMENT e BARCOUNT são reportados pela função SET_VALUE() em OUTPUT. Esta matriz é criada pelo comando CREATE_MAP(). Os dados caem na tabela personalizada, que pode ser vista na foto abaixo. os valores das variáveis ​​INSTRUMENT e BARCOUNT são informados pela função SET_VALUE() em OUTPUT. Esta matriz é criada pelo comando CREATE_MAP(). Os dados caem na tabela personalizada, que pode ser vista na foto abaixo. os valores das variáveis ​​INSTRUMENT e BARCOUNT são informados pela função SET_VALUE() em OUTPUT. Esta matriz é criada pelo comando CREATE_MAP(). Os dados caem na tabela personalizada, que pode ser vista na foto abaixo.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIK

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.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIKO robô inclui 5 parâmetros. Os valores do identificador DATE, TIME, PRICE são definidos no nível 30. Os identificadores MOVING e TP são definidos com precisão zero. Código do robô na média móvel escrito em QPILE: [colunas da galeria=”5″ ids=”14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907″]

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.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIK
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIK

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.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIK

Opções Gregas

Portfólio para calcular e exibir “Gregos” de opções. Difere do método Black-Showers.
Linguagem algorítmica QPILE para programação de robôs de negociação para QUIK

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.

info
Rate author
Add a comment

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

    Responder