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

 
Snajper007 #:

Questo codice mostra il segnale sulla decima candela. Ho bisogno di controllare il segnale su ogni candela da 1 a N.

Cambia l'ordine della ricerca.

Si cerca dalla profondità del tempo fino al tempo presente e quindi si trova il "segnale più antico".

A giudicare da iCustom - ne hai 4 e così la numerazione.

il ciclo deve essere da 0 (più probabilmente 1-2) e fino a N

for(int i=0;i<n;i++)

 
Snajper007 #:
int n=10;
   datetime bar_sig_buy, bar_sig_sell;

   for(int i=n;i>=0;i--)
     {
     // для покупок
   double a1 = iCustom(NULL, 0, "FL11", 4, i);
   // для продаж 
   double a2 = iCustom(NULL, 0, "FL11", 5, i);


      if(a1 > 0)
         bar_sig_buy=Time[i];
         
      if(a2 > 0)
        bar_sig_sell = Time[i];
     Comment("bar_sig_sell = " + DoubleToString(bar_sig_sell)+ "\n" +
     "bar_sig_buy = " + DoubleToString(bar_sig_buy));

     }
 
Per quanto mi ricordo l'indicatore FL11 è storto e non si può usare correttamente. Ridisegnare... Il ciclo dovrebbe portare da 0 a sinistra e interrompere se si trova un segnale... Oppure, azzerare il tempo del segnale nel corpo del ciclo e stampare il risultato di ogni barra. Ma non imparerete nulla con questo indicatore, prendetene uno normale.
 
MakarFX #:
int n=10;
   datetime bar_sig_buy, bar_sig_sell;

   for(int i=n;i>=0;i--)
     {
     // для покупок
   double a1 = iCustom(NULL, 0, "FL11", 4, i);
   // для продаж 
   double a2 = iCustom(NULL, 0, "FL11", 5, i);


      if(a1 > 0)
         bar_sig_buy=Time[i];
         
      if(a2 > 0)
        bar_sig_sell = Time[i];
     Comment("bar_sig_sell = " + DoubleToString(bar_sig_sell)+ "\n" +
     "bar_sig_buy = " + DoubleToString(bar_sig_buy));

     }
Non è cambiato nulla. Il segnale è ancora presente sulla decima candela
 
Snajper007 #:
Non è cambiato nulla. Il segnale è ancora presente sulla decima candela
2021.11.08 18:44:44.620 2021.10.15 17:10:00  BAG GBPUSD,H1: 0/sell: 2021.10.15 17:00:00
2021.11.08 18:44:44.571 2021.10.15 17:07:30  BAG GBPUSD,H1: 0/sell: 2021.10.15 17:00:00
2021.11.08 18:44:44.530 2021.10.15 17:05:00  BAG GBPUSD,H1: 3/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.480 2021.10.15 17:02:30  BAG GBPUSD,H1: 3/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.432 2021.10.15 17:00:00  BAG GBPUSD,H1: 3/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.385 2021.10.15 16:59:59  BAG GBPUSD,H1: 2/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.339 2021.10.15 16:57:30  BAG GBPUSD,H1: 2/sell: 2021.10.15 14:00:00
 
Snajper007 #:
Non è cambiato nulla. Il segnale è ancora mostrato sulla decima candela

Ecco la funzione per analizzare il segnale di questo indicatore dal mio vecchio archivio, regolatelo per le vostre esigenze...

Restituisce l'ultimo segnale. 1 - sole superiore, 0 - sole inferiore. -1 - nessun segnale/errore.

int gsun(ENUM_TIMEFRAMES tf)
{
double up=0.0,dw=0.0;
for(int i=1;i<iBars(Symbol(),tf);i++)
  {
  up=iCustom(Symbol(),tf,"FL11",Period1,Period2,Period3,Deviat1,Deviat2,Deviat3,5,i);
  dw=iCustom(Symbol(),tf,"FL11",Period1,Period2,Period3,Deviat1,Deviat2,Deviat3,4,i);
  if(up!=0.0&&up!=EMPTY_VALUE)return(1);
  if(dw!=0.0&&dw!=EMPTY_VALUE)return(0);
  }
return(-1);
}
//---
 

MakarFX

Grazie! Funziona!

 
Nikolay Ivanov #:
Per quanto mi ricordo l'indicatore FL11 è storto e non si può usare correttamente. Ridisegnare... Il ciclo dovrebbe portare da 0 a sinistra e interrompere se si trova un segnale... Oppure, azzerare il tempo del segnale nel corpo del ciclo e stampare il risultato di ogni barra. Ma non imparerete nulla con questo indicatore.
Cos'è un indicatore normale?
 
Snajper007 #:


L'immagine deve essere inserita con il pulsante Immagine o attaccata con il pulsante Allega file

 
Snajper007 #:
Qual è l'indicatore corretto?

Tutti quelli che non si sovraccaricano più della logica, di solito 0 bar, per i frattali 2.

Sto giudicando in termini di funzionamento corretto.