xyz999: 2) Se a optimização (backktest) foi realizada durante um período de 10 meses e a opção de teste 1/4 forward foi seleccionada, como por exemplo, como devo entender:
Encontrei a resposta à minha segunda pergunta. No entanto, NÃO há respostas à primeira e terceira perguntas.
Eu também gostaria de os ter.
Quero saber os resultados e rácios de outros comerciantes. Como os meus resultados são muito alarmantes. Sou cientista na área do controlo automático e modelação de processos não estacionários, o que inclui também um gráfico de movimento de preços no mercado. Tenho vindo a modelar processos não estacionários durante muitos anos e a forma como o testador trabalha não se enquadra de forma alguma nos meus anos de experiência. Algo está errado aqui. Ou utilizo incorrectamente o testador ou este não funciona correctamente. Vamos descobrir juntos.
O meu backtest estritamente após o período de optimização mostra 200% do lucro que tivemos durante a optimização com os mesmos parâmetros. No entanto, ao escolher outros parâmetros de optimização e testes durante o período de optimização, obteremos várias vezes menos lucro. Não deve ser esse o caso. É por isso que tenho algumas perguntas.
xyz999: Encontrei uma resposta para a minha segunda pergunta. No entanto, não há RESPOSTA À PRIMEIRA E TERCEIRA PERGUNTA. Eu também gostaria de os ter.
Bem, não depende de mim, como eles dizem, "Tudo o que posso" (c). Estou longe do tema em si. Tente procurar no fórum, talvez onde já tenham sido discutidos testes avançados. Ou, se achar que o tema é muito importante, crie um novo ramo temático. Caso contrário, as perguntas perder-se-ão no ramo geral.
Peguei no corpo do indicador de Média Móvel Personalizada e coloquei o tampão de IFM dentro.
Eu alterei o preço.
Fi-lo por si como perito, apenas um indicador e um comentário para verificar.
Obrigado por não deixar a mensagem sem resposta. Infelizmente, o testador continua a rejeitar a suavização dos outros indicadores. O meu consultor especializado requer dois indicadores - MFI e DEMA ao mesmo tempo. Implementei o vosso algoritmo com MFI no meu EA - em vão - não fui capaz de o executar para optimização de variáveis globais.
bool Buy_opened=false; // переменные, в которых будет храниться информация bool Sell_opened=false; // о наличии соответствующих открытых позицийif(PositionSelect(_Symbol)==true) // есть открытая позиция
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
Buy_opened=true; //это длинная позиция
}
elseif(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
Sell_opened=true; // это короткая позиция
}
}
bool Buy_Condition_1=...
bool Buy_Condition_2=...
bool Buy_Condition_3=...
if(Buy_Condition_1 || Buy_Condition_2)
{
if(Buy_Condition_3)
{
// есть ли в данный момент открытая позиция на покупку?if(Buy_opened)
{
Alert("Уже есть позиция на покупку!!!");
return; // не добавлять к открытой позиции на покупку
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // последняя цена ask
mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_BUY; // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=10; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
return;
}
}
}
bool Buy_Close_1=....
bool Buy_Close_2=...
bool Buy_Close_3=...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
// есть ли в данный момент открытая позиция на покупку?if(????)
{
Alert("Позицию на покупку закрываю!!!");
return; // закрыл
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена bid
mrequest.sl = 0;
mrequest.tp = 0;
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_SELL; // ордер на продажу // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=10; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
Em vez de pontos de interrogação, coloquei PositionSelect(_Symbol) com valor verdadeiro. Não ajudou.
Pergunta. O que posso mudar minimamente - para poder estabelecer condições de proximidade?
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
Obrigado, pois senti que a resposta era muito simples e que estava por perto. No entanto, surgiu outra questão sobre a parte dos pontos de interrogação.
Sobre o algoritmo.
Em condições apropriadas + sem posição - a posição é aberta, e noutras condições e na presença de uma posição aberta - a posição aberta é fechada.
Se não estou enganado - existência de uma posição, nomeadamente Buy_opened
if(Buy_Condition_1 || Buy_Condition_2)
{
if(Buy_Condition_3)
{
// есть ли в данный момент открытая позиция на покупку?if(Buy_opened)
{
Alert("Уже есть позиция на покупку!!!");
return; // не добавлять к открытой позиции на покупку
}
igual a um - causa alerta e retorno (volta ao início), e igual a zero - abre ordem de compra.
Pergunta. O que devo escrever em vez de pontos de interrogação - a condição de uma ordem aberta, para que a EA não abra uma posição (no meu caso, abre uma ordem de venda) ?
bool Buy_Close_1=....
bool Buy_Close_2=...
bool Buy_Close_3=...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
// есть ли в данный момент открытая позиция на покупку?if(????)
{
Alert("Позицию на покупку закрываю!!!");
return; // закрыл
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена bid
mrequest.sl = 0;
mrequest.tp = 0;
No momento prescrevi também Buy_opened, porque as condições desta definição estão relacionadas com PositionSelect(_Symbol)
Compreendo que as perguntas não significam nada, pois é possível experimentar rapidamente todas as opções lógicas possíveis e testar, mas o problema é que o bug testador não me permite fazer isto, mas há uma oportunidade de diagnosticar de facto no M1 em modo de comércio real.
Compreendo que as perguntas não significam nada, já que se pode experimentar rapidamente todas as opções e testes lógicos possíveis, mas o problema é que o bug do testador não me permite fazer isso, mas há uma oportunidade de diagnosticar de facto no M1 em modo de comércio real.
Não compreendo bem a sua pergunta.
E que insecto no testador encontrou que o impede de executar o teste?
O que é o erro no testador que o impede de executar o teste?
Descrevi-o anteriormente ou no ramo do Indicador. A demonstração referente ao cabo indicador de IFM não é exibida na janela de IFM e, portanto, o testador não funciona, mas o Expert Advisor trabalha. O mesmo com MA, AMA...!
Sobre a questão. O que devemos escrever em vez dos pontos de interrogação para fazer o Consultor Especialista "compreender" que existe uma posição aberta e não abrir uma ordem!
bool Buy_Close_1=....
bool Buy_Close_2=...
bool Buy_Close_3=...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
// есть ли в данный момент открытая позиция на покупку?if(????)
{
Alert("Позицию на покупку закрываю!!!");
// Return убрал благодаря форуму ))
}
Lester: Descrito anteriormente, ou no ramo do indicador. Dema referente ao cabo indicador de IFM - não é exibido na janela IFM, e portanto - o Expert Advisor não funciona. O mesmo se aplica à MA, AMA.
Sobre a questão. O que devemos escrever em vez de pontos de interrogação para que a EA "veja" que existe uma posição aberta e não abra uma ordem!
Se houver uma posição (PositionSelect(_Symbol)) e todas as outras condições forem cumpridas, então feche a posição. Se o retorno do seu exemplo não for removido, a condição deve ter o seguinte aspecto
if(!PositionSelect(_Symbol))
{
return;
}
o que significa que se não houver posição, então saia. Se não sair, o programa executará o código que vem depois deste bloco.
Mas eu colocaria a verificação da presença/ausência de posição antes de fechar as verificações de condições.
Terminal do Cliente / Testador de Estratégia / Funcionamento do Testador de Estratégia / Testes Avançados
Obrigado.
Sim, a partir desta ligação.
http://www.metatrader5.com/ru/terminal/help/tester/tester_using/forward_testing.
Encontrei a resposta à minha segunda pergunta. No entanto, NÃO há respostas à primeira e terceira perguntas.
Eu também gostaria de os ter.
Quero saber os resultados e rácios de outros comerciantes. Como os meus resultados são muito alarmantes. Sou cientista na área do controlo automático e modelação de processos não estacionários, o que inclui também um gráfico de movimento de preços no mercado. Tenho vindo a modelar processos não estacionários durante muitos anos e a forma como o testador trabalha não se enquadra de forma alguma nos meus anos de experiência. Algo está errado aqui. Ou utilizo incorrectamente o testador ou este não funciona correctamente. Vamos descobrir juntos.
O meu backtest estritamente após o período de optimização mostra 200% do lucro que tivemos durante a optimização com os mesmos parâmetros. No entanto, ao escolher outros parâmetros de optimização e testes durante o período de optimização, obteremos várias vezes menos lucro. Não deve ser esse o caso. É por isso que tenho algumas perguntas.
Bem, não depende de mim, como eles dizem, "Tudo o que posso" (c). Estou longe do tema em si. Tente procurar no fórum, talvez onde já tenham sido discutidos testes avançados. Ou, se achar que o tema é muito importante, crie um novo ramo temático. Caso contrário, as perguntas perder-se-ão no ramo geral.
Também há materiais de referência no terminal. F1.
Fez uma coisa muito estúpida de fazer.
Peguei no corpo do indicador de Média Móvel Personalizada e coloquei o tampão de IFM dentro.
Eu alterei o preço.
Fi-lo por si como perito, apenas um indicador e um comentário para verificar.
Mais uma vez obrigado pelas vossas mensagens.
Em vez de pontos de interrogação, coloquei PositionSelect(_Symbol) com valor verdadeiro. Não ajudou.
Pergunta. O que posso mudar minimamente - para poder estabelecer condições de proximidade?O artigo sobre o Conselheiro Especialista https://www.mql5.com/ru/articles/100 menciona as condições para a abertura de posições, mas não discute as condições para o encerramento de posições.
Em vez de pontos de interrogação, coloquei PositionSelect(_Symbol) com valor verdadeiro. Não ajudou.
Pergunta. O que posso mudar para o mínimo - para poder estabelecer condições de fecho?Tem um retorno após o Alerta. A posição provavelmente não está a fechar devido a este regresso. Por favor, leve-o embora e tente novamente.
No entanto, surgiu outra questão sobre a parte dos pontos de interrogação.
Sobre o algoritmo.
Em condições apropriadas + sem posição - a posição é aberta, e noutras condições e na presença de uma posição aberta - a posição aberta é fechada.
Se não estou enganado - existência de uma posição, nomeadamente Buy_opened
igual a um - causa alerta e retorno (volta ao início), e igual a zero - abre ordem de compra.
Pergunta. O que devo escrever em vez de pontos de interrogação - a condição de uma ordem aberta, para que a EA não abra uma posição (no meu caso, abre uma ordem de venda) ?
No momento prescrevi também Buy_opened, porque as condições desta definição estão relacionadas com PositionSelect(_Symbol)
Compreendo que as perguntas não significam nada, pois é possível experimentar rapidamente todas as opções lógicas possíveis e testar, mas o problema é que o bug testador não me permite fazer isto, mas há uma oportunidade de diagnosticar de facto no M1 em modo de comércio real.
...
Compreendo que as perguntas não significam nada, já que se pode experimentar rapidamente todas as opções e testes lógicos possíveis, mas o problema é que o bug do testador não me permite fazer isso, mas há uma oportunidade de diagnosticar de facto no M1 em modo de comércio real.
Não compreendo bem a sua pergunta.
E que insecto no testador encontrou que o impede de executar o teste?
Não compreendo bem a sua pergunta.
O que é o erro no testador que o impede de executar o teste?
Sobre a questão. O que devemos escrever em vez dos pontos de interrogação para fazer o Consultor Especialista "compreender" que existe uma posição aberta e não abrir uma ordem!
Descrito anteriormente, ou no ramo do indicador. Dema referente ao cabo indicador de IFM - não é exibido na janela IFM, e portanto - o Expert Advisor não funciona. O mesmo se aplica à MA, AMA.
Sobre a questão. O que devemos escrever em vez de pontos de interrogação para que a EA "veja" que existe uma posição aberta e não abra uma ordem!
Se houver uma posição (PositionSelect(_Symbol)) e todas as outras condições forem cumpridas, então feche a posição. Se o retorno do seu exemplo não for removido, a condição deve ter o seguinte aspecto
o que significa que se não houver posição, então saia. Se não sair, o programa executará o código que vem depois deste bloco.
Mas eu colocaria a verificação da presença/ausência de posição antes de fechar as verificações de condições.