Ayuda a la codificación - página 626

 
stas0202:
mladen hay esperanza de que usted me puede ayudar con el indicador?

No hay necesidad de mensajes adicionales Aquí hay una versión con alertas (6 posibles tipos de alertas añadido) : MASO 2_1 + alerts.mq4

Archivos adjuntos:
 
mladen:
No hay necesidad de mensajes adicionales Aquí hay una versión con alertas (6 posibles tipos de alertas añadido) : MASO 2_1 + alerts.mq4

muy bueno, gran trabajo, gracias

 

mladen

y puede ser una solicitud más para hacer flechas, sólo cerró la barra? y cuando hay una barra neutral, tratarla como un cambio de tendencia

 

Parece que hay muchas alertas con el indicador MASO.

¿No es demasiado? ¿Cómo utilizarlo para el comercio normal?

 

para opciones binarias, con una estrategia determinada, con martingala

 
pgtips:
Hola Mladen,

¿tiene un indicador para mostrar el color de la vela del día anterior?

Trabajo con gráficos de 5 minutos y el backtesting visual se vuelve confuso al cambiar el color de la vela del día anterior. Sería genial si tuviera una barra que corriera a lo largo de la parte inferior en una nueva ventana, ya sea roja o verde, para mostrar el color de la vela del día anterior - quiero explorar el comercio en la misma dirección.

Una barra como esta adjunta. ¿Es esto posible?

Así que si el cierre > la apertura entonces verde, si no rojo supongo.

gracias como siempre por su ayuda :-)

PG

bump educado :-)

Archivos adjuntos:
 
pgtips:
un golpe de cortesía :-)

si esto te ayuda ? aunque no en sw.

Archivos adjuntos:
eurusdm5_1.png  32 kb
 

#property copyright ""

#property link ""

#property indicator_chart_window

#property indicator_buffers 3

#property indicator_color1 Crimson

#property indicator_color2 DodgerBlue

#property indicator_color3 clrBlue

int price = PRICE_OPEN;

extern int zBar = 1000;

extern int LengthB=12;

extern int LengthK=12;

extern int sCCI=2;

extern int sRSI=2;

int SoundAlertMode = 0;

int Soundonly = 0;

int Barcount;

double RSI;

double CCI;

datetime TimeBar;

double previ;

double ExtMapBuffer2[];

double alertBar1;

int sim=0;

double alertBar;

extern bool DoAlert=true;

extern bool alertMail=false;

datetime lastAlertTime;

//---- buffers

double b1[],b2[];double Gd_188;

double f0_3() {

double Ld_ret_0;

if (Digits < 4) Ld_ret_0 = 0.01;

else Ld_ret_0 = 0.0001;

return (Ld_ret_0);

}

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(2);

IndicatorShortName("Investor");

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,0);

SetIndexArrow(0,234);

SetIndexBuffer(0,b1);

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,0);

SetIndexArrow(1,233);

SetIndexBuffer(1,b2);

SetIndexEmptyValue(2,0.0);

SetIndexDrawBegin(2, zBar);

SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,2);

SetIndexArrow(2,158);

SetIndexBuffer(2,ExtMapBuffer2);

Gd_188 = f0_3();

Barcount = 0;

//----

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int i, counted_bars=IndicatorCounted();

int limit=Bars-counted_bars;

if(counted_bars>0) limit++;

string sAlertMsg;

/*// TImes

int Li_unused_8;

string Ls_28;

int Li_unused_36;

double Ld_0 = (Ask - Bid) / Gd_188;

if (Ld_0 > 1.0 && Ld_0 <= 10.0) Li_unused_8 = 4;

int Li_12 = Time[0] + 60 * Period() - TimeCurrent();

double Ld_16 = Li_12 / 60.0;

int Li_24 = Li_12 % 60;

Li_12 = (Li_12 - Li_12 % 60) / 60;

if (Li_24 <= 9) Ls_28 = "0";

if (Li_12 >= 1 && Li_12 <= 9) Li_unused_36 = -10;

else {

if (Li_12 >= 10 && Li_12 <= 99) Li_unused_36 = -13;

else {

if (Li_12 >= 100 && Li_12 <= 999) Li_unused_36 = -16;

else {

if (Li_12 >= 1000 && Li_12 <= 9999) Li_unused_36 = -24;

else

if (Li_12 >= 10000 && Li_12 <= 99999) Li_unused_36 = -29;

}

}

}

Comment("", "" + Li_12 + ":" + Ls_28 + "" + Li_24 + "",

"\n", "=======",

"\n", "" + Symbol() + "", " " + Period() + "",

"\n", "Spread : " + DoubleToStr(Ld_0, 1) + "",

"\n",

"\n", "",

"\n", "");

*/

// Arrows

for(i=0; i<limit; i++)

{

RSI=iRSI(NULL,0,sRSI,price,i);

CCI=iCCI(NULL,0,sCCI,price,i+1);

//double zz1 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,1,i);

//double zz2 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,0,i);

//if (zz1 != 0) {

if ( RSI > 80.0 && CCI < 50.0 &&

Open > Close && //bear

Open < Close && //bull

High - Close > High - Close )

{

b1 = High+Point*5;

}

//if (zz2 != 0) {

if ( RSI 50.0 &&

Open < Close && //bull

Open > Close && //bear

High - Close < High - Close )

{

b2 = Low-Point*5;

}

if (DoAlert && b2[1]!=0 && lastAlertTime!=Time[0])

{

sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+"";

if (DoAlert) Alert(sAlertMsg);

lastAlertTime = Time[0];

if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);

}

else

if (b1[1]!=0 && lastAlertTime!=Time[0])

{

sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+"";

if (DoAlert) Alert(sAlertMsg);

lastAlertTime = Time[0];

if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);

}

//}

//}

}

sinyal();

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

return(0);

}

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

string TF2Str(int iPeriod) {

switch(iPeriod) {

case PERIOD_M1: return("M1");

case PERIOD_M5: return("M5");

case PERIOD_M15: return("M15");

case PERIOD_M30: return("M30");

case PERIOD_H1: return("H1");

case PERIOD_H4: return("H4");

case PERIOD_D1: return("D1");

case PERIOD_W1: return("W1");

case PERIOD_MN1: return("MN1");

default: return("M"+iPeriod);

}

}

void sinyal(){

int shifti,Swingi,Swing_ni,uzli,ii,zui,zdi,mvi;

double LLi,HHi,BHi,BLi;

double Uzeli[10000][3];

// loop from first bar to current bar (with shift=0)

Swing_ni=0;Swingi=0;uzli=0;

BHi =High[zBar];BLi=Low[zBar];zui=zBar;zdi=zBar;

for (shifti=zBar;shifti>=0;shifti--) {

LLi=10000000;HHi=-100000000;

for (ii=shifti+LengthB;ii>=shifti+1;ii--) {

if (Low< LLi) {LLi=Low;}

if (High>HHi) {HHi=High;}

}

if (Low[shifti]HHi){

Swingi=2;

if (Swing_ni==1) {zui=shifti+1;}

if (Swing_ni==-1) {zdi=shifti+1;}

} else {

if (Low[shifti]<LLi) {Swingi=-1;}

if (High[shifti]>HHi) {Swingi=1;}

}

if (Swingi!=Swing_ni && Swing_ni!=0) {

if (Swingi==2) {

Swingi=-Swing_ni;BHi = High[shifti];BLi = Low[shifti];

}

uzli=uzli+1;

if (Swingi==1) {

Uzeli[1]=zdi;

Uzeli[2]=BLi;

}

if (Swingi==-1) {

Uzeli[1]=zui;

Uzeli[2]=BHi;

}

BHi = High[shifti];

BLi = Low[shifti];

}

if (Swingi==1) {

if (High[shifti]>=BHi) {BHi=High[shifti];zui=shifti;}}

if (Swingi==-1) {

if (Low[shifti]<=BLi) {BLi=Low[shifti]; zdi=shifti;}}

Swing_ni=Swingi;

}

for (ii=1;ii<=uzli;ii++) {

mvi=StrToInteger(DoubleToStr(Uzeli[1],0));

ExtMapBuffer2[mvi]=Uzeli[2];

previ=Uzeli[2];

}

}

por favor ayuda ....

este indicador la señal no aparece en el momento adecuado

tengo que refrescar el gráfico cada vez

y por favor arreglen la alerta también

gracias

 
cebrez:

#property copyright ""

#property link ""

#property indicator_chart_window

#property indicator_buffers 3

#property indicator_color1 Crimson

#property indicator_color2 DodgerBlue

#property indicator_color3 clrBlue

int price = PRICE_OPEN;

extern int zBar = 1000;

extern int LengthB=12;

extern int LengthK=12;

extern int sCCI=2;

extern int sRSI=2;

int SoundAlertMode = 0;

int Soundonly = 0;

int Barcount;

double RSI;

double CCI;

datetime TimeBar;

double previ;

double ExtMapBuffer2[];

double alertBar1;

int sim=0;

double alertBar;

extern bool DoAlert=true;

extern bool alertMail=false;

datetime lastAlertTime;

//---- buffers

double b1[],b2[];double Gd_188;

double f0_3() {

double Ld_ret_0;

if (Digits < 4) Ld_ret_0 = 0.01;

else Ld_ret_0 = 0.0001;

return (Ld_ret_0);

}

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(2);

IndicatorShortName("Investor");

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,0);

SetIndexArrow(0,234);

SetIndexBuffer(0,b1);

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,0);

SetIndexArrow(1,233);

SetIndexBuffer(1,b2);

SetIndexEmptyValue(2,0.0);

SetIndexDrawBegin(2, zBar);

SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,2);

SetIndexArrow(2,158);

SetIndexBuffer(2,ExtMapBuffer2);

Gd_188 = f0_3();

Barcount = 0;

//----

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int i, counted_bars=IndicatorCounted();

int limit=Bars-counted_bars;

if(counted_bars>0) limit++;

string sAlertMsg;

/*// TImes

int Li_unused_8;

string Ls_28;

int Li_unused_36;

double Ld_0 = (Ask - Bid) / Gd_188;

if (Ld_0 > 1.0 && Ld_0 <= 10.0) Li_unused_8 = 4;

int Li_12 = Time[0] + 60 * Period() - TimeCurrent();

double Ld_16 = Li_12 / 60.0;

int Li_24 = Li_12 % 60;

Li_12 = (Li_12 - Li_12 % 60) / 60;

if (Li_24 <= 9) Ls_28 = "0";

if (Li_12 >= 1 && Li_12 <= 9) Li_unused_36 = -10;

else {

if (Li_12 >= 10 && Li_12 <= 99) Li_unused_36 = -13;

else {

if (Li_12 >= 100 && Li_12 <= 999) Li_unused_36 = -16;

else {

if (Li_12 >= 1000 && Li_12 <= 9999) Li_unused_36 = -24;

else

if (Li_12 >= 10000 && Li_12 <= 99999) Li_unused_36 = -29;

}

}

}

Comment("", "" + Li_12 + ":" + Ls_28 + "" + Li_24 + "",

"\n", "=======",

"\n", "" + Symbol() + "", " " + Period() + "",

"\n", "Spread : " + DoubleToStr(Ld_0, 1) + "",

"\n",

"\n", "",

"\n", "");

*/

// Arrows

for(i=0; i<limit; i++)

{

RSI=iRSI(NULL,0,sRSI,price,i);

CCI=iCCI(NULL,0,sCCI,price,i+1);

//double zz1 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,1,i);

//double zz2 = iCustom(NULL,0,"Zigzag_v.2",zBar,LengthB,LengthK,0,i);

//if (zz1 != 0) {

if ( RSI > 80.0 && CCI < 50.0 &&

Open > Close && //bear

Open < Close && //bull

High - Close > High - Close )

{

b1 = High+Point*5;

}

//if (zz2 != 0) {

if ( RSI 50.0 &&

Open < Close && //bull

Open > Close && //bear

High - Close < High - Close )

{

b2 = Low-Point*5;

}

if (DoAlert && b2[1]!=0 && lastAlertTime!=Time[0])

{

sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+"";

if (DoAlert) Alert(sAlertMsg);

lastAlertTime = Time[0];

if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);

}

else

if (b1[1]!=0 && lastAlertTime!=Time[0])

{

sAlertMsg=" Alert - "+Symbol()+" "+TF2Str(Period())+"";

if (DoAlert) Alert(sAlertMsg);

lastAlertTime = Time[0];

if (alertMail) SendMail(sAlertMsg, "Alert!\n" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg);

}

//}

//}

}

sinyal();

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

return(0);

}

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

string TF2Str(int iPeriod) {

switch(iPeriod) {

case PERIOD_M1: return("M1");

case PERIOD_M5: return("M5");

case PERIOD_M15: return("M15");

case PERIOD_M30: return("M30");

case PERIOD_H1: return("H1");

case PERIOD_H4: return("H4");

case PERIOD_D1: return("D1");

case PERIOD_W1: return("W1");

case PERIOD_MN1: return("MN1");

default: return("M"+iPeriod);

}

}

void sinyal(){

int shifti,Swingi,Swing_ni,uzli,ii,zui,zdi,mvi;

double LLi,HHi,BHi,BLi;

double Uzeli[10000][3];

// loop from first bar to current bar (with shift=0)

Swing_ni=0;Swingi=0;uzli=0;

BHi =High[zBar];BLi=Low[zBar];zui=zBar;zdi=zBar;

for (shifti=zBar;shifti>=0;shifti--) {

LLi=10000000;HHi=-100000000;

for (ii=shifti+LengthB;ii>=shifti+1;ii--) {

if (Low< LLi) {LLi=Low;}

if (High>HHi) {HHi=High;}

}

if (Low[shifti]HHi){

Swingi=2;

if (Swing_ni==1) {zui=shifti+1;}

if (Swing_ni==-1) {zdi=shifti+1;}

} else {

if (Low[shifti]<LLi) {Swingi=-1;}

if (High[shifti]>HHi) {Swingi=1;}

}

if (Swingi!=Swing_ni && Swing_ni!=0) {

if (Swingi==2) {

Swingi=-Swing_ni;BHi = High[shifti];BLi = Low[shifti];

}

uzli=uzli+1;

if (Swingi==1) {

Uzeli[1]=zdi;

Uzeli[2]=BLi;

}

if (Swingi==-1) {

Uzeli[1]=zui;

Uzeli[2]=BHi;

}

BHi = High[shifti];

BLi = Low[shifti];

}

if (Swingi==1) {

if (High[shifti]>=BHi) {BHi=High[shifti];zui=shifti;}}

if (Swingi==-1) {

if (Low[shifti]<=BLi) {BLi=Low[shifti]; zdi=shifti;}}

Swing_ni=Swingi;

}

for (ii=1;ii<=uzli;ii++) {

mvi=StrToInteger(DoubleToStr(Uzeli[1],0));

ExtMapBuffer2[mvi]=Uzeli[2];

previ=Uzeli[2];

}

}

por favor ayuda ....

este indicador la señal no aparece en el momento adecuado

tengo que refrescar el gráfico cada vez

y por favor arreglen la alerta también

gracias

cebrez

Ese es un indicador parcheado a partir de un descompilado y algunas otras partes y como resultado tienes un desastre que es un indicador repintado 101

Lo mejor es olvidarse de él

 
mladen:

cebrez

Eso es indicador parcheado juntos de descompilado y algunas otras partes y como resultado se obtuvo un lío que es un indicador de repintado 101

Lo mejor es olvidarse de él

pero tengo buen resultado con este indicador señor y sí su repinta pero no hay problema para mí ... por favor, señor

Estoy adjuntando algunas otras partes llamadas ZigZag_v.2 aquí >>> https://www.mql5.com/en/forum/174385/page417

gracias

Razón de la queja: