Escreverei um conselheiro sem custos - página 17

 
Olá, comecei a aprender MQL4 e comecei com o Consultor Especialista de Amostra MACD. Tenho tudo resolvido. Acho que já percebi tudo, mas não consigo fazê-lo funcionar na minha Demo para vários pares de moedas ao mesmo tempo. Se já houver uma posição aberta no terminal (manualmente ou por Conselheiro Especialista), não funcionará. Não tenho conhecimentos suficientes, por favor aconselhem-me o que devo acrescentar ou corrigir.
 
igor.malish:
Olá, comecei a aprender MQL4 e comecei a usar a amostra MACD Expert Advisor. Analisei a situação. Acho que já resolvi tudo, mas não posso fazer com que funcione como um Expert Advisor de demonstração em mais do que um símbolo ao mesmo tempo. Se já houver uma posição em aberto no terminal (manualmente ou através de Expert Advisor) não funcionará. Já tentei tudo o que sei. Não tenho conhecimentos suficientes, aconselhem-me o que devo acrescentar ou corrigir.

A amostra MACD não foi concebida para o comércio com múltiplos instrumentos

total=OrdersTotal();

   if(total<1)

     {...
Nesta condição, é praticamente proibido abrir negócios, se pelo menos um, para qualquer instrumento já tiver sido aberto.
 
dimeon:

A amostra MACD não foi concebida para o comércio com múltiplos instrumentos

Esta condição proíbe praticamente a abertura de comércios se pelo menos um, para qualquer instrumento, já estiver aberto.
Tive um problema semelhante, mas para uma troca por dia. Isto é, a condição não é apenas OrderTotal(), mas também da história das fechadas.
 
Existe alguma forma de ligar EncomendasTotal, OrderSymbol e OrderMagicNumber?
 
igor.malish:
Existe alguma forma de ligar EncomendasTotal, OrderSymbol e OrderMagicNumber?
Pergunta parva.
 
Saudações. Qualquer pessoa pode adaptar a minha EA ao novo mql? (#propriedade estrita) Está a desenvolver-se e a sua funcionalidade está a melhorar, mas a linguagem em que está escrito está desactualizada. Este Expert Advisor é uma modificação posterior do ZigZaHod v1.1 e necessita de alterações mínimas para que eu possa dominá-lo e modificá-lo. Estou pronto para me envolver profundamente nisso. Falta-me a compreensão do que precisa de ser refeito.
 

A ideia é que a EA deve trabalhar uma vez por dia, quando o novo dia começa. 1 da manhã. deve abrir duas ordens pendentes em alta e baixa

Refiro-me ao castiçal que fechou às 00:00. Não devia fazer mais nada até ao dia seguinte. O que estou a fazer mal?


extern string Times = "Time";
extern int StartHour    = 1;
extern int TakeProfit   = 50;
extern int StopLoss     = 50;
extern int Lots         = 1;

void OnTick()
{ 
   static bool IsFirstTick = true;
   static int ticket = 0;
   int h=TimeHour(TimeCurrent());
   Alert("TimeHor: ", h);
   if(Hour() == StartHour)
   {
    if (IsFirstTick == true)
      IsFirstTick - false;
      
      bool res;
      res= OrderSelect(ticket, SELECT_BY_TICKET);
      if(res == true)
      { 
         if(OrderCloseTime() == 0)
         {
            bool res2;
            res2 = OrderClose(ticket, Lots, OrderClosePrice(), 10);
            
            if(res2 == false)
            {
               Alert("Error Closing Order #", ticket);
               }
         }   
      }
       if(Open[0] < Open[StartHour])
      {
         ticket = OrderSend(Symbol(), OP_BUYLIMIT, Lots, High[1],10, Low[1]-StopLoss*Point, High[1]+TakeProfit*Point,"Set bu ForexRobot");
         if(ticket < 0)
         {
           Alert("Error Sending Order!");
         }  
       }
       else
       {
         ticket = OrderSend(Symbol(), OP_SELLLIMIT, Lots, Low[1],10, High[1]+StopLoss*Point, Low[1]+TakeProfit*Point,"Set bu ForexRobot");
         if(ticket < 0)
         {
           Alert("Error Sending Order!");
         } 
    }   
}
 
MIR_KAZAN:

Ajudar a corrigir o bug: A ideia é que a EA deve trabalhar uma vez por dia, quando o novo dia começa. 1 da manhã. deve abrir duas ordens pendentes em alta e baixa

Refiro-me ao castiçal que fechou às 00:00. Não devia fazer mais nada até ao dia seguinte. O que estou a fazer mal?


Ao colar código, utilize as capacidades incorporadas do fórum:colar código correctamente no fórum
 
barabashkakvn:
Ao colar o código, por favor utilize as características incorporadas no fórum:Insira o código correctamente no fórum
Já está.
 
MIR_KAZAN:

A ideia é que a EA deve trabalhar uma vez por dia, quando o novo dia começa. à 1 da manhã. deve abrir duas ordens pendentes no alto e no baixo

Ou seja, um castiçal que fechava às 00:00. Não devia fazer mais nada até ao dia seguinte. O que estou a fazer mal?


Há um erro:

      IsFirstTick - false;

Deve ser =