Ajuda para o MetaEditorDesenvolvimento de programasDepurando código

Depurando código

O MetaEditor possui um depurador integrado, isto é, uma ferramenta que permite testar o programa em etapas (por funções individuais). Você coloca pontos de interrupção no código do programa, quer dizer, locais onde a execução do programa deve ser suspensa. Em seguida, execute o programa num gráfico convencional ou no testador de estratégias. Assim que a execução do programa atingir o ponto de interrupção, ele será suspenso. Você pode ver os valores das variáveis ​​avaliadas e, em seguida, continuar a execução do programa manualmente por etapas, verificando o algoritmo de operação.

Configuração preliminar #

Antes da depuração, defina seus parâmetros gerais nas opções do MetaEditor. Você pode especificar o símbolo e o período do gráfico nos quais ocorrerá a depuração dos aplicativos. Esse gráfico será criado temporariamente toda vez que você iniciar a depuração e será excluído imediatamente após sua conclusão.

Ao gráfico criado para depuração é aplicado o modelo "debug.tpl", localizado na pasta /profiles/templates da plataforma de negociação.

Pontos de interrupção #

Ponto de interrupção – este comando é acionado quando a execução do programa passa para a linha especificada e interrompe sua execução neste momento. Os pontos de interrupção permitem que você examine o comportamento do programa na área especificada do código: visualizar os valores das variáveis, a pilha de funções. No futuro, o processo de depuração pode ser retomado ou finalizado.

Pelo menos um ponto de interrupção no código do programa deve ser definido antes de iniciar a depuração. Para fazer isso, clique duas vezes na caixa cinza à esquerda da linha de código. Além disso, você pode colocar o cursor na linha e pressionar "Alternar ponto de interrupção Alternar ponto de interrupção" no menu "Depurar" ou "F9". Os pontos de interrupção são desligados da mesma maneira.

Ponto de interrupção ativado

Para pular rapidamente para o ponto em que a execução do programa é interrompida, clique duas vezes na função na janela de exibição de pilha de chamadas. Além disso, através do menu de contexto desta janela, você pode ir para a lista de todos os pontos de interrupção no programa que está sendo depurado:

Ir para o ponto de interrupção

Você também pode ir a qualquer um dos pontos clicando duas vezes nele.

Execução da depuração #

Para iniciar a depuração, abra o arquivo do arquivo básico do programa ou projeto. A depuração pode ser feita de dois modos:

  • Em dados reais. Com o comando "Iniciar em dados reais Começar com dados reais" no menu "Depurar" ou com a tecla "F5". Neste modo, o programa depurado é executado num gráfico especial na plataforma de negociação. A depuração é realizada em condições reais nos dados de preço provenientes do servidor.
  • Nos dados históricos. Com o comando "Iniciar em dados históricos Começar com dados históricos" no menu "Depurar" ou as teclas "Ctrl + F5". Nesse modo, o programa é iniciado no testador de estratégia. Permite verificar o funcionamento de qualquer parte do histórico, sem esperar o aparecimento de determinadas condições de mercado. Por padrão, o modo de teste não visual é usado para não desperdiçar recursos na renderização de elementos gráficos. Se necessário, você pode ativar o modo visual nas configurações do MetaEditor.

Assim que o programa no modo de depuração atingir a linha com um ponto de interrupção, ele será interrompido. A linha na qual a execução parou será marcada com um ícone Ponto de interrupção ativado. Também na janela "Caixa de Ferramentas", aparecerá a guia "Depurar". Na parte esquerda, será mostrada a pilha de chamadas da função.

Ativação do ponto de interrupção após o início da depuração

Expressões monitoradas #

Durante o processo de depuração, você pode monitorar os valores das várias expressões (variáveis) que são recebidas no estágio atual de execução do programa. Para este propósito é projetado o lado direito da guia "Depurar" da janela "Caixa de Ferramentas". Para rastrear os valores de uma expressão, adicione-a a expressões monitoradas:

  • Durante a depuração, coloque o cursor na expressão no código fonte e clique em "Adicionar observação Adicionar observação" no menu de contexto.
  • Clique em "Adicionar uma nova entrada Adicionar" no menu de contexto do lado direito da guia "Depurar". Em seguida, insira o nome da expressão na linha exibida.
  • Para alterar o nome da expressão monitorada, clique duas vezes nela.

Exibir pilha e valores de expressões

Você pode também permitir a visualização automática das variáveis locais na lista de monitoramento. Para fazer isso, selecione a opção "Locais" no menu de contexto. Durante a depuração, as variáveis do escopo atual serão automaticamente exibidas na lista à medida que você navega pelo código.

Na janela de monitoramento de expressões, você pode realizar cálculos matemáticos simples (adição, subtração, multiplicação e divisão), bem como visualizar valores em pontos específicos da matriz. Por exemplo, especificando a entrada A[3][4], onde A é o nome da matriz, enquanto 3 e 4 são posições em suas dimensões. Ao adicionar objetos às expressões monitoradas, você pode mostrar a lista de seus membros especificando no final um ponto ou pressionando as teclas "Ctrl+Space":

Substituição de membros de objetos

Para visualizar o conteúdo de um array ou objeto, clique duas vezes nele na janela de observação.

Por padrão, os números inteiros são exibidos na janela de monitoramento em formato decimal. Para gerar o valor em formato binário ou hexadecimal, no campo "Expressão", especifique um modificador b ou x, respectivamente, após a vírgula.

Visualização de expressões em formato binário e hexadecimal

Visualização da pilha de chamadas #

A pilha de chamadas é preenchida com informações para retornar o controle de subrotinas (funções aninhadas) para o programa (o manipulador de eventos principal de OnInit, OnTick, etc.). Na pilha, você pode olhar todo o caminho desde a ocorrência do evento na plataforma de negociação antes de chamar uma função específica.

Para cada função, as seguintes informações são exibidas:

  • O nome do arquivo do qual a função foi chamada.
  • O nome da função.
  • O número da linha no arquivo onde esta função foi chamada.

Depuração passo a passo

Para depuração passo a passo com a visualização da pilha de chamadas, use os comandos do menu "Depurar" ou barra de ferramentas "Padrão":

  • Entrar Entrar – passa uma etapa de execução do programa com entrada nas funções que podem ser invocadas. A mesma ação é executada pressionando a tecla "F11".
  • Passar por cima Passar por cima – passa uma etapa de execução do programa sem entrar nas funções que podem ser invocadas. A mesma ação é executada com a tecla "F10".
  • Sair Sair – pula para a execução de uma etapa do programa, um nível acima. A mesma ação é executada com as teclas "Shift+F11".

Os comandos de depuração passo a passo só podem ser usados ​​depois que o programa é interrompido no modo de depuração:

  • Depois que o ponto de interrupção é ativado.
  • Após pausar o programa manualmente com o comando "Suspender Suspender" no menu "Depurar" ou a tecla "Break".

Chegada de eventos na plataforma de negociaçãocontinua mesmo quando o programa está no ponto de interrupção. Todos os eventos que chegam são enfileirados e seu processamento pelo expert continuará depois que o código do manipulador de eventos atual for encerrado.

Interromper, retomar e concluir a depuração #

A pausa do programa durante a depuração ocorre automaticamente assim que atinge a linha onde definido o ponto de interrupção. Além disso, a depuração pode ser controlada manualmente:

  • Suspender execução
    A execução do programa durante o processo de depuração pode ser interrompida manualmente com o comando "Suspender Suspender" no menu "Depurar" ou com a tecla "Break". Após a execução ser pausada, você pode usar os comandos de depuração passo a passo.
  • Retomar a execução
    Para retomar a execução do programa após a interrupção, clique em "Retomar Retomar" no menu "Depurar" ou "F5".
  • Encerrar depuração
    A fim de parar a depuração do programa, clique em "Encerrar Encerrar" no menu "Depurar" ou "Shift+F5". O programa será removido do gráfico especial, no qual foi iniciado para depuração, e o gráfico em si será fechado.
  • Sem os arquivos de origem MQ4, MQ5 e MQH, a depuração não é possível.
  • Também não é recomendado distribuir arquivos executáveis ​​EX4/EX5 recebidos durante o processo de depuração.

Depuração no histórico #

A depuração de robôs de negociação e indicadores técnicos pode ser executada não apenas em dados de preços - que são atualizados em tempo real - mas também em dados históricos. O trabalho do programa pode ser verificado na parte desejada do histórico, sem esperar por determinados eventos comerciais em tempo real.

A depuração em dados históricos ocorre no modo de teste visual, no testador de estratégias. O programa é executado no gráfico construído segundo a sequência de ticks modelada no testador ou a partir do histórico acumulado de ticks (recebidos da corretora).

Para executar a depuração no histórico, defina os parâmetros de execução do teste nas opções do MetaEditor.

Configuração de depuração no histórico

Coloque os pontos de interrupção no código do programa e, em seguida, execute a depuração em dados históricos.

Execução da depuração no histórico

Após isso, será executado o teste visual e começará o processo de depuração.

Depuração no histórico