Mostrar solamente la primera señal que cumpla condiciones

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

    Buenos días,

    He realizado un indicador que sigue más o menos la filosofía de un sistema de Jake Bernstein.

    A grandes rasgos funciona de la siguiente manera: Se trazan dos medias exponenciales ( en mi caso parámetro 8), siendo una de ellas calculada sobre los máximos y la otra sobre los mínimos, de tal forma que se obtiene un canal en el precio.

    Bernstein indica que cuando 2 velas se desarrollan totalmente por encima de la media de los máximos ( ni siquiera el mínimo de la vela toca la media), se entraría largo a la apertura de la vela número 3 y en el caso corto, cuando 2 velas se dan totalmente por debajo de la media de mínimos, si ni siquiera su máximo tocar la media de mínimos, se entraría corto a la apertura de la siguiente vela.

    Lógicamente en su sistema hay más condicionantes, pero en este momento no son el tema.

    Mi indicador da las señales correctamente ( es muy sencillo), he incorporado la media simple de 200, para entrar largo solo por encima y corto por debajo y además he añadido a dicha media una desviación tarto por su parte superior como inferior para que actuara como límite.

    El problema que tengo es que  las señales me las da en cada una de las velas que sucesivamente cumplen la condición, tal y como está explicado en la imagen adjunta y lo que pretendo es me de la señal únicamente en el primer momento en que se cumplen las condiciones y no las vuelva a dar hasta pasadas x velas ( por ejemplo 10), es decir no vuelva a comprobar si se cumplen las condiciones hasta x velas después.

    He usado varios métodos ( fijar la vela inicial con barindex, realizar  un conteo de las velas, etc.). He mirado varias consultas en ProRealCode, como por ejemplo “Signal fonction d’un ensemble signal/bougies”, pero no consigo mi objetivo.

    Sería posible que alguien me echara una mano. Muchas gracias por anticipado, pero me he bloqueado.

    Adjunto imagen y el Indicador realizado

    #152823 quote
    Nicolas
    Keymaster
    Master

    Modifiqué el código para comparar cuál era el precio de la EMA cuando se produjo una señal y luego lo comparé para saber si sigue siendo el mismo para asegurarme de no imprimir continuamente la misma señal nuevamente.

    DEFPARAM CalculateOnLastBars = 2000
    
    ProximityThreshold=limite
    Offset  = 2 * pipsize
    ema8hi =  ExponentialAverage[8](high)             // upper bound of EMA(8)
    ema8lo = ExponentialAverage[8](low)                // lower bound of EMA(8)
    sma200  = Average[200](close)    // SMA(200)
    sma200h = sma200 + ProximityThreshold * (ema8hi - ema8lo)// upper bound of virtual channel
    sma200l = sma200 - ProximityThreshold * (ema8hi - ema8lo) // lower bound of virtual channel
    c1=low[2]>ema8hi[2] and low[1]>ema8hi[1]
    c2=high[2]<ema8lo[2] and high[1]<ema8lo[1]
    c3=ema8lo>sma200h
    c4=ema8hi<sma200l
    if (ema8lo crosses over sma200h)then
    startbar = barindex
    startprice=ema8lo
    endif
    if barindex-startbar<=10 and startprice<>signalprice then
    if  c1 and c3 then
    drawtext("●",barindex,low-offset,Dialog,Bold,20) coloured(55,55,255)
    DRAWARROWUP(barindex, LOW - offset)coloured(255,61,249)
    //indicator=1
    signalprice=startprice
    endif
    endif
    //if (ema8lo < sma200h) and (ema8hi > sma200h) then
    //backgroundcolor(255,255,0)
    //endif
    if (ema8hi crosses under sma200l)then
    startbar1 = barindex
    startprice=ema8lo
    endif
    if barindex-startbar1<=10 and startprice<>signalprice then
    //if (ema8hi > sma200l) and (ema8lo < sma200l)then
    //backgroundcolor(255,255,0)
    //endif
    if c2 and c4 then
    
    drawtext("●",barindex,high+ offset,Dialog,Bold,20) coloured(255,55,55)
    DRAWARROWDOWN(barindex, high + offset )coloured(255,255,255)
    //indicator=-1
    signalprice=startprice
    endif
    endif
    return //sma200h as"sma200h",sma200l as "sma200l"
    
    #152834 quote
    cjr30
    Participant
    Master

    Muchísimas gracias Nicolás, está perfecto.

    Un saludo

    #154652 quote
    Aleyao
    Participant
    New

    Hola.

    Me gustaría poder utilizar esta configuración, pero cuando la cargo en el Prorealtime 11 me da un error.

    Error: Defina la siguiente variable: limite

    Que debo poner en límite?

    Saludos y gracias por el aporte.

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

Mostrar solamente la primera señal que cumpla condiciones


ProBuilder: Indicadores y Herramientas

New Reply
Author
author-avatar
cjr30 @cjr30 Participant
Summary

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

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