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

 
toni_stark:
Pode dizer-me o código: a EA abre uma encomenda por dia, como fechar estas encomendas no final do dia, por exemplo 23:50?
if(TimeCurrent()>=D'23:50') close_all();
 
Vasyl Nosal:
if(TimeCurrent()>=D'23:50') close_all();
Neste caso, todas as encomendas serão fechadas ou apenas as que forem abertas pela EA?
 
toni_stark:
Esta opção irá fechar todas as encomendas ou apenas aquelas que foram abertas pela EA?
Depende da função de fecho.
 
toni_stark:
Neste caso, todas as encomendas serão fechadas ou apenas as abertas pelo Consultor Especialista?

:)))

O que se escreve na função close_all()

 
que parâmetro ou função ajudará a deslocar o indicador para cima ou para baixo por n-points?
Arquivos anexados:
 
Vasyl Nosal:

:)))

O que se escreve de perto_tudo()

Não está completamente claro com a função close_all(), não está no metaiditor. Talvez a função OrderClose() esteja destinada?
 
toni_stark:
Não está inteiramente claro sobre a função close_all(), não está no metadvisor. Talvez a função OrderClose() esteja destinada?

ele quer dizer algo como isto

//+------------------------------------------------------------------+
void сlose_all()
  {
   double price=0;
   bool error;
   int total=OrdersTotal();

   for(int i=total-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         //Print(__FUNCTION__);

         if(OrderType()==OP_BUY)
           {
            RefreshRates();
            price=NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),(int)MarketInfo(OrderSymbol(),MODE_DIGITS));
            error=OrderClose(OrderTicket(),OrderLots(),price,10000,clrBlue);
            if(!error) PrintFormat("Error № %d closing the order. Ticket: %d",GetLastError(),OrderTicket());
           }
         if(OrderType()==OP_SELL)
           {
            RefreshRates();
            price=NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),(int)MarketInfo(OrderSymbol(),MODE_DIGITS));
            error=OrderClose(OrderTicket(),OrderLots(),price,10000,clrBlue);
            if(!error) PrintFormat("Error № %d closing the order. Ticket: %d",GetLastError(),OrderTicket());

           }
         if(OrderType()>1)
           {
            error=OrderDelete(OrderTicket());
            if(!error) PrintFormat("Error № %d delete the order. Ticket: %d",GetLastError(),OrderTicket());
           }

        }

     }
  }
//+------------------------------------------------------------------+
 
Sergey Gritsay:

ele quer dizer algo como isto

Já percebi, uma função personalizada.
 
Caros programadores. Pode ajudar? Tenho de "apertar" uma EA (estou a colocá-la para fora) para definir o número de ordens abertas. Não sei se vai ajudar. Coloco estas corujas em vários pares e apenas uma encomenda é aberta. Se eu abrir uma ordem num dos pares, os sinais no outro par não são ignorados. Não sei o que fazer com ele.
Arquivos anexados:
 
Desculpe...o meu erro(E quando uma ordem está aberta num par, os sinais no outro par são INVOIDOS)