ESTÁ BEM. E se o Expert Advisor tiver o manipulador OnTick(), então o quê, ele não funcionará em modo frame?
Imho, devemos esclarecer aqui que os manipuladores de frames são executados pelo próprio Terminal, enquanto tudo o que é usual para testes (OnTick(), OnTrade(), etc.) é passado para os agentes de teste. ), são passados a agentes de teste. Assim, o modo frame é um modo especial de teste composto, onde os agentes interagem com o Terminal.
ESTÁ BEM. E se o Expert Advisor tiver o manipulador OnTick(), então o quê, ele não funcionará em modo frame?
Imho, devemos esclarecer aqui que os manipuladores de frames são executados pelo próprio Terminal, enquanto tudo o que é usual para testes (OnTick(), OnTrade(), etc.) é passado para os agentes de teste. ), são passados a agentes de teste. Assim, o modo frame é um modo especial de teste composto, onde os agentes interagem com o Terminal.
É assim.
E porquê indirectamente? Por exemplo, a otimização normal só pode ser executada no Testador.
Porque é um Expert Advisor de combate, mesmo no modo frame. É por isso que precisamos verificar a bandeira da moldura no OnChartEvent, senão este tipo de problema pode acontecer.
sinputuint Range = 100;
#define SETRANGE(A, START, STEP, END) ParameterSetRange(#A, true, A, START, STEP, END)
voidOnTesterInit() { SETRANGE(Range, 0, 1, Range); }
voidOnTesterDeinit() {}
voidOnChartEvent(constint id,constlong& lparam,constdouble& dparam,conststring& sparam)
{
staticconstbool IsFrame = MQLInfoInteger(MQL_FRAME_MODE);
// if (!IsFrame) // без этой проверки Терминал (не только Агент) начнет выставлять ордера на реальном счете во время запуска ОптимизацииOrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0);
}
Esta parece ser a primeira vez que isto se exprime. O que significa que os Produtos de Mercado criam uma desagradável vulnerabilidade... E esta vulnerabilidade é muito difícil de contornar. E é muito difícil detectá-lo.
Porque é uma EA de combate, mesmo em modo frame. Esta é a razão pela qual você precisa verificar a bandeira da moldura no OnChartEvent, caso contrário este tipo de problema pode acontecer
Esta parece ser a primeira vez que isto se exprime. O que significa que os Produtos de Mercado criam uma desagradável vulnerabilidade... E esta vulnerabilidade é muito difícil de contornar. Detectá-lo é igualmente difícil.
No entanto! Se for verdade, então, imho, é o funcionamento incorrecto do EA em modo Teste...
OnInit, OnDeinit, obra global de construção/destruição e OnChartEvent.
OnTimer, OnTick e OnBookEvent não funcionam.
Apenas CHARTEVENT_CHART_CHANGE e eventos personalizados são capturados.
Através do OnChartEvent+EventChartCustom EA é possível criar "eventos" para o OnTimer e OnTick, mas não para o OnBookEvent.
Portanto, é possível fazer com que qualquer Expert Advisor de negociação funcione (OnTimer + OnTick) em qualquer tipo de gráfico, incluindo o indicador apropriado(exemplo).
O arquivo tester_file só é lido se ele existia (conteúdo não importa) no momento da compilação.
Se o mq5 é compilado quando não havia arquivo correspondente, mesmo a sua existência posterior não será percebida no EX5.
Portanto, se você gerar um arquivo para tester_file no OnTesterInit, certifique-se de compilar o Expert Advisor com pelo menos um arquivo passado vazio.
Se a diretiva tester_file estiver presente, as caches do Optimizer não funcionam.
fxsaber:
Discussão do artigo "Visualizando a otimização da estratégia comercial no MetaTrader 5".
fxsaber, 2018.02.22 08:39
No modo frame, OnInit, OnDeinit, OnTick, OnTrade, OnTradeTransaction e OnTimer são ignorados. Apenas o OnChartEvent funciona.
Claro que, por causa do OnChartEvent, requer uma verificação obrigatória da bandeira do modo frame.
Onde é que conseguiu uma confiança tão implícita? :-)
Como pode ter tanta certeza? :-)
Da prática, claro.
Uma pergunta, então. O modo Frame é um modo que geralmente se refere a Testes ou não?
Uma pergunta, então. O modo Frame é um modo que geralmente se aplica aos testes ou não?
Indirectamente, é. É que neste modo o Expert Advisor só pode ser iniciado no Terminal pelo Testador.
ESTÁ BEM. E se o Expert Advisor tiver o manipulador OnTick(), então o quê, ele não funcionará em modo frame?
Imho, devemos esclarecer aqui que os manipuladores de frames são executados pelo próprio Terminal, enquanto tudo o que é usual para testes (OnTick(), OnTrade(), etc.) é passado para os agentes de teste. ), são passados a agentes de teste. Assim, o modo frame é um modo especial de teste composto, onde os agentes interagem com o Terminal.
Então, é assim...
Fórum sobre negociação, sistemas de negociação automatizados e testes estratégicos
Características da linguagem mql5, subtilezas e truques
fxsaber, 2018.02.22 09:22
Indirectamente, aplica-se. É que, neste modo, o EA só pode ser executado no Terminal pelo próprio Testador.
E porquê indirectamente? Por exemplo, a otimização normal também pode ser executada apenas no Testador.
ESTÁ BEM. E se o Expert Advisor tiver o manipulador OnTick(), então o quê, ele não funcionará em modo frame?
Imho, devemos esclarecer aqui que os manipuladores de frames são executados pelo próprio Terminal, enquanto tudo o que é usual para testes (OnTick(), OnTrade(), etc.) é passado para os agentes de teste. ), são passados a agentes de teste. Assim, o modo frame é um modo especial de teste composto, onde os agentes interagem com o Terminal.
É assim.
E porquê indirectamente? Por exemplo, a otimização normal só pode ser executada no Testador.
Porque é um Expert Advisor de combate, mesmo no modo frame. É por isso que precisamos verificar a bandeira da moldura no OnChartEvent, senão este tipo de problema pode acontecer.
Esta parece ser a primeira vez que isto se exprime. O que significa que os Produtos de Mercado criam uma desagradável vulnerabilidade... E esta vulnerabilidade é muito difícil de contornar. E é muito difícil detectá-lo.
Porque é uma EA de combate, mesmo em modo frame. Esta é a razão pela qual você precisa verificar a bandeira da moldura no OnChartEvent, caso contrário este tipo de problema pode acontecer
Esta parece ser a primeira vez que isto se exprime. O que significa que os Produtos de Mercado criam uma desagradável vulnerabilidade... E esta vulnerabilidade é muito difícil de contornar. Detectá-lo é igualmente difícil.
No entanto! Se for verdade, então, imho, é o funcionamento incorrecto do EA em modo Teste...
Muito bem feito por teres reparado!
Fórum sobre negociação, sistemas de negociação automatizados e testes de estratégia de negociação
Bugs, bugs, perguntas
fxsaber, 2018.02.27 08:01
Conclusão sobre EAs no OBJ_CHART
Portanto, é possível fazer com que qualquer Expert Advisor de negociação funcione (OnTimer + OnTick) em qualquer tipo de gráfico, incluindo o indicador apropriado(exemplo).
Lf OBJ_CHART é definido por CHART_IS_OBJECT.
Fórum sobre negociação, sistemas de negociação automatizados e testes de estratégia de negociação
Discussão sobre "Managed optimization: the annealing method" (Otimização gerenciada: o método de recozimento)
fxsaber, 2018.02.28 08:45
O arquivo tester_file só é lido se ele existia (conteúdo não importa) no momento da compilação.
Se o mq5 é compilado quando não havia arquivo correspondente, mesmo a sua existência posterior não será percebida no EX5.
Portanto, se você gerar um arquivo para tester_file no OnTesterInit, certifique-se de compilar o Expert Advisor com pelo menos um arquivo passado vazio.
Se a diretiva tester_file estiver presente, as caches do Optimizer não funcionam.