[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 173

 
Ctmcn:

Puoi dirmi cosa significa l'errore durante la compilazione dell'EA?

\fine del programma" - parentesi sinistra sbilanciata


Parentesi sinistra sbilanciata.
 
Roll:

Staffa sinistra sbilanciata.

Ops... Trovato. GRAZIE.
 

Ecco una domanda.

Gli ordini sono aperti come BUY/SELL STOP. Alcuni diventano ordini di mercato, altri vengono cancellati.

Per gli ultimi N ordini di mercato (aperti e chiusi) abbiamo bisogno di sapere se erano Buy o Sell.

Il mio primo pensiero è di cercare tutti gli ordini da OrdersHistoryTotal() e OrdersTotal(), ordinarli per

e poi ordinarli per OP_BUY e OP_SELL. Ma questo è lungo e rallenterà selvaggiamente il processore.

- Forse c'è qualche altra variante più semplice?

Grazie!

 

Buon pomeriggio.

Qualcuno può aiutare?

Ho scritto il mio primo indicatore semplice, dovrebbe calcolare la volatilità media degli ultimi 2,3,4 e 5 giorni.

L'indicatore ha sei buffer,

SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,VolatBuffer0);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,VolatBuffer1);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2,VolatBuffer2);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3,VolatBuffer3);
   SetIndexStyle(4,DRAW_HISTOGRAM);
   SetIndexBuffer(4,VolatBuffer4);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,VolatBuffer5);

Nella sua finestra sul grafico disegna normalmente solo cinque linee verticali di volatilità per 0 giorni, 1 giorno, media per 2 giorni, 3 giorni e 4 giorni.

La volatilità media secondo la somma dei 5 giorni precedenti è disegnata come una linea spezzata per 50 candele giornaliere - questo è il numero di candele specificato.

Il contenuto dei buffer è calcolato come segue: media per 5 giorni - nel ciclo (per disegnare una linea per 50 giorni), altri dati mediati - fuori dal ciclo.

while(i>=0)
   {
    
   int day0= (High[i] - Low[i])/Point;
   int day1= (High[i+1] - Low[i+1])/Point;
   int day2= (High[i+2] - Low[i+2])/Point;
   int day3= (High[i+3] - Low[i+3])/Point;
   int day4= (High[i+4] - Low[i+4])/Point;
   int day5= (High[i+5] - Low[i+5])/Point;

        int D5_av = (day1+ day2+ day3+ day4+ day5) / 5;
       VolatBuffer5[i]=D5_av;
      i--;
        }
        day0= (High[0] - Low[0])/Point;
   day1= (High[1] - Low[1])/Point;
   day2= (High[2] - Low[2])/Point;
   day3= (High[3] - Low[3])/Point;
   day4= (High[4] - Low[4])/Point;
        
        int D4_av = (day1+ day2+ day3+ day4)/4;
        int D3_av = (day1+ day2+ day3)/3;
        int D2_av = (day1+ day2)/2;
        int D1_av = day1/1;
        int D0_av = day0/1;
        
        VolatBuffer0[0]=D0_av;
      VolatBuffer1[1]=D1_av;
      VolatBuffer2[2]=D2_av;
      VolatBuffer3[3]=D3_av;
      VolatBuffer4[4]=D4_av;
Comment("Волатильность. За 5 дн.= "+VolatBuffer5[5]+" За 4 дн.= "+VolatBuffer4[4]+" За 3 дн.= "+VolatBuffer3[3]+" За 2 дн.= "+VolatBuffer2[2]+" Вчера= "+VolatBuffer1[1]+" Сегодня= "+VolatBuffer0[0]);

La linea Coment nell'indicatore, in cui si inserisce il contenuto dei buffer, dà un'assurdità sullo schermo:

Media per 5 giorni - nessuna volatilità maggiore di 194 pip per quei giorni e risultati corretti per gli altri giorni.

Coment = " Volatilità. Per 5 giorni = 219.000000 Per 4 giorni = 171.0000000 Per 3 giorni = 189.00000 Per 2 giorni = 187.00000 Ieri = 194.00000 Oggi = 5 "

Zero-day "Oggi" aumenta chiaramente con la volatilità del giorno corrente

Quando si chiamano questi buffer all'Expert Advisor

int Volat0= iCustom(Symbol(), 1440, "Volat_Average_Gist",0,0);
      int Volat1= iCustom(Symbol(), 1440, "Volat_Average_Gist",1,0);
      int Volat2= iCustom(Symbol(), 1440, "Volat_Average_Gist",2,0);
      int Volat3= iCustom(Symbol(), 1440, "Volat_Average_Gist",3,0);
      int Volat4= iCustom(Symbol(), 1440, "Volat_Average_Gist",4,0);
      int Volat5= iCustom(Symbol(), 1440, "Volat_Average_Gist",5,0);

la linea di stampa del tester produce un'altra assurdità - non corretta, diversa dalla linea Coment, ma simile alla verità, il risultato medio per 5 giorni e la volatilità corretta del "Giorno Zero" di oggi.

Il resto dà un numero fisso assurdo.

La stampa del tester mostra la volatilità in 5 giorni=181 In 4 giorni= 2147483647 In 3 giorni= 2147483647 In 2 giorni= 2147483647 Ieri= 2147483647 Oggi= 5

Da diversi giorni non riesco a capire perché all'Expert Advisor vengono chiamati dati diversi da quelli contenuti nei buffer dei cinque indicatori, tranne il buffer "Day Zero"?

 

Prova a sostituire

VolatBuffer1[1]=D1_av;

a

VolatBuffer1[0]=D1_av;

e anche tutti gli altri buffer.

 
Roger:

Prova a sostituire

VolatBuffer1[1]=D1_av;

a

VolatBuffer1[0]=D1_av;

e anche tutti gli altri buffer.

Grazie!

Ha funzionato. L'Expert Advisor ha iniziato a ricevere dati normali.

Inoltre, c'è un effetto interessante - nella linea "Coment" dell'indicatore

solo 219 per 5 giorni rimarrà come era.

Allo stesso tempo l'Expert Advisor riceve 181 invece di 219 come dovrebbe essere.

Coment''mostra Volatilità su 5 giorni= 219.000000 Su 4 giorni= 2147483647 Su 3 giorni= 2147483647 Su 2 giorni= 2147483647 Ieri= 2147483647 Oggi= 5

 
Roger:

Prova a sostituire

VolatBuffer1[1]=D1_av;

a

VolatBuffer1[0]=D1_av;

e anche tutti gli altri buffer.

Ho trovato un altro effetto. Tutte le linee verticali nella finestra dell'indicatore sono disegnate una sull'altra

Il valore più grande copre tutti gli altri. Non è essenziale per l'Expert Advisor.

 
Vekker:

Buon pomeriggio.

Qualcuno può aiutare?

Ho scritto il mio primo indicatore semplice - dovrebbe contare la volatilità media degli ultimi 2,3,4 e 5 giorni.

Potete semplificare notevolmente le cose usando ATR:

iATR(NULL, PERIOD_D1, Number_Of_Days, 1)
 
Roll:
Due sceneggiature:

La domanda non è più come scrivere il codice, ma a livello di un'idea - è possibile evitare i cicli multipli,

che mette molto carico sul processore. Per esempio, c'è stata l'idea di tracciare il numero di ordini STOP aperti - se è diminuito di uno, ma l'ordine non è stato cancellato => aprire un ordine a mercato =>

il suo tempo di apertura e il suo tipo dovrebbero essere messi in un array. Qualcosa del genere.

Qualsiasi idea è benvenuta.

Grazie!

 
chief2000:

Potete semplificare notevolmente le cose usando ATR:



Grazie! Proverò
Motivazione: