Percebi que tudo precisava ser reescrito para que funcionasse corretamente. Estou prestes a fazer isso.
E eu não posso, porque esta merda está acontecendo.
2018.01.2812:37:23.692 Tester EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2018.01.2812:37:24.692 Tester EURUSD: preliminary downloading of history ticks completed, 89 bytes in0:00.998 (0.09 Kb/sec)
2018.01.2812:37:24.692 Tester EURUSD: ticks data begins from2017.09.0100:002018.01.2812:37:24.692 Core 1 agent process started
2018.01.2812:37:33.425 Core 1 connecting to 127.0.0.1:30002018.01.2812:37:50.450 Core 1 tester agent authorization error
2018.01.2812:37:50.456 Core 1 connection closed
No modo de símbolo único, o "espião" é 2,5 vezes mais lento que o puro OnTick. Isto é, o indicador de vazios (construído sobre PERÍODO_W1 para que o histórico de barras seja mínimo) tem uma enorme sobrecarga no Testador!
Dois símbolos são 3,5 vezes mais lentos do que um.
Mas três símbolos são apenas 1,8 vezes mais lentos do que dois símbolos. Isto é, a transição de dois para três se deve à escalabilidade, em oposição ao item 2.
No modo de símbolo único, o Spy é 2,5 vezes mais lento que o OnTick puro. Isto é, o indicador de vazio (construído sobre PERÍODO_W1, de modo que o histórico de barras é mínimo) tem uma enorme sobrecarga no Testador!
Dois símbolos são 3,5 vezes mais lentos do que um.
Mas três símbolos são apenas 1,8 vezes mais lentos do que dois símbolos. Ou seja, a transição de dois para três se deve à escalabilidade. ao contrário do ponto 2.
Seu resultado é 6, 25, 46. Por que não 6, 12 e 18?
Você tem que olhar para a desaceleração relativa a um único personagem. Então três caracteres são quase 8 vezes mais lentos do que um, não 3 como esperado.
A questão é exatamente esta. Por que existe tal resultado com a escalabilidade? E se o resultado não puder ser melhorado, foi sugerida uma opção para um novo modo de teste. Isto resolveria o problema dos testes longos quando se utilizam múltiplos caracteres.
É possível criar um esquema Expert Advisor de múltiplos símbolos em MQL, para que a duração dos testes não aumente repetidamente ao adicionar símbolos ao teste?
//---
Se isto não for possível, então uma das opções para os desenvolvedores do terminal é adicionar mais um modo, quando o teste pode ser realizado símbolo por símbolo, em vez de todos os símbolos de uma só vez. Isto produziria o tempo de teste esperado no final. A questão é que os EAs com múltiplos símbolos são muito freqüentemente usados simplesmente para aqueles casos em que:
Mais dados são necessários para os testes.
Para testar o algoritmo de negociação em uma maior variedade de comportamento de preços, condições (spread, níveis de parada/limite), etc., com os mesmos parâmetros.
É para tais casos que precisamos de um novo modo que nos permita reduzir significativamente a duração dos testes e otimizar os parâmetros. E já para o teste final para testar todos os símbolos simultaneamente.
Você tem um resultado de 6, 25, 46. Por que não 6, 12 e 18?
A desaceleração tem que ser analisada em relação a um símbolo.
Dois caracteres com espigões é um modo de teste muito diferente de um único caractere. Portanto, é lógico olhar para a escalabilidade em relação a dois.
Além disso, a sobrecarga do indicador é tão selvagem que trabalhar através dos espiões é uma muleta. Esperando por serviços, onde a escalabilidade deve ser quase perfeita, em relação a apenas um símbolo. Como é o caso do temporizador. Somente não haverá carrapatos.
Dois caracteres com espiões é um modo de operação muito diferente para um testador do que para um único caractere. Portanto, é lógico olhar para a escalabilidade em relação a dois.
Além disso, a sobrecarga do indicador é tão selvagem que trabalhar através dos espiões é uma muleta. Esperando por serviços, onde a escalabilidade deve ser quase perfeita, em relação a apenas um símbolo. Como é o caso do temporizador. Somente não haverá carrapatos.
fxsaber: Significativamente acelerado
Um símbolo
Dois símbolos
Três caracteres
Quatro caracteres
Se olharmos para os resultados relativos a dois símbolos, então dividimos o resultado de dois símbolos por dois: 17 / 2 = 8,5
Então, ao adicionarmos símbolos, multiplicamos este valor pelo número de símbolos para obter o tempo de teste esperado.
três caracteres: 8,5 * 3 = 25, e o tempo real é de35.462 s.
quatro caracteres: 8,5 * 4 = 34, enquanto o tempo real é68.459 s.
Mas este é, de qualquer forma, o melhor resultado até agora. Uma variante interessante é usar o símbolo atual no OnTick, enquanto o resto em eventos personalizados.
Acontece que os Serviços terão quase todas as funções: OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...
Se você não precisa de buffers indicadores e não quer lidar com as muletas indicadores/conselheiros, escreva em um novo tipo de programa - Serviços - que não tenha nenhuma limitação (que se estenda desde as versões anteriores da MT).
O parâmetro longo (lparam) é verificado. O identificador do evento do tick está contido nele.
O identificador do evento do usuário (int id) é igual a zero.
Pode ser escrito desta forma para torná-lo mais claro:
Entendo que tudo deve ser reescrito para que tudo funcione corretamente. Vou lhe mostrar agora.
Percebi que tudo precisava ser reescrito para que funcionasse corretamente. Estou prestes a fazer isso.
E eu não posso, porque esta merda está acontecendo.
e eu não consigo fazer o testador funcionar.Indicador
Consultor especializado
EURUSD M1 MetaQuotes-Demo, Hedge, USD, sem defasagem, apenas agente Core1, carrapatos reais 01.09.2017 - 28.01.2018.
Um símbolo
Dois símbolos
Três símbolos
Anatoly, sugiro mudar o tópico para Peritos Forex, Robôs de Negociação e Assessores Especialistas e consertá-lo no topo.
Desta forma, estará sempre em vista. Já existem muitos tópicos postados aqui
Anatoly, sugiro mudar o tópico para Peritos Forex, Robôs de Negociação e Assessores Especialistas e consertá-lo no topo.
Desta forma, estará sempre em vista. Já existem muitos tópicos postados aqui
...
Seu resultado é 6, 25, 46. Por que não 6, 12 e 18?
Você tem que olhar para a desaceleração relativa a um único personagem. Então três caracteres são quase 8 vezes mais lentos do que um, não 3 como esperado.
A questão é exatamente esta. Por que existe tal resultado com a escalabilidade? E se o resultado não puder ser melhorado, foi sugerida uma opção para um novo modo de teste. Isto resolveria o problema dos testes longos quando se utilizam múltiplos caracteres.
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Análise de Testes e Otimização no MetaTrader 5 Strategy Tester
Anatoli Kazharski, 2018.01.27 20:15
Pergunta:
É possível criar um esquema Expert Advisor de múltiplos símbolos em MQL, para que a duração dos testes não aumente repetidamente ao adicionar símbolos ao teste?
//---
Se isto não for possível, então uma das opções para os desenvolvedores do terminal é adicionar mais um modo, quando o teste pode ser realizado símbolo por símbolo, em vez de todos os símbolos de uma só vez. Isto produziria o tempo de teste esperado no final. A questão é que os EAs com múltiplos símbolos são muito freqüentemente usados simplesmente para aqueles casos em que:
É para tais casos que precisamos de um novo modo que nos permita reduzir significativamente a duração dos testes e otimizar os parâmetros. E já para o teste final para testar todos os símbolos simultaneamente.
Você tem um resultado de 6, 25, 46. Por que não 6, 12 e 18?
A desaceleração tem que ser analisada em relação a um símbolo.
Dois caracteres com espigões é um modo de teste muito diferente de um único caractere. Portanto, é lógico olhar para a escalabilidade em relação a dois.
Além disso, a sobrecarga do indicador é tão selvagem que trabalhar através dos espiões é uma muleta. Esperando por serviços, onde a escalabilidade deve ser quase perfeita, em relação a apenas um símbolo. Como é o caso do temporizador. Somente não haverá carrapatos.
Um símbolo
Dois dígitos
Três símbolos
Quatro símbolos
Dois caracteres com espiões é um modo de operação muito diferente para um testador do que para um único caractere. Portanto, é lógico olhar para a escalabilidade em relação a dois.
Além disso, a sobrecarga do indicador é tão selvagem que trabalhar através dos espiões é uma muleta. Esperando por serviços, onde a escalabilidade deve ser quase perfeita, em relação a apenas um símbolo. Como é o caso do temporizador. Somente não haverá carrapatos.
Significativamente acelerado
Um símbolo
Dois símbolos
Três caracteres
Quatro caracteres
Se olharmos para os resultados relativos a dois símbolos, então dividimos o resultado de dois símbolos por dois: 17 / 2 = 8,5
Então, ao adicionarmos símbolos, multiplicamos este valor pelo número de símbolos para obter o tempo de teste esperado.
Mas este é, de qualquer forma, o melhor resultado até agora. Uma variante interessante é usar o símbolo atual no OnTick, enquanto o resto em eventos personalizados.
Você pode usá-lo enquanto não houver serviços.
Este é um fórum para comércio, sistemas automatizados de comércio e testes estratégicos.
Seqüência de execução Init() e DeInit()
Slava, 2017.04.14 10:18
Os serviços, entre outras coisas, terão funções comerciais e a capacidade de gerenciar objetos. E gráficos.
O fornecedor de dados de mercado é apenas uma possibilidade.
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Seqüência de execução Init() e DeInit()
Slava, 2017.04.14 10:21
Os serviços terão o OnTick(símbolo de corda). Mas carrapatos de um determinado símbolo terão de ser subscritosFórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
Seqüência de execução Init() e DeInit()
fxsaber, 2017.04.14 10:46
Acontece que os Serviços terão quase todas as funções: OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...
Se você não precisa de buffers indicadores e não quer lidar com as muletas indicadores/conselheiros, escreva em um novo tipo de programa - Serviços - que não tenha nenhuma limitação (que se estenda desde as versões anteriores da MT).
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
Seqüência de execução Init() e DeInit()
Slava, 2017.04.14 10:56
Exatamente.
Não haverá OnCalculate.
Ainda não há solução com o OnChartEvent.