Indice di qualità della volatilità - pagina 61

 
samirmfs:

ciao a tutti il mio amico qualcuno può darmi l'indicatore si chiama Volaritility qualtity nrs - alerts et arrows ma formato mq4 non ex4 e grazie. Il tuo amico Samir

Samir

Stai per caso cercando uno di questi : https://www.mql5.com/en/forum/general o forse questo : https://www.mql5.com/en/forum/general

 

Non sapevo che Thomas Stridsman l'avesse inventato

 

Caro Mladen,

spero che tu voglia aiutarci a risolvere il problema della vq ea allegata.

Ho allegato un'immagine che mostra cosa succede. Anche l'ea/indicatore/set sono allegati nel file rar. L'indicatore non è la versione "nrp" ma in modalità "steady" vedo che non ridipinge (se così non fosse fatemi sapere ) ed è una versione multitimeframe. La strategia prevedeva l'utilizzo dell'ea su un 1Mtf ma con i parametri indi dell'ea su un 5Mtf; ciò è possibile perché l'indicatore allegato permette questa modalità (è un mtf). Ho fatto solo una modifica all'ea aggiungendo la modalità "steady" per permettere all'ea di lavorare in questo modo secondo l'indicatore. Non sono un codificatore. La soluzione (cioè: permettere all'ea di lavorare in 1Mtf ma con 5Mtf nei parametri dell'ea: modalità "steady") sembra funzionare meglio che lasciare che l'ea lavori direttamente in 5Mtf perché rende possibile abbinare in anticipo i ritracciamenti e, in modo scalping su un 1Mtf, eventualmente aprire/chiudere il trade con risultati molto più positivi. Il problema, come mostrato nell'immagine allegata (che è anche nel file rar.), è che a volte l'ea non segue l'indicatore (ripeto in modalità "steady") quindi potrebbe accadere che ritardi il trade o non apra o, illogicamente come nell'immagine allegata, apra il trade opposto come mostrato dall'indi . Potreste aiutarci a risolvere questo problema? In modalità visuale/manuale l'indicatore dà molti segnali di dio (su 1Mtf con parametro 5Mtf). Molte grazie per il vostro tempo.

vq_indiea.rar

File:
 
vitoingletto:
Caro Mladen,

spero che tu voglia aiutarci a risolvere il problema del vq ea allegato.

Ho allegato un'immagine che mostra cosa succede. Anche l'ea/indicatore/set sono allegati nel file rar. L'indicatore non è la versione "nrp" ma in modalità "steady" vedo che non ridipinge (se così non fosse fatemi sapere ) ed è una versione multitimeframe. La strategia prevedeva l'utilizzo dell'ea su un 1Mtf ma con i parametri indi dell'ea su un 5Mtf; ciò è possibile perché l'indicatore allegato permette questa modalità (è un mtf). Ho fatto solo una modifica all'ea aggiungendo la modalità "steady" per permettere all'ea di lavorare in questo modo secondo l'indicatore. Non sono un codificatore. La soluzione (cioè: permettere all'ea di lavorare in 1Mtf ma con 5Mtf nei parametri dell'ea: modalità "steady") sembra funzionare meglio che lasciare che l'ea lavori direttamente in 5Mtf perché rende possibile abbinare in anticipo i ritracciamenti e, in modo scalping su un 1Mtf, eventualmente aprire/chiudere il trade con risultati molto più positivi. Il problema, come mostrato nell'immagine allegata (che è anche nel file rar.), è che a volte l'ea non segue l'indicatore (ripeto in modalità "steady") quindi potrebbe accadere che ritardi il trade o non apra o, illogicamente come nell'immagine allegata, apra il trade opposto come mostrato dall'indi . Potreste aiutarci a risolvere questo problema? In modalità visuale/manuale l'indicatore dà molti segnali di dio (su 1Mtf con parametro 5Mtf). Molte grazie per il vostro tempo.

vq_indiea.rar

Nel tuo EA stai cercando l'ultimo segnale (che potrebbe accadere molto tempo fa). Prima di tutto prova a usare solo 2 valori: uno per la direzione corrente e uno per la direzione precedente (buffer 6). Quando il valore della barra attuale cambia rispetto alla barra precedente, allora hai un segnale. Se la direzione è 1, allora è un segnale di acquisto, se la direzione è -1, allora il segnale è di vendita

________________

PS: non c'è bisogno di un ciclo nell'EA per trovare i valori della direzione. Usa semplicemente l'indice 1 per la prima barra chiusa e l'indice 2 per la seconda barra chiusa (per lavorare sui segnali basati sulla barra chiusa)

 

Caro Mladen grazie per la rapida risposta. Scusa ma non sono un codificatore ma se mi suggerisci, in modo più comprensibile per il mio livello, cosa dovrei fare sul metaeditor proverò a fare da solo. Scusa se te lo dico, ma non so nemmeno cosa intendi con "buffer" .Grazie ancora.

mladen:
Nel tuo EA stai cercando l'ultimo segnale (che potrebbe avvenire molto tempo fa). Prima di tutto prova a usare solo 2 valori: uno per la direzione corrente e uno per la direzione precedente (buffer 6). Quando il valore della barra attuale cambia rispetto alla barra precedente, allora hai un segnale. Se la direzione è 1, allora è un segnale di acquisto, se la direzione è -1, allora il segnale è di vendita

________________

PS: non c'è bisogno di un ciclo nell'EA per trovare i valori della direzione. Usa semplicemente l'indice 1 per la prima barra chiusa e l'indice 2 per la seconda barra chiusa (per lavorare sui segnali basati sulla barra chiusa)
 
vitoingletto:
Caro Mladen grazie per la rapida risposta. Scusa ma non sono un coder ma se mi suggerisci, in modo più comprensibile per il mio livello, cosa dovrei fare sul metaeditor proverò a fare da solo. Scusa se te lo dico, ma non so nemmeno cosa intendi con "buffer" .Grazie ancora.

vitoingletto

Prova a sostituire questa parte:

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i);

VQ2=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i);

if(VQ2>0&&VQ1<EMPTY_VALUE){if(Reverse)SV=1;else BV=1;break;}

if(VQ1>0&&VQ2<EMPTY_VALUE){if(Reverse)BV=1;else SV=1;break;}}

[/PHP]

With this :

[PHP] double VQCurrent =iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,1);

double VQPrevious=iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,2);

if (VQCurrent!=VQPrevious)

{

if (VQCurrent== 1) if (Reverse) SV=1; else BV=1;

if (VQCurrent==-1) if (Reverse) BV=1; else SV=1;

}

 

Purtroppo non funziona. Cambia completamente la logica e non funziona in 1Mtf come se fosse in 5Mtf ma, letteralmente, in 1Mtf. Qualche suggerimento? Grazie

mladen:
vitoingletto

Prova a sostituire questa parte:

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i);

VQ2=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i);

if(VQ2>0&&VQ1<EMPTY_VALUE){if(Reverse)SV=1;else BV=1;break;}

if(VQ1>0&&VQ2<EMPTY_VALUE){if(Reverse)BV=1;else SV=1;break;}}

[/PHP]

With this :

[PHP] double VQCurrent =iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,1);

double VQPrevious=iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,2);

if (VQCurrent!=VQPrevious)

{

if (VQCurrent== 1) if (Reverse) SV=1; else BV=1;

if (VQCurrent==-1) if (Reverse) BV=1; else SV=1;

}

 
vitoingletto:
Purtroppo non funziona. Cambia completamente la logica e non funziona in 1Mtf come se fosse in 5Mtf ma, letteralmente, in 1Mtf. Qualche suggerimento? Grazie

vitoingletto

Il secondo parametro della chiamata iCustom() è il parametro del time frame. Nel caso degli indicatori multi time frame è meglio usare questo parametro per far funzionare l'indicatore in modo corretto. Se i valori quando il time frame viene usato come secondo parametro della chiamata iCustom() non sono gli stessi di quando lo si passa all'indicatore (nel parametro TimeFrame dell'indicatore) allora l'indicatore non funziona correttamente in modalità multi time frame (ed è l'unico caso in cui possono differire)

 

Inoltre, in queste due righe dell'originale EA :

if(VQ2>0&&VQ10&&VQ2<EMPTY_VALUE){if(Reverse)BV=1;else SV=1;break;}

c'è una parte che non è necessaria. VQ2>0 e VQ1>0 è sempre vero(EMPTY_VALUE è un valore positivo) e questi due non sono affatto necessari per il confronto. È sufficiente controllare se VQ1 o VQ2 non sono uguali a EMPTY_VALUE

 

fatto!!!!

Ho cambiato :

for(int i=1;i<=limite;i++){

VQ1=iCustom(NULL,0, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i);

VQ2=iCustom(NULL,0, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i);

in

for(int i=1;i<=limite;i++){

VQ1=iCustom(NULL,5, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i);

VQ2=iCustom(NULL,5, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i);

e funziona. Solo un problema, nel backtest una volta ha aperto due posizioni sulla stessa barra con un 10 tp

qualche suggerimento? grazie.

mladen:
vitoingletto Il secondo parametro della chiamata iCustom() è il parametro time frame. Nel caso degli indicatori multi time frame è meglio utilizzare tale parametro per far funzionare l'indicatore in modo corretto. Se i valori quando il time frame è usato come secondo parametro della chiamata iCustom() non sono gli stessi di quando lo passi all'indicatore (nel parametro TimeFrame dell'indicatore) allora l'indicatore non funziona correttamente in modalità multi time frame (e questo è l'unico caso in cui possono differire)
File:
2_position.jpg  243 kb
Motivazione: