Ayuda a la codificación - página 292

 
daytrade5:
Estimado señor MLADEN, no he podido encontrar un indicador que simplemente trace el máximo y el mínimo del día anterior excluyendo los domingos. He estado utilizando el indicador adjunto y esperaba que se pudiera modificar para excluir los datos del domingo. Gracias de antemano por su ayuda.

daytrade5

Esto debería ser. Pruébelo: prevday_hilo_no_sunday.mq4

Archivos adjuntos:
 
mladen:
daytrade5 Esto debería ser. Pruébalo : prevday_hilo_no_sunday.mq4

Mladen,

Esto es absolutamente perfecto. Muchas gracias por su ayuda.

 

Hola,

Sé que esto es un poco vago, sin embargo, ¿afecta esto a las funciones de un EA en cualquier forma importante y si es así lo que tengo que buscar para rectificarlo? El tema es 36 Advertencias de "arrays pasado por referencia solamente" ¿hay una cierta manera arrays deben ser manejados con este nuevo MT4. Gracias por cualquier idea sobre esto

 
cja:
Hola, sé que esto es un poco vago, sin embargo, ¿afecta esto a las funciones de un EA de alguna manera importante y si es así qué tengo que buscar para rectificarlo? El tema es 36 Advertencias de "arrays pasado por referencia solamente" ¿hay una cierta manera arrays deben ser manejados con este nuevo MT4. Gracias por cualquier idea sobre este

cja

No debería afectar ya que el compilador debería convertirlo automáticamente

Para evitar esa advertencia simplemente añade "&" después de la declaración del tipo de array en la declaración de la función (así que en lugar de "void ejemplo(double arrayPassedByReference[])" usa "void ejemplo(double& arrayPassedByReference[])" )

 

Estimado Mladen y cualquiera,

¿Sabe usted cómo el código de abajo crearseñales de compra-venta? Dice ''Serie matriz que contiene los precios de apertura-cierre-alta-baja de cada barra'' ''Curvas de indicadores creados: Implementa una curva de tipo DRAW_HISTOGRAM'' Por lo que veo que doesnt' repintar.

Gracias.

double W_Buffer0[];

double W_Buffer1[];

double R_Buffer0[];

double R_Buffer1[];

double S_Buffer0[];

double S_Buffer1[];

double E_Buffer0[];

double E_Buffer1[];

int R_t3_period=21;

double R_b=0.8;

extern int R_mBar=0;

double W_e1, W_e2, W_e3, W_e4, W_e5, W_e6, W_c1, W_c2, W_c3, W_c4, W_n, W_w1, W_w2, W_b2, W_b3;

double W_t3, W_shift, W_wpr, W_trig, W_t3_period, W_b, W_per, W_psel, W_pbuy;

bool R_ft=True;

double R_e1, R_e2, R_e3, R_e4, R_e5, R_e6, R_c1, R_c2, R_c3, R_c4, R_n, R_w1, R_w2, R_b2, R_b3;

double R_t3[];

int R_LoopBegin, R_shift;

int init()

{

//---- indicators

SetIndexStyle (0,DRAW_NONE);

SetIndexBuffer (0,W_Buffer0);

SetIndexEmptyValue(0,EMPTY_VALUE);

SetIndexStyle (1,DRAW_NONE);

SetIndexBuffer (1,W_Buffer1);

SetIndexEmptyValue(1,EMPTY_VALUE);

SetIndexStyle (2,DRAW_NONE);

SetIndexBuffer (2,R_Buffer0);

SetIndexEmptyValue(2,EMPTY_VALUE);

SetIndexStyle (3,DRAW_NONE);

SetIndexBuffer (3,R_Buffer1);

SetIndexEmptyValue(3,EMPTY_VALUE);

SetIndexStyle (4,DRAW_ARROW,EMPTY,2);

SetIndexArrow (4,241);

SetIndexBuffer (4,S_Buffer0);

SetIndexEmptyValue(4,EMPTY_VALUE);

SetIndexStyle (5,DRAW_ARROW,EMPTY,2);

SetIndexArrow (5,242);

SetIndexBuffer (5,S_Buffer1);

SetIndexEmptyValue(5,EMPTY_VALUE);

SetIndexStyle (6,DRAW_ARROW,EMPTY,2);

SetIndexArrow (6,251);

SetIndexBuffer (6,E_Buffer0);

SetIndexEmptyValue(6,EMPTY_VALUE);

SetIndexStyle (7,DRAW_ARROW,EMPTY,2);

SetIndexArrow (7,251);

SetIndexBuffer (7,E_Buffer1);

SetIndexEmptyValue(7,EMPTY_VALUE);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

W_t3_period=8;

W_b=0.8;

W_per=21;

W_psel=-30;

W_pbuy=-70;

W_b2=W_b*W_b;

W_b3=W_b2*W_b;

W_c1=-W_b3;

W_c2=(3*(W_b2+W_b3));

W_c3=-3*(2*W_b2+W_b+W_b3);

W_c4=(1+3*W_b+W_b3+3*W_b2);

W_n=W_t3_period;

if (W_n<1) W_n=1;

W_n = 1 + 0.5*(W_n-1);

W_w1 = 2 / (W_n + 1);

W_w2 = 1 - W_w1;

if (R_mBar==0) R_LoopBegin=Bars;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars);

for(int i=0; i<R_LoopBegin; i++)

{

W_wpr=iWPR(NULL,0,W_per,i);

W_e1 = W_w1*W_wpr + W_w2*W_e1;

W_e2 = W_w1*W_e1 + W_w2*W_e2;

W_e3 = W_w1*W_e2 + W_w2*W_e3;

W_e4 = W_w1*W_e3 + W_w2*W_e4;

W_e5 = W_w1*W_e4 + W_w2*W_e5;

W_e6 = W_w1*W_e5 + W_w2*W_e6;

W_t3 = W_c1*W_e6 + W_c2*W_e5 + W_c3*W_e4 + W_c4*W_e3;

if (W_t3>=-50) W_trig=W_psel;

if (W_t3<-50) W_trig=W_pbuy;

W_Buffer0=W_t3;

W_Buffer1=W_trig;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

ArrayResize(R_t3, R_LoopBegin);

if (R_ft) {

R_b2=R_b*R_b;

R_b3=R_b2*R_b;

R_c1=-R_b3;

R_c2=(3*(R_b2+R_b3));

R_c3=-3*(2*R_b2+R_b+R_b3);

R_c4=(1+3*R_b+R_b3+3*R_b2);

R_n=R_t3_period;

if (R_n<1) R_n=1;

R_n=1+0.5*(R_n-1);

R_w1=2/(R_n+1);

R_w2=1-R_w1;

R_ft=False;

}

for (R_shift=R_LoopBegin; R_shift>=0; R_shift--) {

R_e1=R_w1*Close[R_shift]+R_w2*R_e1;

R_e2=R_w1*R_e1+R_w2*R_e2;

R_e3=R_w1*R_e2+R_w2*R_e3;

R_e4=R_w1*R_e3+R_w2*R_e4;

R_e5=R_w1*R_e4+R_w2*R_e5;

R_e6=R_w1*R_e5+R_w2*R_e6;

R_t3[R_shift]=R_c1*R_e6+R_c2*R_e5+R_c3*R_e4+R_c4*R_e3;

if (R_t3[R_shift+1]<=R_t3[R_shift]) R_Buffer0[R_shift]=R_t3[R_shift]; else R_Buffer0[R_shift]=0;

if (R_t3[R_shift+1]>R_t3[R_shift]) R_Buffer1[R_shift]=R_t3[R_shift]; else R_Buffer1[R_shift]=0;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

for (int cnt=0;cnt<=R_LoopBegin;cnt++)

{

if(R_Buffer0[cnt]>0 && R_Buffer1[cnt+1]>0 && W_Buffer0[cnt]>W_Buffer0[cnt+1] && W_Buffer0[cnt+1]>W_psel) S_Buffer0[cnt]=Low[cnt]-6*Point; else S_Buffer0[cnt]=0;

if(R_Buffer1[cnt]>0 && R_Buffer0[cnt+1]>0 && W_Buffer0[cnt]<W_Buffer0[cnt+1] && W_Buffer0[cnt+1]<W_pbuy) S_Buffer1[cnt]=High[cnt]+6*Point; else S_Buffer1[cnt]=0;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

for (cnt=0;cnt<=R_LoopBegin;cnt++)

{

if(W_Buffer0[cnt]W_psel) E_Buffer0[cnt]=High[cnt]+6*Point; else E_Buffer0[cnt]=0;

if(W_Buffer0[cnt]>W_pbuy && W_Buffer0[cnt+1]<W_pbuy) E_Buffer1[cnt]=Low[cnt]-6*Point; else E_Buffer1[cnt]=0;

}
 
nevar:
Estimado Mladen y cualquiera,

Dice ''Series array that contains open-close-high-low prices of each bar'' ''Indicator Curves created:Implements a curve of type DRAW_HISTOGRAM'' Por lo que veo no se repinta.

Gracias.

double W_Buffer0[];

double W_Buffer1[];

double R_Buffer0[];

double R_Buffer1[];

double S_Buffer0[];

double S_Buffer1[];

double E_Buffer0[];

double E_Buffer1[];

int R_t3_period=21;

double R_b=0.8;

extern int R_mBar=0;

double W_e1, W_e2, W_e3, W_e4, W_e5, W_e6, W_c1, W_c2, W_c3, W_c4, W_n, W_w1, W_w2, W_b2, W_b3;

double W_t3, W_shift, W_wpr, W_trig, W_t3_period, W_b, W_per, W_psel, W_pbuy;

bool R_ft=True;

double R_e1, R_e2, R_e3, R_e4, R_e5, R_e6, R_c1, R_c2, R_c3, R_c4, R_n, R_w1, R_w2, R_b2, R_b3;

double R_t3[];

int R_LoopBegin, R_shift;

int init()

{

//---- indicators

SetIndexStyle (0,DRAW_NONE);

SetIndexBuffer (0,W_Buffer0);

SetIndexEmptyValue(0,EMPTY_VALUE);

SetIndexStyle (1,DRAW_NONE);

SetIndexBuffer (1,W_Buffer1);

SetIndexEmptyValue(1,EMPTY_VALUE);

SetIndexStyle (2,DRAW_NONE);

SetIndexBuffer (2,R_Buffer0);

SetIndexEmptyValue(2,EMPTY_VALUE);

SetIndexStyle (3,DRAW_NONE);

SetIndexBuffer (3,R_Buffer1);

SetIndexEmptyValue(3,EMPTY_VALUE);

SetIndexStyle (4,DRAW_ARROW,EMPTY,2);

SetIndexArrow (4,241);

SetIndexBuffer (4,S_Buffer0);

SetIndexEmptyValue(4,EMPTY_VALUE);

SetIndexStyle (5,DRAW_ARROW,EMPTY,2);

SetIndexArrow (5,242);

SetIndexBuffer (5,S_Buffer1);

SetIndexEmptyValue(5,EMPTY_VALUE);

SetIndexStyle (6,DRAW_ARROW,EMPTY,2);

SetIndexArrow (6,251);

SetIndexBuffer (6,E_Buffer0);

SetIndexEmptyValue(6,EMPTY_VALUE);

SetIndexStyle (7,DRAW_ARROW,EMPTY,2);

SetIndexArrow (7,251);

SetIndexBuffer (7,E_Buffer1);

SetIndexEmptyValue(7,EMPTY_VALUE);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

W_t3_period=8;

W_b=0.8;

W_per=21;

W_psel=-30;

W_pbuy=-70;

W_b2=W_b*W_b;

W_b3=W_b2*W_b;

W_c1=-W_b3;

W_c2=(3*(W_b2+W_b3));

W_c3=-3*(2*W_b2+W_b+W_b3);

W_c4=(1+3*W_b+W_b3+3*W_b2);

W_n=W_t3_period;

if (W_n<1) W_n=1;

W_n = 1 + 0.5*(W_n-1);

W_w1 = 2 / (W_n + 1);

W_w2 = 1 - W_w1;

if (R_mBar==0) R_LoopBegin=Bars;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars);

for(int i=0; i<R_LoopBegin; i++)

{

W_wpr=iWPR(NULL,0,W_per,i);

W_e1 = W_w1*W_wpr + W_w2*W_e1;

W_e2 = W_w1*W_e1 + W_w2*W_e2;

W_e3 = W_w1*W_e2 + W_w2*W_e3;

W_e4 = W_w1*W_e3 + W_w2*W_e4;

W_e5 = W_w1*W_e4 + W_w2*W_e5;

W_e6 = W_w1*W_e5 + W_w2*W_e6;

W_t3 = W_c1*W_e6 + W_c2*W_e5 + W_c3*W_e4 + W_c4*W_e3;

if (W_t3>=-50) W_trig=W_psel;

if (W_t3<-50) W_trig=W_pbuy;

W_Buffer0=W_t3;

W_Buffer1=W_trig;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

ArrayResize(R_t3, R_LoopBegin);

if (R_ft) {

R_b2=R_b*R_b;

R_b3=R_b2*R_b;

R_c1=-R_b3;

R_c2=(3*(R_b2+R_b3));

R_c3=-3*(2*R_b2+R_b+R_b3);

R_c4=(1+3*R_b+R_b3+3*R_b2);

R_n=R_t3_period;

if (R_n<1) R_n=1;

R_n=1+0.5*(R_n-1);

R_w1=2/(R_n+1);

R_w2=1-R_w1;

R_ft=False;

}

for (R_shift=R_LoopBegin; R_shift>=0; R_shift--) {

R_e1=R_w1*Close[R_shift]+R_w2*R_e1;

R_e2=R_w1*R_e1+R_w2*R_e2;

R_e3=R_w1*R_e2+R_w2*R_e3;

R_e4=R_w1*R_e3+R_w2*R_e4;

R_e5=R_w1*R_e4+R_w2*R_e5;

R_e6=R_w1*R_e5+R_w2*R_e6;

R_t3[R_shift]=R_c1*R_e6+R_c2*R_e5+R_c3*R_e4+R_c4*R_e3;

if (R_t3[R_shift+1]<=R_t3[R_shift]) R_Buffer0[R_shift]=R_t3[R_shift]; else R_Buffer0[R_shift]=0;

if (R_t3[R_shift+1]>R_t3[R_shift]) R_Buffer1[R_shift]=R_t3[R_shift]; else R_Buffer1[R_shift]=0;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

for (int cnt=0;cnt<=R_LoopBegin;cnt++)

{

if(R_Buffer0[cnt]>0 && R_Buffer1[cnt+1]>0 && W_Buffer0[cnt]>W_Buffer0[cnt+1] && W_Buffer0[cnt+1]>W_psel) S_Buffer0[cnt]=Low[cnt]-6*Point; else S_Buffer0[cnt]=0;

if(R_Buffer1[cnt]>0 && R_Buffer0[cnt+1]>0 && W_Buffer0[cnt]<W_Buffer0[cnt+1] && W_Buffer0[cnt+1]<W_pbuy) S_Buffer1[cnt]=High[cnt]+6*Point; else S_Buffer1[cnt]=0;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

for (cnt=0;cnt<=R_LoopBegin;cnt++)

{

if(W_Buffer0[cnt]W_psel) E_Buffer0[cnt]=High[cnt]+6*Point; else E_Buffer0[cnt]=0;

if(W_Buffer0[cnt]>W_pbuy && W_Buffer0[cnt+1]<W_pbuy) E_Buffer1[cnt]=Low[cnt]-6*Point; else E_Buffer1[cnt]=0;

}

Está combinando señales de t3 smoothed wpr y un t3 simple

Pero la última parte se hace de futuro a pasado (algo parecido a sidus y solar wind) así que yo tendría cuidado al usarlo

 

Hola Estimado Mladen. ¿Es posible hacer barras de Step ma?

 
Air92:
Hola Estimado Mladen. ¿Es posible hacer barras de Step ma?

¿Te refieres a las barras de color en función del color del paso ma?

 
mladen:
¿Te refieres a las barras de color según el color del paso ma?

Sí, tienes razón.

 
Air92:
Sí, tienes razón

Aire92

Publicó una versión aquí : https://www.mql5.com/en/forum/173044/page12

Razón de la queja: