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

 
Yevhenii Levchenko:
Le citazioni sono memorizzate nella cartella tester/history?

No.

\Storiadownloads\symbol\*.dat - archivio di citazioni.

\storia del server*.hst - citazioni.

\tester \storia*.fxt - generato da file *.hst ogni volta che si avvia un test o un'ottimizzazione.

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

Domanda agli sviluppatori MT4: file Tester

Sergey Basov, 2016.01.14 07:25

Non sono uno sviluppatore di MT4, ma posso rispondere per esperienza personale.

Eliminarli non avrà alcun effetto. Saranno semplicemente generati di nuovo durante il prossimo test o l'ottimizzazione.

Le citazioni sono memorizzate in file *.hst, da cui il tester genera file *.fxt, e ogni volta vengono generati di nuovo.


 
Sergey Basov:

No.

\storiadownloads\*.dat - archivio di citazioni.

\storia del server*.hst - citazioni.

\tester \storia*.fxt - generato dai file *.hst ogni volta che si avvia un test o un'ottimizzazione.


Questa roba mette molto a dura prova il disco all'avvio... Perché il tester non lo cancella se lo rigenera ogni volta? C'è un modo per impostarlo?

 
Nauris Zukas:

Volevo ottenere il tempo di apertura della barra del mese corrente, ma ho ottenuto un errore 4074 (ERR_NO_MEMORY_FOR_HISTORY). È anche interessante che se inizio il test dal 1 giugno, è corretto, ma dal 2 giugno inizia a dare l'errore. Come risolvere il problema di questo mese?

Ciao!

Ho affrontato lo stesso errore 4074(ERR_NO_MEMORY_FOR_HISTORY) quando ho provato con le quotazioni di un altro broker. E non è la prima citazione di terzi che uso. Non ho avuto questo errore con altri. Qual è la ragione dell'errore e come risolverlo, forse qualcuno l'ha già capito?

 

Perché il codice più semplice in mt5 funziona in modo completamente diverso da quello di mt4? Per esempio, il seguente codice, che calcola il valore medio del buffer mt4 muwings:

for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         AverageBuffer[i]=value/AveragePeriod;
      }

...non funziona in mt5. Per farlo funzionare in modo più o meno simile (con il metodo dell'istinto), bisogna fare così:

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         value/=(AveragePeriod+1);
         AverageBuffer[i]=value;
      }

E poi, i primi 7 buffer mostrano dei valori proibitivi. Tutto il resto sembra funzionare bene. La mia mascella si è stretta per un'inezia del genere)

Per favore, consigliate come risolvere questo problema correttamente?

 

Aggiunto Commento tra i calcoli e tutto ridisegnato cazzo :D

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         if(i==2)
           

  Comment(value); // вот это добавил

         value/=(AveragePeriod+1);          AverageBuffer[i]=value;                }
Qual è il problema?
 
Non riesco a capire come scrivere una tale condizione con iFractal? Se:
Primo Fractal_up< Secondo Fractal_up allora.....
E lo stesso per giù frattale
 
Vladimir Baskakov:
Non riesco a capire come scrivere una tale condizione con iFractal? Se:
Primo Fractal_up< Secondo Fractal_up allora.....
E lo stesso con giù frattale

Fine settimana. Fooling around...

 
Vladimir Baskakov:
Non riesco a capire come scrivere una tale condizione con iFractal? Se:
Primo Fractal_up< Secondo Fractal_up allora.....
E lo stesso con giù frattale

fuori di pronto, è così che si cercano i frattali:

//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

È necessario chiamarvi 2 volte per trovare il primo frattale e il successivo Up, più o meno così:

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
 
Yevhenii Levchenko:

Aggiunto Commento tra i calcoli e tutto ridisegnato cazzo :D

Qual è il trucco?

ArraySetAsSeries(true) per i buffer degli indicatori.

 
Igor Makanu:

da quelli già pronti, è così che si cercano i frattali:

Devi chiamarti 2 volte per trovare il primo frattale e il prossimo Up, così:

Grazie, funziona, solo una condizione è soddisfatta:

        if(barfrup_1<barfrup_2 && barfrdown_1<barfrdown_2)

E ho bisogno di

        if(barfrup_1<barfrup_2 && barfrdown_1>barfrdown_2)

E non posso aprire posizioni con esso per qualche motivo.