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

 
Igor Zakharov:

Fa crescere la storia?

Probabilmente è così. Ma non sono sicuro al 100%. Come si controlla questo, con le stampanti che cambiano il numero di barre?

Igor Zakharov:

Non avete un ricalcolo per questo caso.

Grazie, sembra che sia così.

Igor Zakharov:

E le nuove voci delbuffer degli indicatori che appaiono sono piene di spazzatura.

Sembra che non solo quelli nuovi, ma anche quelli vecchi. Ho la sensazione che non solo le frecce siano disegnate in modo casuale, ma che la linea dell'indicatore si interrompa mentre non dovrebbe. Si prega di consigliare come organizzare il ricalcolo in caso di scambio di storia o dove cercare per esempio.

 
Alexey Viktorov:

Ho fatto un errore nell'inserire questo add-on separatamente. Dovresti mettere le frecce solo quando il buffer cambia. Allo stesso tempo, non dimenticate di mettere un valore vuoto nel buffer in tutti gli altri casi.

Sarebbe anche meglio mettere subito un valore vuoto, e riempire uno dei buffer con una freccia quando la tendenza cambia.

Grazie per la vostra risposta.

Ho controllato l'indicatore originale e risulta che non sono stato io a sbagliare, ma in origine era scritto male. Cioè, anche senza le mie modifiche si blocca quando si scambia la cronologia.

 
Questa è la prima volta che ho fatto una domanda e non ho ricevuto risposta. Una sorta di aiuto selettivo per i nuovi arrivati.
 
novichok2018:
Questa è la terza volta che faccio una domanda e ottengo il silenzio in risposta. Questo è una sorta di aiuto selettivo per i neofiti.

la prima cosa che salta all'occhio è che si crea un oggetto grafico trendline con il nome LowLine e non lo si cancella in seguito né si creano oggetti simili con nomi diversi...

Non potete eseguire ObjectCreate() con lo stesso nome più volte - funzionerà solo la prima volta, poi ci sarà un errore.


C'è anche un problema con la determinazione dei frattali, si cerca di trovare il frattale sulla barra 2 dopo l'apertura della barra, di solito si esegue un ciclo sulle barre con una chiamata dell'indicatore frattale e si interrompe il ciclo quando si trova il primo frattale, e si ottiene il numero della barra, sulla quale il frattale è stato

 
Igor Makanu:

C'è anche un problema con la definizione dei frattali, si cerca di trovare un frattale sull'apertura della barra #2, di solito si fa un ciclo sulle barre con la chiamata dell'indicatore frattale e si interrompe il ciclo quando si trova il primo frattale, e si ottiene il numero della barra su cui il frattale era

Grazie!

Infatti, non capisco come ottenere i numeri delle barre in cui è apparso il frattale, perché appare due barre dopo. Ecco perché lo prendo alla seconda barra. Alert visualizza il numero di frattali in un periodo specificato, ma come posso impostare il punto del secondo frattale per disegnare la linea di tendenza? Non è chiaro come farlo secondo la vostra raccomandazione.

L'indicatore chiamato frattale disegna frattali su tutta la storia disponibile. Sto cercando di risolvere il compito di disegnare la linea di tendenza da un frattale che cade entro un certo periodo del giorno, tenendo conto dei frattali del giorno precedente e ricostruendo automaticamente la linea secondo l'ultimo frattale. E c'è una mancanza di conoscenza.

 
novichok2018:

Grazie!

Davvero, non capisco come ottenere i numeri delle barre in cui è apparso il frattale, dato che appare con due barre di ritardo. Ecco perché lo prendo alla seconda barra. Alert visualizza il numero di frattali in un periodo specificato, ma come posso impostare il punto del secondo frattale per disegnare la linea di tendenza? Non è chiaro come farlo secondo la vostra raccomandazione.

L'indicatore chiamato frattale disegna frattali su tutta la storia disponibile. Sto cercando di risolvere il compito di disegnare la linea di tendenza da un frattale che cade entro un certo periodo del giorno, tenendo conto dei frattali del giorno precedente e ricostruendo automaticamente la linea secondo l'ultimo frattale. E c'è una mancanza di conoscenza.

Sei sicuro di dover prendere la SECONDA barra?

Ecco i test:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

MQL5: Esempi.

Vladimir Karputov, 2018.03.19 05:54

  • 2.3. iFrattali. Due fattori importanti da considerare

Ci sono due fattori da considerare quando si lavora con i frattali:

Fattore uno

Ilfrattale sulle barre da "rates_total-5" a"rates_total-3" non può essere ridisegnato - segue dal disegno dell'indicatore"Fractals.mq5" (il codice aperto dell'indicatore si trova in [data folder]\MQL5\Indicators\Examples\Fractals.mq5) - poiché le barretra "rates_total-5" e"rates_total-3" sono già formate

//---
   if(prev_calculated<7)
     {
      limit=2;
      //--- clean up arrays
      ArrayInitialize(ExtUpperBuffer,EMPTY_VALUE);
      ArrayInitialize(ExtLowerBuffer,EMPTY_VALUE);
     }
   else limit=rates_total-5;

   for(i=limit;i<rates_total-3 && !IsStopped();i++)
     {
      //---- Upper Fractal
      if(high[i]>high[i+1] && high[i]>high[i+2] && high[i]>=high[i-1] && high[i]>=high[i-2])
         ExtUpperBuffer[i]=high[i];
      else ExtUpperBuffer[i]=EMPTY_VALUE;

      //---- Lower Fractal
      if(low[i]<low[i+1] && low[i]<low[i+2] && low[i]<=low[i-1] && low[i]<=low[i-2])
         ExtLowerBuffer[i]=low[i];
      else ExtLowerBuffer[i]=EMPTY_VALUE;
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

Frattali

Fig. 1. Ecco come funziona l'indicatore "Fractals". Numerazione dei file dalla posizione dell'indicatore "Fractals.mq5"

Significa che quando riceviamo dati nell'Expert Advisor dall'indicatore iFractals, sulle barre "rates_total-5" e "rates_total-4" (numerazione delle barre dalla posizione dell'indicatore "Fractals.mq5") ci sarà un frattale, che è garantito non essere ri-renderizzato.


Ed ecco il momento, quando il frattale si forma sulla barra "rates_total-5" - al momento, quando c'è una nuova barra a destra, 2 gennaio, 03:00 (numerazione dei file dalla posizione dell'indicatore "Fractals.mq5") :

Frattali, 5 bar

Fig. 2. Il momento in cui il frattale si forma sulla barra "rates_total-5"

Il secondo fattore

L'indicatore frattale usa EMPTY_VALUE invece di "0.0" come valore vuoto. L'eccezione è la prima inizializzazione, quando i buffer degli indicatori sono inizializzati con zero (questo non è fatto dall'indicatore "Fractals.mq5", ma da MQL5 quando si crea un array e lo si collega con un buffer di indicatori).


 
novichok2018:

Non è chiaro nemmeno come farlo dalla tua raccomandazione.

Ecco una funzione per trovare un frattale, solo per un Expert Advisor, ha funzionato per me

https://www.mql5.com/ru/forum/160683/page968#comment_13214633

 
Vladimir Karputov:

Sei sicuro che dovresti prendere sulla SECONDA barra?

Ecco i test:


Sì, grazie. Nessun ridisegno sulla terza barra. Solo che non cambia l'essenza del problema.

 
Igor Makanu:

Ecco una funzione per trovare un frattale, solo per un EA, ha funzionato per me

https://www.mql5.com/ru/forum/160683/page968#comment_13214633

Grazie, funziona.

Non capisco come riflettere la comparsa di un nuovo frattale nel codice. Perché barfrup_1 è sempre più piccolo di barfrup_2, quindi il salto di numerazione di barfrup_1 quando appare un nuovo frattale non dà nulla, perché rimane inferiore a barfrup_2.

Un'altra cosa: non capisco come estrarre i valori alti per barfrup_1 e barfrup_2.

 
novichok2018:

Un'altra cosa: non capisco come estrarre valori alti per barfrup_1 e barfrup_2.

Lancia un indicatore frattale sul grafico e un EA di prova con questa funzione

e ristampare i valori trovati passando alla mia funzioneMODE_UPPER e MODE_LOWER

novichok2018:

Grazie, funziona.

Solo non capisco come rendere l'occorrenza di un nuovo frattale nel codice.

È necessario ricordare il tempo della barra; quando appare una nuova barra, la numerazione cambierà, mentre il tempo di apertura della barra è sempre costante.

Cioè, quando avete lanciato il mio codice, ricordate il tempo della barra in cui il frattale è stato rilevato, poi lanciatelo di nuovo - trovate la barra e confrontate il tempo della barra con quello ricordato - il tempo è diverso, significa un nuovo frattale