Dei uma olhada nos meus próprios arquivos e, de fato, para alguns símbolos, não apareciam arquivos com histórico de ticks, dei uma olhada no registro e lá estava ele:
2020.02.1216:02:30.144 Core 1 NZDUSD : real ticks begin from 2017.01.0200:00:00
Agora eu entendo, o resto foi uma simulação.
A propósito, o MultiTester não muda o símbolo no terminal minimizado, é melhor adicionar a abertura de uma janela antes de iniciar uma nova passagem. Por enquanto, adicionei essa função ao fInit.
Por favor, compartilhe sua experiência sobre como fazer o GA corretamente. Deparei-me com uma situação em que o GA encontra apenas um dos extremos locais necessários.
Para um determinado TS/símbolo, sei onde procurar, então faço o GA em diferentes intervalos. Mas, em geral, não está claro como proceder.
Por favor, compartilhe sua experiência sobre como fazer o GA corretamente. Deparei-me com uma situação em que o GA encontra apenas um dos extremos locais necessários.
Para um determinado TS/símbolo, sei onde procurar, então faço o GA em diferentes intervalos. Mas, em geral, não está claro como proceder.
Por favor, compartilhe sua experiência sobre como fazer o GA corretamente. Deparei-me com uma situação em que o GA encontra apenas um dos extremos locais necessários.
Para um determinado TS/símbolo, sei onde procurar, então faço o GA em diferentes intervalos. Mas, em geral, não está claro como proceder.
Agora paro de testar se o drawdown for grande
e, para animar um pouco o GA, estou fazendo isso:
#define TESTER_STOP(ret) { EA_STOP = true; TesterStop(); return ret; }
doubleOnTester()
{
srand((int)TimeCurrent());
// if(StartHour==20 && CountHours==22) return (-(rand() % 1000));// Uso isso se o GA começou a convergir em torno de um máximo por tempo de execuçãoif(EA_STOP) return (-(rand() % 1000)); // teste malsucedido, interrompido por um grande drawdownint o_count = 0;
for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderType() < 2) o_count++;
}
if(o_count < 160) return (-(rand() % 1000)); // buscando pelo menos 160 negócios em seis mesesreturn(AccountInfoDouble(ACCOUNT_BALANCE));
}
voidOnTick()
{
if(IS_OPTIMIZATION)
{
double balance = AccountInfoDouble(ACCOUNT_BALANCE);
MaxBalance = fmax(MaxBalance, balance);
if(MaxBalance - balance > 200) TESTER_STOP(); // interromper o teste em um drawdown de US$ 200
}
Este é o método que estou testando na última semana, agora estou muito feliz com o GA.
Em meu otimizador, repito o GA até que, por 4 vezes, não haja melhora no último resultado. Isso pode levar uma dúzia ou mais de tentativas. Normalmente, obtenho bons resultados. Embora isso leve muito tempo.
Ao re-otimizar nas datas atuais, posso obter um novo máximo local aprimorado e, caso contrário, começo com o antigo e o refino para o novo mercado por meio de otimização lenta (escolho um grupo de variáveis interdependentes e otimizo iterativamente cada combinação em pares).
Além disso, introduzi micro penalidades (mutagênico adicional) no OnTester. Nesse caso, o GA executa mais passagens devido a mutações mais frequentes e, como resultado, novos máximos são encontrados com mais frequência.
// Micro penalidades para escolher um valor de parâmetro menor quando os resultados são iguais
res -= BP * 0.0001 / 200; // Divida pelo intervalo de otimização (0...200)
Vou parar de testar agora se houver uma grande queda.
E para animar um pouco o GA, estou fazendo isso:
Estou testando na última semana usando esse método e agora estou muito satisfeito com o GA.
Faço aproximadamente da mesma maneira. O controle de drawdown é para uma otimização mais rápida, e o controle do número de negociações é para direcionar melhor o GA, filtrando o lixo.
introduziu micro penalidades (mutagênico adicional) no OnTester. Nesse caso, o GA realiza mais passagens devido a mutações mais frequentes e, como resultado, novos máximos são encontrados com mais frequência.
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.
Dei uma olhada nos meus próprios arquivos e, de fato, para alguns símbolos, não apareciam arquivos com histórico de ticks, dei uma olhada no registro e lá estava ele:
Agora eu entendo, o resto foi uma simulação.
A propósito, o MultiTester não muda o símbolo no terminal minimizado, é melhor adicionar a abertura de uma janela antes de iniciar uma nova passagem. Por enquanto, adicionei essa função ao fInit.
A propósito, o MultiTester não alterna o símbolo no terminal minimizado; é melhor abrir uma janela antes de iniciar uma nova passagem.
Não verifiquei e não encontrei esse problema.
No final, fiz o seguinte. Formar um lote de tarefas a partir de arquivos ini e enviá-lo para execução.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Expert Advisors: validar
fxsaber, 2020.02.22 10:46 AM
Quando preciso executar várias tarefas diferentes do Tester, uso o Validate.
1. Configuro uma tarefa no Tester que desejo executar.
2. Na guia Configurações, pressiono CTRL+C. Todas as configurações aparecem na área de transferência.
3 Usando CTRL+V, copio essas configurações em um arquivo ini, que coloco na pasta com as tarefas.
4. é assim que crio o número necessário de tarefas - arquivos ini (quatro tarefas na tela).
5. Ao iniciar o Validate, especifico o nome da pasta onde as tarefas estão localizadas.
É isso, agora o Validate, com todos os seus truques, executará essas tarefas.
Eu uso o MultiTester-derivatives somente em casos específicos, quando preciso criar tarefas à medida que as executo.
Recomendo usar o Validate para executar um lote de quaisquer tarefas prontas.
Por favor, compartilhe sua experiência sobre como fazer o GA corretamente. Deparei-me com uma situação em que o GA encontra apenas um dos extremos locais necessários.
Para um determinado TS/símbolo, sei onde procurar, então faço o GA em diferentes intervalos. Mas, em geral, não está claro como proceder.
Por favor, compartilhe sua experiência sobre como fazer o GA corretamente. Deparei-me com uma situação em que o GA encontra apenas um dos extremos locais necessários.
Para um determinado TS/símbolo, sei onde procurar, então faço o GA em diferentes intervalos. Mas, em geral, não está claro como proceder.
Acho que houve algo sobre o assunto aqui - https://www.mql5.com/ru/forum/87536.
Ou entre em contato com o autor(@Andrey Dik).
Acho que havia algo sobre o assunto aqui - https://www.mql5.com/ru/forum/87536
Ou entre em contato com o autor(@Andrey Dik).
Estou fazendo perguntas no contexto do uso do MT5-Tester. Portanto, os algoritmos de otimização personalizados não são adequados.
Por favor, compartilhe sua experiência sobre como fazer o GA corretamente. Deparei-me com uma situação em que o GA encontra apenas um dos extremos locais necessários.
Para um determinado TS/símbolo, sei onde procurar, então faço o GA em diferentes intervalos. Mas, em geral, não está claro como proceder.
Agora paro de testar se o drawdown for grande
e, para animar um pouco o GA, estou fazendo isso:
Este é o método que estou testando na última semana, agora estou muito feliz com o GA.
Em meu otimizador, repito o GA até que, por 4 vezes, não haja melhora no último resultado. Isso pode levar uma dúzia ou mais de tentativas. Normalmente, obtenho bons resultados. Embora isso leve muito tempo.
Ao re-otimizar nas datas atuais, posso obter um novo máximo local aprimorado e, caso contrário, começo com o antigo e o refino para o novo mercado por meio de otimização lenta (escolho um grupo de variáveis interdependentes e otimizo iterativamente cada combinação em pares).
Além disso, introduzi micro penalidades (mutagênico adicional) no OnTester. Nesse caso, o GA executa mais passagens devido a mutações mais frequentes e, como resultado, novos máximos são encontrados com mais frequência.
Vou parar de testar agora se houver uma grande queda.
E para animar um pouco o GA, estou fazendo isso:
Estou testando na última semana usando esse método e agora estou muito satisfeito com o GA.
Faço aproximadamente da mesma maneira. O controle de drawdown é para uma otimização mais rápida, e o controle do número de negociações é para direcionar melhor o GA, filtrando o lixo.
Mas isso não é suficiente.
ZY É mais barato.
introduziu micro penalidades (mutagênico adicional) no OnTester. Nesse caso, o GA realiza mais passagens devido a mutações mais frequentes e, como resultado, novos máximos são encontrados com mais frequência.
Favor esclarecer.