Primo EA, problema che non capisco

IoMarenero  

Salve a tutti,

sto iniziando ora con il trading automatico e mi sto documentando da mesi con libri, articoli, video ecc. 

Quando ho raggiunto un pò di confidenza con il codice ho provato a scrivere il mio primo EA. Tuttavia, non riesco a farlo funzionare. Il problema è che non mi emette gli ordini, quando faccio il back test non mi escono le freccette rosse e verdi per capirci e se lo metto su grafico live mi esce la finestra di avviso che non è stato possibile emettere l'ordine.

Ho modificato e rivisto il codice tante volte ma non riesco a venirne a capo. 

Vi allelo il codice, qualcuno potrebbe almeno indirizzarmi su dove sta il problema?

Grazie!

bool SetupBUY = false;
bool FullConditionBUY = false
double PriceBreak 
datetime TimeBarMinRel;          
datetime TimeBarCurrent;  
int NumBars;                     
   
   ZeroMemory(TimeBarMinRel);
   ZeroMemory(PriceBreak);


   if(mrate[4].low>maVal[4] &&   
   mrate[3].low>maVal[3] &&   
   mrate[2].low>maVal[2] &&
   mrate[1].low>maVal[1])
     {
      if(mrate[4].low<mrate[3].low &&   
          mrate[3].low<mrate[2].low &&
          mrate[2].low>mrate[1].low)
          {
           SetupBUY = true;   
           PriceBreak=mrate[1].high;
          TimeBarMinRel = iTime(_Symbol,_Period,1);  
         }
      }
        
   if(SetupBUY = true)   
      {
       TimeBarCurrent = iTime(_Symbol,_Period,0);
      NumBars=Bars(_Symbol,_Period,TimeBarMinRel,TimeBarCurrent);   
      if(NumBars<=MaxBars &&
         SymbolInfoTick(_Symbol,latest_price)>PriceBreak)
          {
           FullConditionBUY = true; 
           SetupBUY = false;   
          }
      
       if(NumBars>MaxBars)   
          { 
           SetupBUY = false;   
          }
      }
      
  
   if(FullConditionBUY = true
     {
      if(Buy_opened) 
        {
         Alert("C'è già una posizione BUY aperta!!!"); 
         return;    
        }
         
         mrequest.action = TRADE_ACTION_DEAL;                                           
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);
         mrequest.sl = NormalizeDouble(latest_price.ask - SL*_Point,_Digits);           
         mrequest.tp = NormalizeDouble(latest_price.ask + TakeProfit*_Point,_Digits);
         mrequest.symbol = _Symbol;                                                     
         mrequest.volume = Lot;
         mrequest.magic = EA_Magic;
         mrequest.type = ORDER_TYPE_BUY;
         mrequest.type_filling = ORDER_FILLING_FOK;
         mrequest.deviation=100; 
         
         if(!OrderSend(mrequest,mresult))
            PrintFormat("OrderSend error %d",GetLastError());       
            PrintFormat("retcode=%u  deal=%I64u  order=%I64u",mresult.retcode,mresult.deal,mresult.order);
            FullConditionBUY = false;
     }
}
Michele Catanzaro  
IoMarenero:

Salve a tutti,

sto iniziando ora con il trading automatico e mi sto documentando da mesi con libri, articoli, video ecc. 

Quando ho raggiunto un pò di confidenza con il codice ho provato a scrivere il mio primo EA. Tuttavia, non riesco a farlo funzionare. Il problema è che non mi emette gli ordini, quando faccio il back test non mi escono le freccette rosse e verdi per capirci e se lo metto su grafico live mi esce la finestra di avviso che non è stato possibile emettere l'ordine.

Ho modificato e rivisto il codice tante volte ma non riesco a venirne a capo. 

Vi allelo il codice, qualcuno potrebbe almeno indirizzarmi su dove sta il problema?

Grazie!

Guarda prima che tipo di errore viene riportato. 
Jack Cool  
Michele Catanzaro #:
Guarda prima che tipo di errore viene riportato. 

Nessun errore, semplicemente non emette gli ordini buy o sell. 

Non capisco il perchè.

Michele Catanzaro  
Jack Cool #:

Nessun errore, semplicemente non emette gli ordini buy o sell. 

Non capisco il perchè.

Le if hanno bisogno dell"operatore di confronto == e non del singolo =. 
Paolo Miocchi  
IoMarenero:

Salve a tutti,

sto iniziando ora con il trading automatico e mi sto documentando da mesi con libri, articoli, video ecc. 

Quando ho raggiunto un pò di confidenza con il codice ho provato a scrivere il mio primo EA. Tuttavia, non riesco a farlo funzionare. Il problema è che non mi emette gli ordini, quando faccio il back test non mi escono le freccette rosse e verdi per capirci e se lo metto su grafico live mi esce la finestra di avviso che non è stato possibile emettere l'ordine.

Ho modificato e rivisto il codice tante volte ma non riesco a venirne a capo. 

Vi allelo il codice, qualcuno potrebbe almeno indirizzarmi su dove sta il problema?

Grazie!

C'e' almeno un errore che il compilatore sicuramente ti segnala ma probabilmente non l'hai notato. Se non compila (a causa dell'errore) allora non produce un eseguibile e quindi non può testare niente.

Dovresti sostituire le linee nello screenshot


con 

if(FullConditionBUY == true )
     {
       if (Buy_opened)
...