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?
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.
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.
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 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
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.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
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?
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.
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.
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.
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.
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.
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.
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.
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