Índice de calidad de la volatilidad - página 61

 
samirmfs:

hola a todos mi amigo puede alguien darme indicador se llama Volaritility qualtity nrs - alerts et arrows pero formato mq4 no ex4 y gracias . Su amigo Samir

Samir

Por casualidad estas buscando uno de estos : https://www.mql5.com/en/forum/general o tal vez este : https://www.mql5.com/en/forum/general

 

No sabía que Thomas Stridsman lo había inventado

 

Estimado Mladen,

espero que nos ayude a resolver el problema sobre el vq ea adjunto.

Adjunto una imagen que muestra lo que sucede. El ea/indicador/set se adjunta también en el archivo rar. El indicador no es la versión "nrp" sino que en modo "steady" veo que no se repinta (si no es así por favor avisadme ) y es una versión multitimeframe. La estrategia implicaba el uso del ea en un 1Mtf pero con los parámetros del ea indi en un 5Mtf; eso es posible porque el indicador adjunto permite este modo(es un mtf). Solo hice una modificación al ea añadiendo el modo "steady" para permitir que el ea funcione de esta manera según el indicador. No soy un codificador. La solución (es decir: permitir el ea en 1Mtf pero con 5Mtf en los parámetros del ea: modo "steady") parece funcionar mejor que dejar que el ea trabaje directamente en el 5Mtf porque hace posible igualar por adelantado los retrocesos y, de manera scalping en un 1Mtf, eventualmente abrir/cerrar la operación con resultados mucho más positivos. El problema, como se muestra en la imagen adjunta (que también está en el archivo rar.), es que a veces el ea no sigue el indicador (repito en modo "steady") por lo que puede ocurrir que retrase la operación o no la abra o, ilógicamente como en la imagen adjunta, abra la operación contraria como muestra el indi . ¿Podríais ayudarnos a solucionar este problema? En modo visual/manual el indicador da muchas señales de dios (en 1Mtf con el parámetro 5Mtf). Muchas gracias por su tiempo.

vq_indiea.rar

Archivos adjuntos:
 
vitoingletto:
Estimado Mladen,

espero que nos ayuden a resolver el problema del vq ea adjunto.

Adjunto una imagen que muestra lo que sucede. El ea/indicador/set se adjunta también en el archivo rar. El indicador no es la versión "nrp" sino que en modo "steady" veo que no se repinta (si no es así por favor avisadme ) y es una versión multitimeframe. La estrategia implicaba el uso del ea en un 1Mtf pero con los parámetros del ea indi en un 5Mtf; eso es posible porque el indicador adjunto permite este modo(es un mtf). Solo hice una modificación al ea añadiendo el modo "steady" para permitir que el ea funcione de esta manera según el indicador. No soy un codificador. La solución (es decir: permitir el ea en 1Mtf pero con 5Mtf en los parámetros del ea: modo "steady") parece funcionar mejor que dejar que el ea trabaje directamente en el 5Mtf porque hace posible igualar por adelantado los retrocesos y, de manera scalping en un 1Mtf, eventualmente abrir/cerrar la operación con resultados mucho más positivos. El problema, como se muestra en la imagen adjunta (que también está en el archivo rar.), es que a veces el ea no sigue el indicador (repito en modo "steady") por lo que puede ocurrir que retrase la operación o no la abra o, ilógicamente como en la imagen adjunta, abra la operación contraria como muestra el indi . ¿Podríais ayudarnos a solucionar este problema? En modo visual/manual el indicador da muchas señales de dios (en 1Mtf con el parámetro 5Mtf). Muchas gracias por su tiempo.

vq_indiea.rar

En su EA está buscando la última señal (que podría ocurrir hace mucho tiempo). En primer lugar, intente utilizar sólo 2 valores: uno para la dirección actual y otro para la dirección anterior (buffer 6). Cuando el valor de la barra actual cambia en comparación con la barra anterior, entonces usted tiene una señal. Si la dirección es 1, entonces es una señal de compra, si la dirección es -1, entonces la señal es de venta

________________

PD: no es necesario un bucle en el EA para encontrar los valores de la dirección. Simplemente use el índice 1 para la primera barra cerrada y el índice 2 para la segunda barra cerrada (para poder trabajar con señales basadas en la barra cerrada)

 

Estimado Mladen gracias por la rápida respuesta. Lo siento, pero no soy un codificador, pero si usted sugiere, de una manera más comprensible para mi nivel, lo que debo hacer en el metaeditor voy a tratar de hacer yo mismo. Perdona que te diga, pero no sé ni lo que pretendes con el "buffer" . Gracias de nuevo.

mladen:
En tu EA estás buscando la última señal (que puede ocurrir hace mucho tiempo). En primer lugar intenta utilizar sólo 2 valores : uno para la dirección actual y otro para la dirección anterior (buffer 6). Cuando el valor de la barra actual cambia en comparación con la barra anterior, entonces usted tiene una señal. Si la dirección es 1, entonces es una señal de compra, si la dirección es -1, entonces la señal es de venta

________________

PD: no es necesario un bucle en el EA para encontrar los valores de la dirección. Simplemente utilice el índice 1 para la primera barra cerrada y el índice 2 para la segunda barra cerrada (para poder trabajar con señales basadas en la barra cerrada)
 
vitoingletto:
Estimado Mladen gracias por la rápida respuesta. Lo siento, pero no soy un codificador, pero si usted sugiere, de una manera más comprensible para mi nivel, lo que debo hacer en el metaeditor voy a tratar de hacer yo mismo. Siento decirlo, pero ni siquiera sé lo que pretendes con el "buffer" . Gracias de nuevo.

vitoingletto

Intente reemplazar esta 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;

}

 

Lamentablemente no funciona. Cambia completamente la lógica y no funciona en 1Mtf como lo hacía en 5Mtf sino, literalmente en 1Mtf. ¿Alguna sugerencia? gracias

mladen:
vitoingletto

Prueba a sustituir esta 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:
Lamentablemente no funciona. Cambia completamente la lógica y no funciona en 1Mtf como lo hacía en 5Mtf sino, literalmente en 1Mtf. ¿Alguna sugerencia? gracias

vitoingletto

El segundo parámetro de la llamada iCustom() es el parámetro de marco de tiempo. En el caso de los indicadores multi time frame lo mejor es utilizar ese parámetro para que el indicador funcione de forma correcta. Si los valores cuando se utiliza el time frame como segundo parámetro de la llamada iCustom() no son los mismos que cuando se le pasa al indicador (en el parámetro TimeFrame del indicador) entonces el indicador no funciona correctamente en modo multi time frame (y ese es el único caso en que pueden diferir)

 

Además, en estas dos líneas del EA original :

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

hay una parte que no es necesaria. VQ2>0 y VQ1>0 son siempre verdaderos(EMP TY_VALUE es un valor positivo) y esos dos no son necesarios para la comparación en absoluto. Basta con comprobar si VQ1 o VQ2 no son iguales a VALOR_VACÍO

 

¡¡¡¡hecho!!!!

He cambiado :

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);

en

for(int i=1;i<=limit;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);

y funciona. Solo un problema, en el backtest una vez se abrieron dos posiciones en la misma barra con un 10 tp

¿alguna sugerencia? gracias.

mladen:
vitoingletto El segundo parámetro de la llamada iCustom() es el parámetro de marco de tiempo. En el caso de los indicadores multi time frame lo mejor es utilizar ese parámetro para que el indicador funcione de forma correcta. Si los valores cuando se usa el time frame como segundo parámetro de la llamada iCustom() no son los mismos que cuando se le pasa al indicador (en el parámetro TimeFrame del indicador) entonces el indicador no funciona correctamente en modo multi time frame (y ese es el único caso en que pueden diferir)
Archivos adjuntos:
2_position.jpg  243 kb
Razón de la queja: