Ayuda a la codificación - página 492

 

Alerta demasiado Re: Ayuda con la codificación

Hola Maestros Gracias por su gran trabajo, me gustaría compartir con todo el mundo esta Alerta TrendLine, se origina Reproduce el sonido cuando el precio de la oferta cruza cualquier línea de tendencia o línea horizontal que se dibuja, yo mod a la alerta emergente, así, el único problema con él es que la alerta cada garrapata cuando el precio (oferta) cruzar una línea, trato de mod a la alerta sólo una cada barra cuando se cruza la línea de añadir una función de marca de tiempo al final de la misma.Si tiene tiempo de verlo y de indicarme la dirección correcta, muchas gracias, el código que intento añadir es el siguiente

static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

 
huang jin:
Hola Maestros Gracias por su gran trabajo, me gustaría compartir con todo el mundo esta Alerta de Línea de Tendencia, que origina un sonido cuando el precio de la oferta cruza cualquier línea de tendencia o línea horizontal que usted dibuje, lo modifico para que aparezca la Alerta también, el único problema con él es que alerta cada garrapata cuando el precio (oferta) cruza una línea, trato de modificarlo para alertar sólo una vez cada barra cuando cruza la línea mediante la adición de una función de sello de tiempo al final de la misma.Si tiene tiempo de verlo y de indicarme la dirección correcta, muchas gracias, el código que intento añadir es el siguiente
static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

Nunca está asignando un valor a Close_Time. Tan pronto como lo hagas, sólo te alertará una vez por barra.

 

@mladen He encontrado este indicador en TradingView y es posible hacer esto para mt4?

Aquí está el código fuente:

//Creado por el usuario ChrisMoody 4-24-2014

//Playas de la mayoría de las medias móviles

//Por defecto al marco de tiempo del gráfico actual --- Pero se puede cambiar a marcos de tiempo superiores o inferiores

//Capacidad de la segunda MA con la función de mostrar cruces

study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true)

//Insumos

src = close

useCurrentRes = input(true, title="¿Utilizar la resolución actual del gráfico?")

resCustom = input(title="¿Utilizar un marco temporal diferente? Desmarque la casilla anterior", type=resolution, defval="D")

len = input(20, title="Longitud de la media móvil - Periodo de observación")

atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")

cc = input(true,title="¿Cambiar el color según la dirección?")

smoothe = input(2, minval=1, maxval=10, title="Suavizado de color - 1 = Sin suavizado")

doma2 = input(false, title="Segunda media móvil opcional")

len2 = input(50, title="Longitud de la media móvil - 2ª MA opcional")

atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")

cc2 = input(true,title="¿Cambiar el color según la dirección de la 2ª MA?")

warn = input(false, title="***Puede activar el parámetro Mostrar puntos abajo sin trazar la 2ª MA para ver los cruces***")

warn2 = input(false, title="***Si utiliza la función de cruces sin trazar la 2ª MA - Asegúrese de que los parámetros de la 2ª MA están correctamente configurados***")

sd = input(false, title="Mostrar puntos en el cruce de ambas MA")

res = useCurrentRes ? period : resCustom

/definición de la ma de casco

hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))

//Definición de ema

ema1 = ema(src, len)

ema2 = ema(ema1, len)

ema3 = ema(ema2, len)

tema = 3 * (ema1 - ema2) + ema3

avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : tema

//2ª Ma - definición de hullma

hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2)))

//2ª definición de MA TEMA

sema1 = ema(src, len2)

sema2 = ema(sema1, len2)

sema3 = ema(sema2, len2)

stema = 3 * (sema1 - sema2) + sema3

avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src, len2) : atype2 == 6 ? rma(src,len2) : tema

out = avg

out_two = avg2

out1 = security(tickerid, res, out)

out2 = security(tickerid, res, out_two)

ma_up = out1 >= out1[smoothe]

ma_down = out1 < out1[smoothe]

col = cc ? ma_up ? lima : ma_down ? rojo : aqua : aqua

col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua

círculoPosiciónY = out2

plot(out1, title="Multi-Timeframe Moving Avg", style=line, linewidth=4, color = col)

plot(doma2 and out2 ? out2 : na, title="2ª media móvil multitemporal", style=circles, linewidth=4, color=col2)

plot(sd and cross(out1, out2) ? circleYPosition : na,style=cross, linewidth=5, color=yellow)

 

Captura de pantalla del indicador:

Archivos adjuntos:
pepqyie.png  84 kb
 

¿Algún ejemplo de acceso compartido a archivos desde múltiples instancias de código?

 
apprentice coder:
¿Algún ejemplo de acceso compartido a archivos desde múltiples instancias de código?

Puede ver un ejemplo aquí : https://www.mql5.com/en/forum/175881/page5

 
mladen:
Puedes ver un ejemplo aquí : https://www.mql5.com/en/forum/175881/page5

Lo tengo

 

¿Puedo saber es que tiene cualquier ea utilizando indicador "HalfTrend-1.02"?

Necesito algún código de ejemplo.

Yo estaba tratando de utilizar este indi para filtrar, pero vi que está perdiendo muchos de comercio.

No se que tiene de malo ese ....

double MA_Signal = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,0);

double MA_Signal1 = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,1);

double MA_Signala = iMA(Symbol(),0,UpperMa,UpperMaShift,UpperMaMode,UpperMaPrice,0);

double MA_Signalb = iMA(Symbol(),0,LowerMa,LowerMaShift,LowerMaMode,LowerMaPrice,0);

double Bbands = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,2);

double Bbands2 = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,3);

double Ma_Bid_Diff = MathAbs(MA_Signala - Bid)/vPoint;

double Ma_Bid_Diff1 = MathAbs(MA_Signalb - Bid)/vPoint;

if ( MA_Signal>MA_Signala ) if ( Bbands MAOpenDistance && Bid > MA_Signala ) Signal = 1;

if ( MA_Signal1MA_Signal1 ) if ( Ma_Bid_Diff1 > MAOpenDistance && Bid < MA_Signalb ) Signal = -1;
 
stevenpun:
¿Puedo saber si hay algún ea que utilice el indicador "HalfTrend-1.02"?

Necesito un código de ejemplo.

Yo estaba tratando de utilizar este indi para el filtrado, pero vi que falta muchos de comercio.

No se que es lo que esta mal en ese ....

double MA_Signal = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,0);

double MA_Signal1 = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,1);

double MA_Signala = iMA(Symbol(),0,UpperMa,UpperMaShift,UpperMaMode,UpperMaPrice,0);

double MA_Signalb = iMA(Symbol(),0,LowerMa,LowerMaShift,LowerMaMode,LowerMaPrice,0);

double Bbands = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,2);

double Bbands2 = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,3);

double Ma_Bid_Diff = MathAbs(MA_Signala - Bid)/vPoint;

double Ma_Bid_Diff1 = MathAbs(MA_Signalb - Bid)/vPoint;

if ( MA_Signal>MA_Signala ) if ( Bbands MAOpenDistance && Bid > MA_Signala ) Signal = 1;

if ( MA_Signal1MA_Signal1 ) if ( Ma_Bid_Diff1 > MAOpenDistance && Bid < MA_Signalb ) Signal = -1;

Hola Stevenpun,

Dos cosas que puedes probar inmediatamente:

1) Añada la impresión y los comentarios para ver TODOS sus valores... y asegúrese de que está recibiendo todos los valores de sus indicadores correctamente...

Las impresiones irán en el LOG...y los comentarios se mostrarán en la pantalla para que puedas verlos inmediatamente.

2) Minimice su "Trade Logic"...y pruebe CADA señal por sí misma... Luego, si funcionan...comience a combinarlas de nuevo.

Si no funcionan... entonces ha encontrado su problema.

Cuantos menos "if's anidados" tenga, más fácil será rastrear sus problemas sin operaciones...

Además...múltiples "if's" filtran la mayoría de las operaciones...así que incluso cuando funciona bien...puede que no haya muchas operaciones...

Espero que esto ayude,

Robert

 

Gracias Mladen ,

mladen:
.................. solo alertará una vez por barra

Eso es exactamente lo que quiero que haga, ver la imagen que he adjuntado, el precio salta hacia arriba y hacia abajo con la línea de cada pocos garrapatas, la causa de la alerta indi cada vez que pase o toque la línea .......... lo que quiero que haga es si la barra ya tiene una alerta, esperar a que la nueva barra para dar la alerta de nuevo si pasa la línea. Pero el código que añadí hace que el indi no funcione en absoluto (no hay alerta). ¿podríais echar un vistazo de nuevo a lo que he hecho mal? y¡Muchas gracias!