Discussão do artigo "Controlando o declive da curva de equilíbrio durante o trabalho de um Expert Advisor" - página 4

 

solandr:

Realizei o seguinte experimento. Configurei o contador para acionar um lote reduzido para cada par de moedas. E testei todas as combinações de testes no M1 OHLC. Aqui está o resultado.

35 0 0 - testando apenas o primeiro par

0 36 0 - testando apenas o segundo par

0 0 0 168 - testando apenas o terceiro par.

36 35 0 0 - testando o primeiro e o segundo pares

0 35 162 - teste no segundo e terceiro pares

35 35 166 - teste em todos os três pares

Embora deva ser 35 36 168 quando estiver testando em todos os três pares.

Amanhã tentarei executar o EA em todos os ticks para comparação.

Se entendi corretamente, o número de negociações é diferente? Então, como o tamanho do lote pode afetar isso?

 
Dima_S:

Se entendi corretamente, - o número de transações é diferente? Então, como o tamanho do lote pode afetar isso?

Não, o número total de negociações em 3 pares de moedas ao mesmo tempo corresponde à soma das negociações em execuções separadas.

Os resultados mostram o número de ordens abertas com um lote reduzido.

Ainda estou executando o Expert Advisor. Estou tentando entender o que altera os resultados da execução total. Escreverei uma mensagem mais tarde.

Документация по MQL5: Торговые функции / HistoryDealsTotal
Документация по MQL5: Торговые функции / HistoryDealsTotal
  • www.mql5.com
Торговые функции / HistoryDealsTotal - Документация по MQL5
 
solandr:

Não, o número total de negociações em 3 pares de moedas ao mesmo tempo corresponde à soma das negociações em execuções separadas.

Os resultados mostram o número de ordens abertas com um lote reduzido.

Ainda estou executando o Expert Advisor. Estou tentando entender o que altera os resultados na execução total. Escreverei uma mensagem mais tarde.

Provavelmente, devido a algumas condições variáveis, o lucro/prejuízo das negociações muda ligeiramente de execução para execução - como resultado, em alguns pontos da curva de equilíbrio, a troca de lote pode (ou não) ocorrer.

A situação é mais ou menos assim.

 
Dima_S:

Talvez devido a algumas condições variáveis, o lucro/perda das negociações muda ligeiramente de uma execução para outra - como resultado, a troca de lotes pode (ou não) ocorrer em alguns pontos da curva de equilíbrio.

Algo parecido com isso.

Em princípio, a ideia é boa. No MT4, eu até uso um programa especial, o Spread Changer, que permite que você defina o spread para testes arbitrariamente, e os resultados não flutuam.

Ainda não encontrei um programa desse tipo para o MT5 (talvez eu não tenha procurado bem). Seria ótimo se, em versões futuras do terminal, os desenvolvedores incluíssem essa função no testador para aqueles que a desejarem.

 
solandr:

Em princípio, a ideia é boa. No MT4, eu até uso um programa especial, o Spread Changer, que permite que você defina o spread para testes arbitrariamente, e os resultados não flutuam.

Ainda não encontrei um programa desse tipo para o MT5 (talvez eu não tenha procurado bem). Seria ótimo se, em versões futuras do terminal, os desenvolvedores incluíssem essa função no testador para aqueles que a desejarem.

Idealmente, uma simples importação de um arquivo csv de cotações para teste seria útil. Porém, o ideal ainda não pode ser alcançado)))
 

Executei o EA em todos os ticks. Obtive os seguintes resultados:

Com o gerenciamento de saldo desativado, lucro nas execuções:

0 0 0 0 0 0 6702,44 primeiro par

0 0 0 0 0 5735,78 segundo par

0 0 0 0 0 3461,48 terceiro par

0 0 0 0 0 15901,66 todos os três pares - Deveria ter sido 15899,7. A diferença é de 1,96.

Com o gerenciamento de lotes habilitado, o lucro nas execuções:

35 0 0 = 6550,94

0 36 0 = 6956,95

0 0 184 = 3386.44

35 36 179 = 15991,56 - Deveria ter sido 16894,33. A diferença é de 902,77

Como você pode ver, com o balanço automático desativado, também há uma diferença, mas geralmente ela é microscópica. Quando o controle de lote está ativado, a diferença é bastante perceptível: 5,3% (devido ao número diferente de acionadores do lote reduzido). Como otimizar os parâmetros aqui? Que saída pode ser inventada?

Cada execução de todos os ticks leva cerca de 20 a 30 minutos.

Vou montar um experimento desse tipo. Pegue um Expert Advisor simples, adicione um sistema de controle de lote a ele e veja a diferença nas execuções.

 

A propósito, ao compilar o arquivo mqh do artigo, recebo estas mensagens:

possible loss of data due to type conversion BalanceSlopeControl.mqh 117 25
possible loss of data due to type conversion BalanceSlopeControl.mqh 118 21
declaração de 'current_slope' oculta a declaração de membro na linha 682 BalanceSlopeControl.mqh 909 9
0 erro(s), 3 aviso(s) 1 4

Eu os corrigi logo no início. As duas primeiras - especifiquei o tipo de conversão. E corrigi a terceira mensagem corrigindo o nome de ccurrent_slope na linha 909 e a correção correspondente mais adiante em double TBalanceSlopeControl::CalcTradeLots( double _min_lots, double _max_lots ).

Talvez seja aqui que o cachorro esteja enterrado? De qualquer forma, seria possível publicar o arquivo corrigido pelo próprio autor, pois minhas alterações podem estar ideologicamente erradas.

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
solandr:

Executei o EA em todos os ticks. Obtive os seguintes resultados:

...

Como você pode ver, quando o balanço automático está desativado, também há uma diferença, mas geralmente ela é microscópica.

Obtenha resultados idênticos em todos os modos ao testar em qualquer símbolo.

Para isso, trabalhe com ticks de todos os símbolos ou com um cronômetro e controle a aparência de uma nova barra em todos os instrumentos.

O saldo não deve divergir em um centavo.

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
solandr:

A propósito, ao compilar o arquivo mqh do artigo, recebo estas mensagens:

possible loss of data due to type conversion BalanceSlopeControl.mqh 117 25
possible loss of data due to type conversion BalanceSlopeControl.mqh 118 21
declaração de 'current_slope' oculta a declaração de membro na linha 682 BalanceSlopeControl.mqh 909 9
0 erro(s), 3 aviso(s) 1 4

Eu os corrigi logo no início. As duas primeiras - especifiquei o tipo de conversão. E corrigi a terceira mensagem corrigindo o nome de ccurrent_slope na linha 909 e a correção correspondente mais adiante em double TBalanceSlopeControl::CalcTradeLots( double _min_lots, double _max_lots ).

Talvez seja aqui que o cachorro esteja enterrado? De qualquer forma, seria possível publicar o arquivo corrigido pelo próprio autor, pois minhas alterações podem estar ideologicamente erradas.

Não é provável aqui. Eu me lembro de alguma regra, mas não me lembro do quê))) Aqui está meu arquivo atual.

Arquivos anexados:
 
Dima_S:

Acho que não é o caso aqui. Eu me lembro de alguma regra, mas não me lembro o quê))) Aqui está meu arquivo atual.

Obrigado pela nova versão do arquivo!

A comparação do conteúdo do arquivo com o arquivo do artigo mostra algumas diferenças no novo arquivo nas linhas 37, 115, 116, 907, 966.

Vamos ver o quanto essas alterações podem afetar o Expert Advisor