Representación gráfica ATR Trailling Stop

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #205837 quote
    cjr30
    Participant
    Master

    Buenas tardes,

    Después de varios intentos fallidos, me encuentro totalmente bloqueado y tal vez  la solución sea muy fácil.

    Siempre intento buscarme la vida y dar con las soluciones, pero en  esta ocasión me rindo.

    Pretendo realizar un indicador (Trailling Stop basado en el ATR), pero que se represente en puntos (similar a los fractales de Williams) de tal manera que veamos el indicador como escalones ( sin que se produzcan retrocesos) y se tenga en cuenta siempre el último valor alcanzado, de manera que cuando el precio (el indicador ira en el gráfico de precios) toque dicha línea de puntos nos lo indique mediante una flecha.

    A modo de ejemplo y para que sea representativo, he realizado el mismo, implementando un simple cruce de medias para que se entienda.

    Cuando se cruzan al alza dichas medias, nos lo señalara mediante una flecha (verde) y el indicador aparecerá en el gráfico mediante puntos (azules), en el momento en que el precio sea menor a ese indicador, nos lo señalará mediante una flecha (roja) en sentido opuesto y el indicador ya no aparecerá en el gráfico.

    Todo esto lo he conseguido, pero solamente cuando el cruce se produce al alza, sin embargo cuando es a la baja ( media corta cruza hacia abajo a la media larga), nos aparece la flecha(azul) , pero el indicador no aparece y también aparece en la misma vela la flecha(roja) opuesta.

    Lo curioso es que ayer, después de estar todo el día intentando dar con este indicador, me funcionaba correctamente y hoy por la mañana el indicador ya no funcionaba.

    Adjunto el archivo itf, el código y un  gráfico en el cual figuran las explicaciones.

    Gracias por anticipado

    // A modo de ejemplo un simple Sistema de cruce de dos EMA y ATR como Trailing Stop.
    //El ATR se representará como puntos (similar a fractales), cuando el precio cruce el Trailing Stop, se cierra la representación mediante una flecha en sentido opuesto a la inicial del cruce de las medias.
    //El ATR y flechas solo se dibujan cuando el cruce se ha producido y el precio aún no ha tocado el Trailing basado en el ATR
    Offset  = 4 * pipsize
    //Indicadores
    med6 = exponentialaverage[6](close)
    med70 = exponentialaverage[70](close)
    atr20 = averagetruerange[20](close)
    contador = 0
    contador1 = 0
    //Condiciones de inicio de señales
    c1 = med6 crosses over med70
    c2 = med6 crosses under med70
    setupinl = c1
    setupinc = c2
    //El ATR y flechas solo se dibujan mientras se dan las condiciones
    if setupinl then
    drawarrowup(barindex,LOW - offset) coloured (0,255,0)//flecha verde
    dentro = 1//indico que estoy dentro del cruce y por tanto hay que representar el Trailing del ATR mediante puntos(1)
    dentro1 = 0
    elsif setupinc then
    drawarrowdown(barindex,high+ offset) coloured (0,0,253)//flecha azul
    dentro1 = 1//igual que(1) pero en sentido opuesto
    dentro = 0
    endif
    if dentro then
    contador = 1 + contador[1]//contador nos va contando las velas y acumulando su valor
    trailstopl = highest[contador](close-2.5*atr20)//el trailstop asumira el mayor valor de las velas contadas( es decir el último valor)
    endif
    if dentro1 then
    contador1 = 1 + contador1[1]
    trailstopc = lowest[contador1](close+2.5*atr20)
    endif
    //Condiciones de salida
    s1 = close < trailstopl[1]// precio toca el trailstop
    s2 = close > trailstopc[1]
    setupoutl = s1
    setupoutc = s2
    //El ATR  termina de dibujarse con una flecha en sentido opuesto cuando se sale de las condiciones por tocar el trailinstop
    if setupoutl and dentro then// se inicializan las variables y se deja de representar el trailstop y se dibuja la flecha en sentido opuesto al cruce
    stoploss = 0
    trailstopl = 0
    dentro = 0
    drawarrowdown(barindex,high+offset)coloured(255,0,0)
    endif
    if setupoutc and dentro1 then
    stoploss1 = 0
    trailstopc = 0
    dentro1 = 0
    drawarrowup(barindex,low-offset)coloured(210,0,0)
    endif
    //////////////////////////////////
    //Presentacion
    return med6 as "media6", med70 as"media70", trailstopl as"stoplargo",trailstopc as "stopcorto"
    #205872 quote
    Nicolas
    Keymaster
    Master

    No estoy seguro de entender completamente su consulta, pero aquí está una solución para trazar la línea de trailing stop corto:

    El problema es que se restablece el lado corto del trailing stop con la condición s2 (prueba si es superior a 0, por lo que siempre es cierto y por lo tanto la línea de trailing stop nunca es posible).

    // A modo de ejemplo un simple Sistema de cruce de dos EMA y ATR como Trailing Stop.
    //El ATR se representará como puntos (similar a fractales), cuando el precio cruce el Trailing Stop, se cierra la representación mediante una flecha en sentido opuesto a la inicial del cruce de las medias.
    //El ATR y flechas solo se dibujan cuando el cruce se ha producido y el precio aún no ha tocado el Trailing basado en el ATR
    Offset  = 4 * pipsize
    //Indicadores
    med6 = exponentialaverage[6](close)
    med70 = exponentialaverage[70](close)
    atr20 = averagetruerange[20](close)
    contador = 0
    contador1 = 0
    //Condiciones de inicio de señales
    c1 = med6 crosses over med70
    c2 = med6 crosses under med70
    setupinl = c1
    setupinc = c2
    //El ATR y flechas solo se dibujan mientras se dan las condiciones
    if setupinl then
    drawarrowup(barindex,LOW - offset) coloured (0,255,0)//flecha verde
    dentro = 1//indico que estoy dentro del cruce y por tanto hay que representar el Trailing del ATR mediante puntos(1)
    dentro1 = 0
    longalpha=255
    endif
    if setupinc then
    drawarrowdown(barindex,high+ offset) coloured (0,0,253)//flecha azul
    dentro1 = 1//igual que(1) pero en sentido opuesto
    dentro = 0
    shortalpha=255
    endif
    if dentro then
    contador = 1 + contador[1]//contador nos va contando las velas y acumulando su valor
    trailstopl = highest[contador](close-2.5*atr20)//el trailstop asumira el mayor valor de las velas contadas( es decir el último valor)
    endif
    if dentro1 then
    contador1 = 1 + contador1[1]
    trailstopc = lowest[contador1](close+2.5*atr20)
    endif
    //Condiciones de salida
    s1 = close < trailstopl[1]// precio toca el trailstop
    s2 = close > trailstopc[1]
    setupoutl = s1
    setupoutc = s2
    //El ATR  termina de dibujarse con una flecha en sentido opuesto cuando se sale de las condiciones por tocar el trailinstop
    if setupoutl and dentro then// se inicializan las variables y se deja de representar el trailstop y se dibuja la flecha en sentido opuesto al cruce
    stoploss = 0
    //trailstopl = 0
    longalpha=0
    dentro = 0
    drawarrowdown(barindex,high+offset)coloured(255,0,0)
    endif
    if setupoutc and dentro1 then
    stoploss1 = 0
    //trailstopc = 0
    shortalpha=0
    dentro1 = 0
    drawarrowup(barindex,low-offset)coloured(210,0,0)
    endif
    //////////////////////////////////
    //Presentacion
    return med6 as "media6", med70 as"media70", trailstopl as"stoplargo" style(line,3) coloured("green",longalpha),trailstopc as "stopcorto" style(line,3) coloured("orange",shortalpha)
    
    #205884 quote
    cjr30
    Participant
    Master

    Muchas gracias Nicolás, por la respuesta tan rápida.

    Me ha servido de mucha ayuda.  No obstante seguiré intentándolo dado que en ciertas situaciones no se representa de la forma deseada.

    Muchísimas gracias de nuevo

    Un saludo

Viewing 3 posts - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.

Representación gráfica ATR Trailling Stop


ProBuilder: Indicadores y Herramientas

New Reply
Author
author-avatar
cjr30 @cjr30 Participant
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by cjr30
3 years, 1 month ago.

Topic Details
Forum: ProBuilder: Indicadores y Herramientas
Language: Spanish
Started: 12/15/2022
Status: Active
Attachments: 3 files
Logo Logo
Loading...