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

 

C'è un problema con l'Expert Advisor nel tester. Sto facendo dei test su dati di 1 minuto. Calcolo lo stocastico per il TF superiore da solo usando i dati dei minuti.

La storia dei verbali è stata scaricata dal 2001. Nella scheda "Charts" impostate il numero massimo di barre nella storia, e visualizzate.

L'intera storia sul grafico viene fatta scorrere.

Il problema è che, come si è scoperto con la stampa di debug, non importa da quale data avvio il tester, il numero massimo di barre

nella variabile Bars sulla prima barra del test (all'inizio) è sempre 1001 o 1002. Il valore di Bars aumenta di 1 ad ogni barra successiva.

Pertanto, è impossibile calcolare la TF superiore all'inizio.

C'è una soluzione. Dovremmo aggiungere un divieto di commercio prima che Bars raggiunga il valore desiderato.

Possiamo risolvere questo problema in un altro modo? Questo valore iniziale di Bars nel tester aumenta in qualche modo?

 
Igor733:

C'è un problema con l'Expert Advisor nel tester. Sto facendo dei test su dati di 1 minuto. Calcolo lo stocastico per il TF superiore da solo usando i dati dei minuti.

La storia dei verbali è stata scaricata dal 2001. Nella scheda "Charts" impostate il numero massimo di barre nella storia, e visualizzate.

L'intera storia sul grafico viene fatta scorrere.

Il problema è che, come si è scoperto con la stampa di debug, non importa da quale data avvio il tester, il numero massimo di barre

nella variabile Bars sulla prima barra del test (all'inizio) è sempre 1001 o 1002. Il valore di Bars aumenta di 1 ad ogni barra successiva.

Pertanto, è impossibile contare i TF superiori all'inizio.

C'è una soluzione. Dovremmo aggiungere un divieto di commercio prima che Bars raggiunga il valore desiderato.

Possiamo risolvere questo problema in un altro modo? Questo valore iniziale di Bars nel tester aumenta in qualche modo?

No, non lo fa. Usate la vostra soluzione.
 
Quale potrebbe essere il problema. Quando scrivo un EA, devo testarlo molte volte per tracciare i cambiamenti. Dopo un numero casuale di test, il tester di strategia non accetta le modifiche apportate al codice. A volte si arriva all'assurdo. Potete semplicemente cancellare un pezzo di codice e il gufo funzionerà nel tester seguendo l'algoritmo scritto prima. Lo stesso succede con l'analisi dei calcoli in CSV: dopo un certo numero di test, una schifezza a caso viene analizzata in CSV.

P.S. Ho premuto il pulsante di compilazione.
 

Ho davvero bisogno di capire l'algoritmo per calcolare la media mobile lisciata. Ci sono diverse ragioni per cui la funzione iMA non è adatta.

Come ho capito le informazioni da https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma

Il primo elemento è calcolato come la somma dei prezzi di chiusura divisa per il periodo.

I seguenti sono calcolati secondo la formula SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.

Prendiamo un periodo di 5 e i prezzi di chiusura di EUR/USD H1 per il periodo dal 24.02.2017 19:00 al 24.02.2017 23.00 (GMT+2) cioè le ultime 5 candele

I prezzi di chiusura sono 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Corrispondentemente, 1° elemento - 1.056452; 2° elemento - 1.056852 3° elemento - 1.05676 4° elemento - 1.056632 5° elemento - 1.056489

Ma sul grafico SMMA 5, la chiusura è 1,05706, cioè la differenza è già nella terza cifra

Cosa sto contando di sbagliato?

E come devo calcolare correttamente per ottenere 1,05706?

 
zsu1970:

Ho davvero bisogno di capire l'algoritmo per calcolare la media mobile lisciata. Ci sono diverse ragioni per cui la funzione iMA non è adatta.

Come ho capito le informazioni da https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma

Il primo elemento è calcolato come la somma dei prezzi di chiusura divisa per il periodo.

I seguenti sono calcolati secondo la formula SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.

Prendiamo un periodo di 5 e i prezzi di chiusura di EUR/USD H1 per il periodo dal 24.02.2017 19:00 al 24.02.2017 23.00 (GMT+2) cioè le ultime 5 candele

I prezzi di chiusura sono 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Corrispondentemente, 1° elemento - 1.056452; 2° elemento - 1.056852 3° elemento - 1.05676 4° elemento - 1.056632 5° elemento - 1.056489

Ma sul grafico SMMA 5, la chiusura è 1,05706, cioè la differenza è già nella terza cifra

Cosa sto contando di sbagliato?

E come devo calcolare correttamente per ottenere 1,05706?

Guarda l 'indicatore stesso, avrà più senso.
 
Aleksey Maryaskin:
Signori sviluppatori! Buona giornata a tutti. Mi interessa una domanda su come creare un modello di Expert Advisor (script) al momento della creazione. Si può editare da qualche parte e come si fa?
Un link diretto qui probabilmente non passerà... Si può cercare su Google "posterò il corso MQL4 in questo thread" (senza le virgolette). Cercare "template" lì (credo sia nella 2a pagina).
 
Vitaly Muzichenko:
Guardate l 'indicatore stesso, avrà più senso.
Guardato È lo stesso del link che ho dato.

doppio SMMA(int periodo)
{

/riempire la matrice con i prezzi di chiusura
int k=periodo;
for(int i=1; i<=periodo; i++)
{
H1_Close[i]=Close[k];
// Print("H1_Close [",i,"] ",H1_Close[i]," Close [",k,"] ",Close[k]);
k--;
}
//calcolare il primo elemento come prezzo medio di chiusura
doppio Summ=0;
per (int i=1; i<=periodo;i++)
Summ=Summ+H1_Close[i]; //SUM1 = SUM(CLOSE, N)
double TmpSMMA=Summ/periodo; //SMMA1 = SUM1/N
//calcolare l'i-esimo elemento come SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N
for(int i=2;i<=periodo;i++)
TmpSMMA=(TmpSMMA*(periodo-1)+H1_Close[i])/periodo;
}
Il risultato è ancora molto diverso dai dati dell'indicatore nel terminale. PERCHE'?
 
zsu1970:

Ho davvero bisogno di capire l'algoritmo per calcolare la media mobile lisciata. Ci sono diverse ragioni per cui la funzione iMA non è adatta.

Come ho capito le informazioni da https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma

Il primo elemento è calcolato come la somma dei prezzi di chiusura divisa per il periodo.

I seguenti sono calcolati secondo la formula SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.

Prendiamo un periodo di 5 e i prezzi di chiusura di EUR/USD H1 per il periodo dal 24.02.2017 19:00 al 24.02.2017 23.00 (GMT+2) cioè le ultime 5 candele

I prezzi di chiusura sono 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Corrispondentemente, 1° elemento - 1.056452; 2° elemento - 1.056852 3° elemento - 1.05676 4° elemento - 1.056632 5° elemento - 1.056489

Ma sul grafico SMMA 5, la chiusura è 1,05706, cioè la differenza è già nella terza cifra

Cosa sto contando di sbagliato?

E come devo calcolare correttamente per ottenere 1,05706?

Quindi c'è un algoritmo di calcolo nell'inclusionnik.

 
Alexey Viktorov:
C'è un algoritmo di calcolo nell'inluder.

Quindi mi sembra di fare tutto come nei calcoli, ma il risultato non esce. Giorno 4 non riesco a capirlo.
Ho scritto il codice della funzione nella risposta di Vitaly Muzichenko , ma non riesco a capire qual è l'errore
 
zsu1970:
Quindi mi sembra di fare tutto come nei calcoli, ma il risultato non esce. Sono seduto qui per il 4° giorno e non riesco a capirlo.
Ho scritto il codice della funzione nella risposta di Vitaly Muzichenko , ma non riesco a capire qual è l'errore
Metti subito i prezzi o li prendi e poi li incolli nel calcolo?