Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 534

 
PolarSeaman:

Forse è così:

Dov'è la condizione del giorno precedente qui? Si scopre che dopo il primo ordine nel periodo 0-8, il passo sarà già 10. E abbiamo bisogno che siano 5. E solo dopo le 8 diventerà 10. Poi riportiamo il passo =5 a 0 se non ci sono ordini aperti dal giorno precedente. Se la serie continua, allora passo =10 prima della sua chiusura.
 
PolarSeaman:

Il punto è che se si imposta l'intervallo di tempo come nell'Expert Advisor

Ho bisogno di escludere dai calcoli le candele che si trovano nell'intervallo.

Nell'indicatore si lavora in un ciclo. Allora perché avete bisogno di uscire dal ciclo?

Non sapete come saltare un'iterazione nel ciclo?

continua

 
Tigerfreerun:
Dov'è la condizione del giorno precedente? Si scopre che dopo il primo ordine nel periodo 0-8, il passo sarà già 10. E abbiamo bisogno che fossero 5. E solo dopo le 8 diventerà 10. Poi riportiamo il passo =5 a 0 se non ci sono ordini aperti dal giorno precedente. Se la serie continua, allora passo =10 prima della sua chiusura.

La funzione dovrebbe restituire тру, se c'è un ordine aperto ieri

   OP_TO(int mn)
     {
     int i, k=OrdersTotal();
      for(i=0; i<k; i++) 
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
           {
            if(OrderSymbol()==Symbol()) 
              {
               if(OrderType()==OP_BUY || OrderType()==OP_SELL) 
                 {
                  if(OrderMagicNumber()==mn) 
                    {
                     if(TimeDay(OrderOpenTime())==(Day()-1)
                      &&  TimeMonth(OrderOpenTime())==Month()
                      &&  TimeYear (OrderOpenTime())==Year()) return(True);
                    }
                 }
              }
           }
        }

      return(False);
     }
if(Hour()>=0&&Hour()<=8&&!OP_TO(mag_n))step = 5; else step =10;
 
Artyom Trishkin:

Nell'indicatore state lavorando in un ciclo. Allora perché avete bisogno di uscire dal ciclo con return?

Sapete come saltare un'iterazione in un ciclo?

continua

Grazie. Non capisco, ho limitato l'ora ma la stampa mostra l'ora alle 19:30 e 23:00 e 5:50, cosa c'è di sbagliato?

   for(int i=limit-2; i>0; i--) 
     {
     if(Hour()>=17&&Hour()<=11)continue;
      if(i%2==0) 
        {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k1++;
           // if(k1>max) {max=k1; dat_max=time[i];}
            if(k1>=4)Print("Num: ",k1,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k1,time[i],high[i],Arr);
           }
         else k1=0;
         
           } else {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k2++;
            //if(k2>max){ max=k2; dat_max=time[i];}
            if(k2>=4)Print("Num: ",k2,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k2,time[i],high[i],Arr);
           }
         else k2=0;
         
        }
      
     }
 
PolarSeaman:

Grazie. Non capisco, la stampa mostra l'ora 19:30 e 23:00 e 5:50 cosa c'è di sbagliato?

Cosa restituisce la funzione Hour()?
 
PolarSeaman:

La funzione dovrebbe restituire тру, se c'è un ordine aperto ieri

È un po' complicato per me. Potresti spiegare in quale parte del codice aggiungere e cosa significa mn e mag_n? dove dovrei mettere il mio EA medjic qui?




 
Signori programmatori, aiutatemi a capire l'errore. minPrice = NormalizeDouble (GetMinPrice(),Digits); Errore: 'minPrice' - punto e virgola previsto.
 
KRIKS:
Signori, per favore aiutatemi a capire l'errore. minPrice = NormalizeDouble (GetMinPrice(),Digits); Errore: 'minPrice' - punto e virgola previsto.

Guardate il codice prima di minPrice. Non c'è nessun ; (punto e virgola).

 
Ihor Herasko:

Guardate il codice prima di minPrice. Non c'è nessun ; (punto e virgola).

int start()

{

minPrice = NormalizeDouble (GetMinPrice()Digits);

maxPrice = NormalizeDouble(GetMaxPrice()Digits); L'inizio int può essere seguito da (;) ?

 
KRIKS:

int start()

{

minPrice = NormalizeDouble(GetMinPrice()Digits);

maxPrice = NormalizeDouble(GetMaxPrice()Digits); L'inizio int può essere seguito da (;) ?

{

minPrice = NormalizeDouble (GetMinPrice(),Digits);

maxPrice = NormalizeDouble(GetMaxPrice(),Digits);

Motivazione: