Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 552

 
VasiliKolchanov:
Agradeço sua resposta, apenas uma pergunta, não será um atraso, ou seja, os alertas serão acumulados a cada tique durante a pausa, e após um tempo a EA me enviará todos eles de qualquer forma (todos acumulados) ? Pode parecer ridículo, mas desculpe novato - estou aprendendo.

Não vai, porque não vai chegar ao ponto de acionar um alerta. Você receberá um alerta e, após um determinado período de tempo, outro alerta e assim por diante.

 
Vitaly Muzichenko:

Na verdade, deveria ser ao contrário)

Obrigado!!!

 

Explique o que está errado aqui. Eu estabeleço uma abertura de ordem em uma quebra diária em castiçais diários. Ou seja, às 00:00, uma nova vela diária se abre dentro da vela anterior.



duplo abrir1, fechar1, abrir, fechar;

open1=iHigh(NULL,PERÍODO_D1,1);

close1=iLow(NULL,PERÍODO_D1,1);

open=iHigh(NULL,PERÍODO_D1,0);

close=iLow(NULL,PERÍODO_D1,0);


if(O(m)==falso){ //se não houver ordem

if(open1<Ask){

b(......);} // pedido aberto


if(close1>Ask){

s(.......);}}/abrir pedido



Hora de Moscou, a ordem abre dentro da vela anterior às 00.03, eu estava observando à noite às 00.03 quando uma nova vela foi formada e ainda assim abriu a ordem. É como se a EA não visse um novo castiçal diário.

Embora eu tenha feito exatamente o mesmo em uma parada horária, ele funciona perfeitamente.

Se eu habilitar minha EA às 06h00, ela funcionará como deveria, mas não vou gostar do fato de que as avarias diurnas acontecem antes das 06h00 e as ordens serão abertas em lugares errados depois das 06h00. O problema está na diferença de tempo entre a vela diária e o tempo de Moscou. Grande capital de DC


Socorro! Por favor!

 
Evgeniy Oshurkevich : Você respondeu sua própria pergunta. Os candelabros são desenhados no tempo do servidor. E seu local pode não coincidir com ele.

Portanto, deixe a coruja durante a noite, se normalmente escrita, ela o colocará em uma posição. Ou calcule seus candelabros no intervalo de tempo em que você está interessado.

 
Ihor Herasko:

Não vai, porque não vai chegar ao ponto de acionar um alerta. Você receberá um alerta e então, após um período de tempo definido, outro

Obrigado!

 

Como lidar com uma situação em que uma ordem aberta adiada para amanhã, automaticamente com a abertura de uma nova sessão teve lucro sobre os parâmetros especificados? A única pergunta é: como reconhecer uma nova sessão? A nova função de detecção de barras não vai funcionar em minha situação. Talvez alguém saiba como retornar separadamente o ano, mês e dia da abertura do pedido, eu resolverei o problema neste caso, eu não sei como fazer o resto.

 
VasiliKolchanov:

Como lidar com uma situação em que uma ordem aberta adiada para amanhã, automaticamente com a abertura de uma nova sessão teve lucro sobre os parâmetros especificados? A única pergunta é: como reconhecer uma nova sessão? A função de reconhecer um novo bar não funcionará na minha situação. O resto eu tenho uma idéia aproximada de como fazer.

Obviamente - a função de reconhecimento de uma nova sessão é necessária)

 
VasiliKolchanov:

Talvez alguém saiba como retornar separadamente o ano, mês e dia de abertura desta ordem, então o problema seria resolvido. Não sei como fazer o resto. E não sei se isso me ajudará ou não a sugerir em que formato a função de valor de retorno OrderOpenTime (ano.mês.dia.hora : min : seg OU hora : min : seg) ?

aqui tenho esboçado e testado um roteiro que vai verificar o histórico de ordens fechadas (não tenho ordens de mercado agora, você mesmo pode refazê-las) e encontrar a última ordem fechada e registrá-la:

#property strict
//+------------------------------------------------------------------+
void OnStart()
  {
   int i,otype,k=OrdersHistoryTotal();
   string sy=Symbol();
   datetime oclose,t=0;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
        {
         otype    = OrderType();
         oclose   = OrderCloseTime();
         if(OrderSymbol()==sy)
           {
            if(otype==OP_BUY || otype==OP_SELL)
              {
               if(t<oclose)
                 {
                  t=oclose;
                 }
              }
           }
        }
     }
   Print("Последний ордер закрыт: ",TimeDay(t)," день, ",TimeHour(t),"час, ",TimeMinute(t)," минуты");
  }
//+------------------------------------------------------------------+

resultado:

21:12:07.558 teste EURUSD,H1: Última encomenda encerrada: dia 27, 21h, 17 min

 
Taras Slobodyanik:

obviamente - uma nova função de reconhecimento de sessão é necessária)

Como se parece com Taras ?
 
Igor Makanu:

Esbocei e testei um roteiro que vai verificar o histórico de ordens fechadas (não tenho uma ordem de mercado agora, você mesmo pode refazê-la) e encontrar a última ordem fechada e registrar as informações sobre ela:

resultado:

21:12:07.558 teste EURUSD,H1: Última encomenda encerrada: dia 27, 21h, 17 min

Razão: