De nada, tentei fazer o melhor para você. :)
Pretendo manter e tentar expandir a funcionalidade desse sistema. Se houver necessidade de algo, escreva.
-----
Para maior clareza, acho que é necessário falar sobre dois pontos puramente técnicos.
1. No arquivo Trace.mqh, é criada uma única instância do rastreador (na parte inferior do arquivo).
extern CTraceCtrl* m_trace; // uma única instância do rastreador
Graças à diretiva extern, a instância será apenas uma. Ou seja, ela não depende de quantos arquivos #include "Trace.mqh" estão incluídos no arquivo #include "Trace.mqh"
2. A classe CTraceView é usada no CTraceCtrl apenas por um único motivo: para desenvolver a função CTraceCtrl::Break.
Ou seja, para ter uma reação aos cliques do usuário em um loop while (true)
Adicionado o processamento da macro __PATH__ (build 420), em conexão com o qual todas as classes são atualizadas.
O botão para abrir um arquivo de nó foi adicionado à janela INFO.

A abertura é realizada pelo comando ShellExecute , portanto, a permissão de importação de DLL é necessária para que as classes funcionem
funcionalidade adicionada para acrescentar a descrição do nó.
Agora, nas macros _IN, é possível adicionar uma descrição adicional, por exemplo, para exibir as condições de entrada em um nó ou alguma informação relevante.
Essa descrição é atualizada dinamicamente na exibição da árvore.
Exemplo de código:
void OnTick() { _IN(""); static datetime limit_time=0; // tempo de processamento da última negociação + tempo limite //--- não processar se houver tempo limite if(TimeCurrent()>=limit_time) { _IN2(TimeCurrent()+">="+limit_time); //--- verificação de dados if(Bars(Symbol(),Period())>2*InpMATrendPeriod) { _IN3(Bars(Symbol(),Period())>2*InpMATrendPeriod); //--- alterar o tempo limite pelo tempo limite em segundos se processado if(ExtExpert.Processing()) limit_time=TimeCurrent()+ExtTimeOut; } } //--- }
Um exemplo de como as informações serão exibidas

Botão para ativar a exibição da descrição - canto superior direito "i"
1. Adição de uma classe CPropertyView separada para exibir as propriedades dos nós.
2. Todas as funções substituídas de classes são tornadas virtuais, de modo que todas as classes são atualizadas.
3. Foram adicionadas duas novas propriedades à classe CNode.
m_edit - sinal do campo editável no CPropertyView
m_brkuse - número de chamadas para o nó, no qual a função CTraceCtrl::Break é interrompida e chamada. 3.
3. De acordo com as notas de Urain no fórum, foram adicionadas duas possibilidades de uso de paradas de código.
- ativar/desativar paradas (botão vermelho D)
- parar por número especificado de invocação de nó
а. A definição do número inicial m_brkuse no nó pode ser feita usando uma macro (no arquivo Trace)
#define _BRKUSES(u) if (!NIL(m_trace)) if (!NIL(m_trace.m_cur)) ........
b. Ou diretamente na janela de propriedades do nó, no campo"DebugBreak after", que especifica o número necessário de chamadas antes de parar

CHARTEVENT_CLICK
CHARTEVENT_KEYDOWN
CHARTEVENT_OBJECT_DELETE
CHARTEVENT_OBJECT_CHANGE
CHARTEVENT_OBJECT_CREATE
5. Pequenas alterações cosméticas no mapeamento da árvore
Existe alguma maneira de usar esse mecanismo em scripts?
Acho que sim. Mas geralmente em scripts o código não é muito ramificado (a menos, é claro, que o script esteja em um loop).
Além disso, há um inconveniente: o evento OnChartEvent não é tratado em scripts.
Acho que sim. Mas, normalmente, nos scripts, o código não é muito ramificado (a menos, é claro, que o script esteja em um loop).
Além disso, há um inconveniente: os scripts não manipulam o evento OnChartEvent.
E se meu script usar muitas classes diferentes, hierarquias de classe?
Acho que é necessário aprimorar a ferramenta para scripts também...
A classe CTraceView não se importa com quem a chama, ela criará uma árvore e a exibirá.
Mas os scripts têm um problema de feedback insolúvel. Você não poderá trabalhar ativamente com a árvore.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Rastreamento, Depuração e Análise Estrutural de Código Fonte foi publicado:
O complexo inteiro de problemas de criação de uma estrutura de um código executado e seu rastreamento pode ser resolvido sem muitas dificuldades. Esta possibilidade apareceu no MetaTrader 5 devido a um novo recurso da linguagem MQL5 - criação automática de variáveis de tipo complexo de dados (estruturas e classes) e sua eliminação quando fora do escopo local. O artigo contém a descrição da metodologia e a ferramenta pronta para uso.
Autor: o_O