Buenas tardes, tengo algún problema a la hora de incorporar un Take Profit en un indicador. Resulta que algunas veces funciona y otras no. he repasado el codigo y no soy capaz de encontrar donde esta el error. En la foto marco el lugar donde ha fallado.
Gracias de antemano por la ayuda
¿Por qué falló? ¿
Qué debería hacer exactamente el indicador?
Si publica el código de trabajo es mejor, a partir de la foto no se puede reconstruir nada.
Hola Roberto, ha fallado porque ha llegado al take profit pero no ha saltado la señal de cierre como en la entrada anterior.
I1=WEIGHTEDAVERAGE[100](close)
I2=AVERAGE[200](CLOSE)
MEDC=EXPONENTIALAVERAGE[8]
MEDL=EXPONENTIALAVERAGE[26]
maxi=highest[D](close)
mini=lowest[D](close)
atr=AverageTrueRange[20](close)
//Parametros para empezar a marcar las señales
c1=I1>I2 and MEDC>MEDL AND MEDC>MEDC[1] AND MEDL>MEDL[1] AND LOW>MEDC
//////////////////////////////////////////////////////
Aviso=0
if c1 then
Aviso=0.1
endif
if aviso=0.1 and dentro=0 then
drawarrow (barindex, medc-atr/5) coloured (0,51,255)
endif
c3=(aviso=0.1 or aviso[1]=0.1 or aviso[2]=0.1 or aviso[3]=0.1)
entrada=0
if c3 and close<medc then
entrada=0.1
endif
StopL=LOW-4*ATR
OBJ=HIGH+2*ATR
if entrada=0.1 AND DENTRO=0 then
drawarrowUP (barindex, low-atr/5) coloured (51,153,0)
drawtext ("Stop=#stopl#", barindex+5, stopl-atr/2)
drawsegment (barindex, obj, barindex+10, obj) coloured (255,204,0)
drawtext ("T.Profit=#OBJ#", barindex+10, obj+atr/2)
DENTRO=1
endif
IF DENTRO THEN
CONTADOR=1+CONTADOR[1]
TRAILSTOP=HIGHEST[CONTADOR](STOPL)
ENDIF
S1=CLOSE<STOPL[1]
S2=HIGH>=OBJ[1]
//CIERRE=CLOSE<STOPL[1] OR HIGH>=OBJ[1]
CIERRE=S1 OR S2
if CIERRE AND DENTRO then
drawARROWDOWN (barindex, HIGH+atr/2) coloured (255,0,0)
TRAILSTOP=0
TAKEPROFIT=0
STOPL=0
OBJ=0
DENTRO=0
ENDIF
return entrada AS "LONG",TRAILSTOP AS "STOP"
Este es el código entero, no se si era eso a lo que te referias.
Gracias de todas formas.
Necesito una explicación de dónde se imprimirán los valores SL y TP.
d=30
Tanto el stoploss como el take profit van escritos en el grafico.
A ver si así te sirve
Deberían escribirse en el gráfico, pero ¿dónde?
Para comprobar si su código está bien, necesito saber qué hace; de lo contrario, está bien para mí.
En la foto de su primera publicación, encerró en un círculo algo en amarillo que, en su opinión, no estaba bien. Necesito saber POR QUÉ no encajaba, ¿dónde debería haberse impreso ese texto o línea?
Ante todo, agradecerle las molestias que se está tomando.
A ver si me explico, el indicador marca una señal de aviso, con la flecha azul lateral, cuando se cumplen las condiciones marcadas. Si en las 3 proximas velas se da la condición de entrada, un cierre por debajo de la mediacorta, se activa la señal de entrada, y se debería generar una flecha de color verde y un stop loss, marcado con puntos blancos, en el precio del minimo previo-4atr y un take profit, marcado con la linea naranja, en el máximo previo+2atr.
Si bien, el precio llega o al take profit o al stop loss, deberia aparecer una flecha azul hacia abajo y reiniciar los calculos.
En la primera señal funciona correctamente, pero en la zona que le he marcado en el primer grafico, con circulo naranja, el precio llega al take profit, pero este no se ejecuta y continua marcando el stop, debiendo haberse cerrado y reiniciado el cálculo.
Espero haberme explicado y resuelto sus dudas.
Lo que quiero es programar algo parecido a esto que marca la foto.
( Estamos moviendo este tema del foro “nuevos miembros ¡Bienvenidos!” al foro “soporte probuilder” )
Ya veo q en primer lugar el indicador sale desde la media y no desde 0, por otro lado, se pueden dibujar las flechas más grandes o más pequeñas?
Lo he intentado de la misma manera q los textos pero no lo acepta.
Gracias y un saludo
Lo siento, pero aún no he podido analizarlo, lo haré en los próximos días. Ten un poco más de paciencia 🙂
Si, tranquilo. Muchas Gracias.
Ahi esta:
D = 30
I1=WEIGHTEDAVERAGE[100](close)
I2=AVERAGE[200](CLOSE)
MEDC=EXPONENTIALAVERAGE[8]
MEDL=EXPONENTIALAVERAGE[26]
maxi=highest[D](close)
mini=lowest[D](close)
atr=AverageTrueRange[20](close)
//Parametros para empezar a marcar las señales
c1=I1>I2 and MEDC>MEDL AND MEDC>MEDC[1] AND MEDL>MEDL[1] AND LOW>MEDC
//////////////////////////////////////////////////////
Aviso=0
if c1 then
Aviso=0.1
endif
if aviso=0.1 and dentro=0 then
drawarrow (barindex, medc-atr/5) coloured (0,51,255)
endif
c3=(aviso=0.1 or aviso[1]=0.1 or aviso[2]=0.1 or aviso[3]=0.1)
entrada=0
if c3 and close<medc then
entrada=0.1
endif
IF DENTRO = 0 THEN
StopL=LOW-4*ATR
OBJ=HIGH+2*ATR
ENDIF
if entrada=0.1 AND DENTRO=0 then
drawarrowUP (barindex, low-atr/5) coloured (51,153,0)
drawtext ("Stop=#stopl#", barindex+5, stopl-atr/2)
drawsegment (barindex, obj, barindex+10, obj) coloured (255,204,0)
drawtext ("T.Profit=#OBJ#", barindex+10, obj+atr/2)
DENTRO=1
endif
IF DENTRO THEN
CONTADOR=1+CONTADOR[1]
TRAILSTOP=HIGHEST[CONTADOR](STOPL)
S1=CLOSE<STOPL[1]
S2=HIGH>=OBJ[1]
//CIERRE=CLOSE<STOPL[1] OR HIGH>=OBJ[1]
CIERRE=S1 OR S2
ENDIF
if CIERRE AND DENTRO then
drawARROWDOWN (barindex, HIGH+atr/2) coloured (255,0,0)
TRAILSTOP=0
TAKEPROFIT=0
STOPL=0
OBJ=0
DENTRO=0
CIERRE =0
ENDIF
return entrada AS "LONG",TRAILSTOP AS "STOP"
Agregué D a la línea 1.
Puse las líneas 29 y 30 dentro de IF … ENDIF para ser ejecutadas SOLO cuando la variable DENTRO es falsa .
Las líneas 43, 44, 45 y 46 las pongo dentro de IF … ENDIF para ser ejecutadas SOLO cuando la variable DENTRO es verdadera.
Agregué la línea 55 (pero no creo que esto sea importante).