Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 970

 
Amigos. Pelos nossos esforços conjuntos, escrevi finalmente o algoritmo de Expert Advisor que tinha em mente,
e muito obrigado. Poder-se-ia dizer que todos o fizemos)
Funciona, os resultados são os esperados e podemos seguir em frente.
---
Pergunta sobre os testes no modo OHLC M1.
É realista programar o Expert Advisor para que os resultados dos testes na OHLC M1 se aproximem dos resultados dos testes em "todas as carraças"?
Pesquisei em todo o fórum, existem explicações claras para o facto de o modo OHLC M1 com 4 pontos de referência de geração não coincidir
com os modos baseados em carrapatos.

Mas não encontrei nenhuma recomendação, exemplos de como programar esta condição para ser semelhante à OHLC M1, e é de todo possível?

Gosto do modo OHLC M1 apenas por causa da velocidade dos cálculos.
Especificidades da EA. (Se for importante)
Define ordens de paragem com SL e TP fixos, muitas vezes modifica as ordens a novos níveis de preços, à espera de serem accionadas.
Não há indicadores, apenas contadores de preços.
Se não for possível simular o modo "OHLC M1", talvez fosse melhor usar o modo " Abrindo preços"?
No final, gostaria de compreender que modo é razoável de usar, para que os cálculos sejam rápidos e
Gostaria de compreender o que devo usar para fazer cálculos rapidamente e para minimizar as divergências entre os modos totalmente técnicos.

Até agora, obtive a seguinte divergência no mesmo tipo de configurações.

"OHLC M1 ; 8 anos; 1681 ofícios. (inicialmente utilizei este método)

OHLC M1

"Preços de abertura"; 8 anos; 1655 comércios.

Apenas preços de abertura

"Todas as carraças" 8 anos; 1676 ofícios.

todos os tiques

O algoritmo parece ser robusto, e posso até ser capaz de melhorar os resultados de cada método separadamente,

mas perderia versatilidade e pareceria redundante.




 
vladzeit:


Em suma, como exemplo, se tiver posições de compra TP definidas em 1,16000, então "todas as carraças" fecharão a cerca deste preço. OHLC fechará a esse preço acima de 1,16000 e isso pode ser uma diferença bastante grande, pelo que OHLC mostrará sempre melhores resultados. A mesma história com "A preços de abertura".

 
Nauris Zukas:

Brevemente, como exemplo, se definir as posições de compra TP a 1,16000, "todas as carraças" fecharão aproximadamente a este preço. OHLC fechará ao preço que foi acima de 1,16000 isto e pode ser uma diferença bastante grande, por isso, OHLC mostrará sempre melhores resultados. A mesma história com "A preços de abertura".

Nauris, obrigado. Compreendo (posso adivinhar) porque é que os resultados diferem de método para método. Mas o que eu quero compreender é isto:

Se o testador simulou o método "OHLC M1", então como repetir o mesmo método no Expert Advisor programático.

O testador reproduziu-o de alguma forma...

 
vladzeit:

Nauris, obrigado. Compreendo (posso adivinhar) porque é que os resultados diferem de método para método. Mas o que eu quero compreender é isto:

Se o testador simulou o método "OHLC M1", então como repetir o mesmo método no Expert Advisor programático.

O testador reproduziu-o de alguma forma...

Confie em mim, não precisa dessa precisão, optimize o resultado e execute-o em todas as carraças, a melhor opção ...

Se não estiver a 3-4 pips de distância, não faria muita diferença se fechasse com dois pips a mais ou a menos...

Reproduzir algo no Expert Advisor não vai fazer o seu tempo andar mais depressa, mas, pelo contrário, vai atrasá-lo...

 
xxz:

Acredite, não precisa de tal precisão, optimize o resultado e execute-o em todas as carraças, a melhor opção ...

Se não estiver a 3-4 pips de distância, então não há grande diferença se fechar com dois pips a mais ou a menos...

Reproduzir algo no Expert Advisor não vai acelerar o tempo, mas pelo contrário, vai atrasá-lo...

Obrigado. Se ninguém continuar a implementar o método"OHLC M1", estarei apenas condenado a usar o seu conselho))))

 
vladzeit:

Obrigado. Se ninguém continuar o método de"OHLC M1" estarei condenado a usar o seu conselho))))

Se não pensar numa ideia particularmente brilhante, a diferença está na direcção das carraças, no comércio real de carraças a vela pode abrir, em baixo, em cima, fechar, e se a vela for grande, pode comprar em baixo e ter lucro no fecho, em simulação a vela forma uma abertura, em cima, em baixo, em baixo, em fechar, digamos que a abertura e o topo coincidem com o fundo e fechar também, depois numa tal vela, pode comprar mas não ter lucro, e se o mercado tiver descido, então aqui tem uma ordem de perda suspensa ...

... daí a divergência...

 
vladzeit:

Obrigado. Se ninguém continuar a implementar o método"OHLC M1", estarei apenas condenado a seguir o seu conselho))))

O método fala por si. Utilize apenas os preços OHLC de todas as barras de minutos incluídas no bar actual no seu EA.
 
vladzeit:

Obrigado. Se ninguém continuar a implementar o método"OHLC M1", estarei apenas condenado a seguir o vosso conselho))))

Abrir/fechar em Expert Advisor não por níveis de preços mas por Open. Há um sinal de abrir/fechar, esperar pela próxima vela de 1M e abrir/fechar.

 
Artyom Trishkin:
O método fala por si. Utilize na sua EA apenas os preços OHLC de todas as barras de minutos incluídas no bar actual.

Artyom, já experimentei. Em todas as condições, a abertura e modificação de encomendas coloquei uma condição "ao nascimento de uma nova barra" através da função booleanaéNewBar()

assim:

if (Buys==true )
   {
   int count_buy_stops=0;   int count_pos_buy=0;
   CalOrders_Buy(count_buy_stops);   CalPosition_Buy(count_pos_buy);
   if(count_buy_stops==0 && count_pos_buy==0) && isNewBar())
   {
   BuyStop();
   }
   }

A própria funçãoisNewBar() apartir dos exemplos e artigos code.base.

bool isNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time=0;
//--- текущее время
   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
   if(last_time==0)//--- если это первый вызов функции
   {
   last_time=lastbar_time;    //--- установим время и выйдем 
   return(false);
   }
   if(last_time!=lastbar_time)//--- если время отличается
   {
   last_time=lastbar_time;    //--- запомним время и вернем true
   return(true);
   }
//--- дошли до этого места - значит бар не новый, вернем false
   return(false);
  }

Parece funcionar e faz encomendas e modifica-as apenas num novo bar, mas por alguma razão existe uma discrepância.

Existe uma discrepância entreOHLC em M1 que eu apliquei semisNewBar() e "todas as carraças" com a funçãoisNewBar().

Esperava que ao aplicaro isNewBar() em "todas as carraças" obtivesse o mesmo resultado queOHLC nos preços correntes.

Assim, não compreendo se devo ter estragado o código ou se não compreendo correctamente o modoOHLC e espero que isso seja impossível.

Não sei onde escavar.

Artyom, diz-me mais, se não for difícil.

A ordem pode ser definida e modificada numa nova barra, mas SL e TP (no testador) funcionarão de qualquer forma dentro da barra antiga?

 
Tentou e falhou na tentativa de converter de lote fixo para lote percentual. Alguém pode aconselhar sobre o código completo?
Arquivos anexados:
Experiment.mq5  38 kb