Smoothed Heikin Ashi and SAR trading system signals

v10.3
Smoothed Heikin Ashi and SAR trading system signals

Heikin-ashi smoothed modified (from previous version) to reduce false signals. It includes SAR value to reduce false signals.

Rules in Heikin-Ashi:
1- White body sequence = upward trend.
  Sequence of black bodies = downtrend.
2- Strong bullish trend = Large white bodies and no lower shadows.
Strong bearish trend = Large black bodies without upper shadows.
3- When the tendency weakens small bodies appear with possible upper and / or lower shadows.
4- A consolidation occurs when small bodies appear with both shadows both above and below.
5- The reversal of a trend can be suspected with the appearance of small bodies with both upper and lower long shadows, or a sudden change of color

 

Share this

Risk disclosure:

No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.

ProRealTime ITF files and other attachments : How to import ITF files into ProRealTime platform?

PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials

  1. finplus • 10/10/2017 #

    Buenas noches, es posible que transforma este código en un screener? Gracias.Seria mas fácil para identificar les entradas.

  2. rafadonl2 • 10/10/2017 #

    Je ne suis pas expert avec screeners, mais je pense que si vous ajoute a RETURN la variable Flecha vous la pouvez utiliser pour le screener.
    Merci an avant

  3. Rafa • 10/10/2017 #

    Would be nice a screener about this, my knowledge about coding still limited

    • rafadonl2 • 10/10/2017 #

      for those who have requested a screener I attach one I have tested.

      //Reglas en Heikin-Ashi:
      //1- Secuencia de cuerpos verdes = tendencia alcista.
      // Secuencia de cuerpos rojos = tendencia bajista.
      //2- Tendencia alcista fuerte = Grandes cuerpos verdes y sin sombras inferiores.
      // Tendencia bajista fuerte = Grandes cuerpos rojos sin sombras superiores.
      //3- Cuando la tendencia se debilita surgen cuerpos pequeños con posibles sombras superior y/o inferior.
      //4- Una consolidación se da cuando aparecen cuerpos pequeños con ambas sombras tanto arriba como abajo.
      //5- La reversión de una tendencia se puede sospechar con la aparición de pequeños cuerpos con sombras largas tanto superiores como inferiores, o un cambio repentino de color.
      // parámetros
      ONCE SmoothPeriod=2
      ONCE period=5
      ONCE Kperiod=5
      ONCE Kspeed=2
      ONCE Dperiod=5
      ONCE entrada=0
      ONCE salida=0
      ONCE flecha=0
      ONCE Dflech=barindex
      ONCE xClose = (open+high+low+close)/4
      ONCE xOpen = open
      // ciclo normal
      IF BarIndex>0 THEN
      xOpen = (xOpen[1]+xClose[1])/2
      xClose = (open+high+low+close)/4
      ENDIF
      // SUAVIZADO con la media de 2 en las velas
      IF barindex>=(period+SmoothPeriod) THEN
      AvOpen=exponentialAverage[SmoothPeriod](xOpen)
      AvClose=exponentialAverage[SmoothPeriod](xClose)
      ENDIF
      // y ésta es la que uso
      //ha7 para indicar cruces
      // los valores para barindex<2 son especiales
      IF Barindex < SmoothPeriod then
      Opcl=Open[1]
      ELSE
      Opcl=Open
      ENDIF
      // calculo dos medias de 7 y de 14
      Media7 = Average[5](Opcl)
      Media10=average[10](Opcl)
      Alcista = AvOpen<AvClose
      Alcista1 = AvOpen[1]AvClose
      Bajista1 = AvOpen[1]>AvClose[1]
      //
      //ahora calculo el Estocástico
      LineaK=100*((close-lowest[Kperiod](low))/(highest[Kperiod](high)-lowest[Kperiod](low)))
      K=exponentialaverage[Kspeed](LineaK)
      D=exponentialaverage[Dperiod](K)
      //no puede haber dos operaciones en dos dias
      IF Dflech < barindex[2] then
      IF flechaD THEN
      IF (Opcl>Media7 or (Bajista1 and Alcista)) THEN
      if sar Media7 and Opcl>Media10 and Alcista) THEN
      flecha=1
      Dflech = barindex
      entrada=1
      ENDIF
      endif // cierra el tema del sar
      ENDIF
      ENDIF
      ELSIF flecha>=1 THEN
      IF K<D THEN
      IF (Opcl close then // para evitar señales falsas
      IF (Opcl<Media7 and Opcl<Media10 and Bajista) THEN
      flecha=-1
      Dflech = barindex
      Salida=1
      ENDIF
      endif // cierra el tema del sar
      ENDIF
      ENDIF
      ENDIF
      ENDIF
      // dibuja líneas en el tercer viernes de cada mes
      // Condiciones para entrada de posiciones largas
      IF NOT LongOnMarket AND entrada=1 THEN
      entrada=0
      BUY 1 CONTRACTS AT MARKET
      ENDIF

      // Condiciones de salida de posiciones largas
      If LongOnMarket AND salida=1 THEN
      SELL AT MARKET
      salida=0
      ENDIF

    • rafadonl2 • 10/10/2017 #

      I have modified some lines and it seems this version will work better. Even so, I recommend to test with different sets of values for the variables declared at ONCE and, mainly, not to use this indicator stand alone as automatic system to put orders. It works different accordingly to the stock values and from my point of view this is dangerous.

      ONCE SmoothPeriod=2
      ONCE period=5
      ONCE Kperiod=14
      ONCE Kspeed=3
      ONCE Dperiod=5
      ONCE flecha=0
      ONCE Dflech=barindex
      ONCE xClose = (open+high+low+close)/4
      ONCE xOpen = open
      // ciclo normal
      IF BarIndex>0 THEN
      xOpen = (xOpen[1]+xClose[1])/2
      xClose = (open+high+low+close)/4
      ENDIF
      // SUAVIZADO con la media de 2 en las velas
      IF barindex>=(period+SmoothPeriod) THEN
      AvOpen=exponentialAverage[SmoothPeriod](xOpen)
      AvClose=exponentialAverage[SmoothPeriod](xClose)
      ENDIF
      // y ésta es la que uso
      //ha7 para indicar cruces
      // los valores para barindex<2 son especiales
      IF Barindex < SmoothPeriod then
      Opcl=Open[1]
      ELSE
      Opcl=Open
      ENDIF
      // calculo dos medias de 7 y de 14
      Media7 = Average[5](Opcl)
      Media10=average[10](Opcl)
      Alcista = AvOpen<AvClose
      Alcista1 = AvOpen[1]AvClose
      Bajista1 = AvOpen[1]>AvClose[1]
      //
      //ahora calculo el Estocástico
      LineaK=100*((close-lowest[Kperiod](low))/(highest[Kperiod](high)-lowest[Kperiod](low)))
      K=exponentialaverage[Kspeed](LineaK)
      D=exponentialaverage[Dperiod](K)
      //no puede haber dos operaciones en dos dias
      IF Dflech < barindex[2] then
      IF flechaD THEN
      IF (Opcl>Media7 or (Bajista1 and Alcista)) THEN
      if sar Media7 and Opcl>Media10 and Alcista) THEN
      flecha=1
      Dflech = barindex
      //ENDIF
      endif // cierra el tema del sar
      ENDIF
      ENDIF
      ELSIF flecha>=1 THEN
      IF K<D THEN
      IF (Opcl close then // para evitar señales falsas
      IF (Opcl<Media7 and Opcl<Media10 and Bajista) THEN
      flecha=-1
      Dflech = barindex
      ENDIF
      endif // cierra el tema del sar
      ENDIF
      ENDIF
      ENDIF
      ENDIF
      // dibuja líneas en el tercer viernes de cada mes
      // Condiciones para entrada de posiciones largas
      IF NOT LongOnMarket AND flecha=1 THEN
      BUY 1000 CONTRACTS AT MARKET
      ENDIF

      // Condiciones de salida de posiciones largas
      If LongOnMarket AND flecha=-1 THEN
      SELL AT MARKET
      ENDIF

  4. Jessar • 10/10/2017 #

    Guten Tag, gibt es eine Möglichkeit sich den genauen Auslösepunkt der Signale anzuzeigen damit man diese Strategie manuell zu testen? Oder hat sie von euch schon einer automatisiert ? danke

    • rafadonl2 • 10/10/2017 #

      Here it is the screener. (sorry I don’t speak german).

      //Reglas en Heikin-Ashi:
      //1- Secuencia de cuerpos verdes = tendencia alcista.
      // Secuencia de cuerpos rojos = tendencia bajista.
      //2- Tendencia alcista fuerte = Grandes cuerpos verdes y sin sombras inferiores.
      // Tendencia bajista fuerte = Grandes cuerpos rojos sin sombras superiores.
      //3- Cuando la tendencia se debilita surgen cuerpos pequeños con posibles sombras superior y/o inferior.
      //4- Una consolidación se da cuando aparecen cuerpos pequeños con ambas sombras tanto arriba como abajo.
      //5- La reversión de una tendencia se puede sospechar con la aparición de pequeños cuerpos con sombras largas tanto superiores como inferiores, o un cambio repentino de color.
      // parámetros
      ONCE SmoothPeriod=2
      ONCE period=5
      ONCE Kperiod=5
      ONCE Kspeed=2
      ONCE Dperiod=5
      ONCE entrada=0
      ONCE salida=0
      ONCE flecha=0
      ONCE Dflech=barindex
      ONCE xClose = (open+high+low+close)/4
      ONCE xOpen = open
      // ciclo normal
      IF BarIndex>0 THEN
      xOpen = (xOpen[1]+xClose[1])/2
      xClose = (open+high+low+close)/4
      ENDIF
      // SUAVIZADO con la media de 2 en las velas
      IF barindex>=(period+SmoothPeriod) THEN
      AvOpen=exponentialAverage[SmoothPeriod](xOpen)
      AvClose=exponentialAverage[SmoothPeriod](xClose)
      ENDIF
      // y ésta es la que uso
      //ha7 para indicar cruces
      // los valores para barindex<2 son especiales
      IF Barindex < SmoothPeriod then
      Opcl=Open[1]
      ELSE
      Opcl=Open
      ENDIF
      // calculo dos medias de 7 y de 14
      Media7 = Average[5](Opcl)
      Media10=average[10](Opcl)
      Alcista = AvOpen<AvClose
      Alcista1 = AvOpen[1]AvClose
      Bajista1 = AvOpen[1]>AvClose[1]
      //
      //ahora calculo el Estocástico
      LineaK=100*((close-lowest[Kperiod](low))/(highest[Kperiod](high)-lowest[Kperiod](low)))
      K=exponentialaverage[Kspeed](LineaK)
      D=exponentialaverage[Dperiod](K)
      //no puede haber dos operaciones en dos dias
      IF Dflech < barindex[2] then
      IF flechaD THEN
      IF (Opcl>Media7 or (Bajista1 and Alcista)) THEN
      if sar Media7 and Opcl>Media10 and Alcista) THEN
      flecha=1
      Dflech = barindex
      entrada=1
      ENDIF
      endif // cierra el tema del sar
      ENDIF
      ENDIF
      ELSIF flecha>=1 THEN
      IF K<D THEN
      IF (Opcl close then // para evitar señales falsas
      IF (Opcl<Media7 and Opcl<Media10 and Bajista) THEN
      flecha=-1
      Dflech = barindex
      Salida=1
      ENDIF
      endif // cierra el tema del sar
      ENDIF
      ENDIF
      ENDIF
      ENDIF
      // dibuja líneas en el tercer viernes de cada mes
      // Condiciones para entrada de posiciones largas
      IF NOT LongOnMarket AND entrada=1 THEN
      entrada=0
      BUY 1 CONTRACTS AT MARKET
      ENDIF

      // Condiciones de salida de posiciones largas
      If LongOnMarket AND salida=1 THEN
      SELL AT MARKET
      salida=0
      ENDIF

  5. finplus • 10/10/2017 #

    Bonsoir. Je ne comprends pas très bien l’utilité de la variable “FLECHA” et je ne suis pas un expert en screener. Si quelqu’un veut bien nous aider, ce sera avec plaisir.

    • rafadonl2 • 10/10/2017 #

      Variable flecha est utilisé pour connaître si je suis a le système ou non.et aussi si j’avais montré a fleche ascendent ou décroissant.

      aussi le screener.

      //Reglas en Heikin-Ashi:
      //1- Secuencia de cuerpos verdes = tendencia alcista.
      // Secuencia de cuerpos rojos = tendencia bajista.
      //2- Tendencia alcista fuerte = Grandes cuerpos verdes y sin sombras inferiores.
      // Tendencia bajista fuerte = Grandes cuerpos rojos sin sombras superiores.
      //3- Cuando la tendencia se debilita surgen cuerpos pequeños con posibles sombras superior y/o inferior.
      //4- Una consolidación se da cuando aparecen cuerpos pequeños con ambas sombras tanto arriba como abajo.
      //5- La reversión de una tendencia se puede sospechar con la aparición de pequeños cuerpos con sombras largas tanto superiores como inferiores, o un cambio repentino de color.
      // parámetros
      ONCE SmoothPeriod=2
      ONCE period=5
      ONCE Kperiod=5
      ONCE Kspeed=2
      ONCE Dperiod=5
      ONCE entrada=0
      ONCE salida=0
      ONCE flecha=0
      ONCE Dflech=barindex
      ONCE xClose = (open+high+low+close)/4
      ONCE xOpen = open
      // ciclo normal
      IF BarIndex>0 THEN
      xOpen = (xOpen[1]+xClose[1])/2
      xClose = (open+high+low+close)/4
      ENDIF
      // SUAVIZADO con la media de 2 en las velas
      IF barindex>=(period+SmoothPeriod) THEN
      AvOpen=exponentialAverage[SmoothPeriod](xOpen)
      AvClose=exponentialAverage[SmoothPeriod](xClose)
      ENDIF
      // y ésta es la que uso
      //ha7 para indicar cruces
      // los valores para barindex<2 son especiales
      IF Barindex < SmoothPeriod then
      Opcl=Open[1]
      ELSE
      Opcl=Open
      ENDIF
      // calculo dos medias de 7 y de 14
      Media7 = Average[5](Opcl)
      Media10=average[10](Opcl)
      Alcista = AvOpen<AvClose
      Alcista1 = AvOpen[1]AvClose
      Bajista1 = AvOpen[1]>AvClose[1]
      //
      //ahora calculo el Estocástico
      LineaK=100*((close-lowest[Kperiod](low))/(highest[Kperiod](high)-lowest[Kperiod](low)))
      K=exponentialaverage[Kspeed](LineaK)
      D=exponentialaverage[Dperiod](K)
      //no puede haber dos operaciones en dos dias
      IF Dflech < barindex[2] then
      IF flechaD THEN
      IF (Opcl>Media7 or (Bajista1 and Alcista)) THEN
      if sar Media7 and Opcl>Media10 and Alcista) THEN
      flecha=1
      Dflech = barindex
      entrada=1
      ENDIF
      endif // cierra el tema del sar
      ENDIF
      ENDIF
      ELSIF flecha>=1 THEN
      IF K<D THEN
      IF (Opcl close then // para evitar señales falsas
      IF (Opcl<Media7 and Opcl<Media10 and Bajista) THEN
      flecha=-1
      Dflech = barindex
      Salida=1
      ENDIF
      endif // cierra el tema del sar
      ENDIF
      ENDIF
      ENDIF
      ENDIF
      // dibuja líneas en el tercer viernes de cada mes
      // Condiciones para entrada de posiciones largas
      IF NOT LongOnMarket AND entrada=1 THEN
      entrada=0
      BUY 1 CONTRACTS AT MARKET
      ENDIF

      // Condiciones de salida de posiciones largas
      If LongOnMarket AND salida=1 THEN
      SELL AT MARKET
      salida=0
      ENDIF

  6. finplus • 10/10/2017 #

    Muchas gracias. Have a good day.

  7. LucioleLucide • 10/10/2017 #

    Anyway so the arrows aren’t so hight compared to the candles ? Can’t see any offset

  8. rafadonl2 • 10/10/2017 #

    For the last who liked the code I suggest this new one: /. para los que han dado like al indicador, les sugiero estas modificaciones:
    using linear regression for flat periods. /. usando regresión lineal para los períodos de tendencia lateral.
    //Reglas en Heikin-Ashi:
    //1- Secuencia de cuerpos verdes = tendencia alcista.
    // Secuencia de cuerpos rojos = tendencia bajista.
    //2- Tendencia alcista fuerte = Grandes cuerpos verdes y sin sombras inferiores.
    // Tendencia bajista fuerte = Grandes cuerpos rojos sin sombras superiores.
    //3- Cuando la tendencia se debilita surgen cuerpos pequeños con posibles sombras superior y/o inferior.
    //4- Una consolidación se da cuando aparecen cuerpos pequeños con ambas sombras tanto arriba como abajo.
    //5- La reversión de una tendencia se puede sospechar con la aparición de pequeños cuerpos con sombras largas tanto superiores como inferiores, o un cambio repentino de color.
    //
    // Tener siempre en cuenta que las flechas salen a cierre del día
    ONCE flechaup = 1
    ONCE flechadn = 1
    ONCE salida=0 // para evitar entradas y salidas
    ONCE entrada=0 // seguidas.
    //
    //para la primera vez calculo valores iniciales
    ONCE xOpen = (open+close)/2
    ONCE xClose = (open+high+low+close)/4
    ONCE xHigh = MAX(high,MAX(xOpen,xClose))
    ONCE xLow = MIN(low,MIN(xOpen,xClose))
    ONCE comienzo=xopen
    // ciclo normal basado en los anteriores
    // cálculo de los valores de la vela Heikin-ashi
    IF BarIndex>0 THEN
    xOpen = (xOpen[1]+xClose[1])/2
    xClose = (open+high+low+close)/4
    xHigh = MAX(high, MAX(xOpen, xClose))
    xLow = MIN(Low,MIN(xOpen, xClose))
    ENDIF
    DRAWCANDLE(xOpen, xHigh, xLow, xClose)
    // Calculo el estocástico
    lineaK=100*((close-lowest[10](low))/(highest[10](high)-lowest[10](low)))
    K=exponentialaverage[3](lineaK)
    D=exponentialaverage[5](K)
    //Media retardo cero de las velas HA
    C1=exponentialaverage[media](xclose)
    C2=exponentialaverage[media](C1)
    MR0=c1+(c1-c2)
    // uso rango para el dibujo
    vAlcista = xOpen<xClose
    vAlcista1 = xOpen[1]xClose
    vBajista1 = xOpen[1]>xClose[1]
    doji=(ABS(((xopen-xclose)/(xhigh-xlow)))-margen)and(MLRxclose[1] and Xhigh>xhigh[1]
    //Tendbajf = xclose<xclose[1] and xhigh<xhigh[1]
    Debtendalc= (ATAN((xclose/xclose[1])-1)<0 or (ATAN((xhigh/xhigh[1])-1)<0))
    debtendbaj= (ATAN((xclose[1]/xclose)-1)<0 or (ATAN((xlow[1]/xlow)-1) la vela alcista pierde fuerza y estoy largo
    condas1 = debtendalc and flechaup=1
    if Condas1 and amorfo2 then
    DRAWARROWDOWN(barindex, xHigh+distancia*1.1) COLOURED (252,246,0) // AMARILLO
    endif
    // Condiciones de salida
    // cambia de alcista a bajista y rompe la MR0
    conds1= (vbajista and valcista1 and xclose<mr0 and K<D) and flechaup=1
    // cambia a bajista y se habia debilitado
    conds2= (vbajista and (valcista1 or debtendalc[1]) and flechaup=1)
    // cambioa a bajista y continua
    conds3 = (vbajista and vbajista1 and xclose entrada)
    // primero por si fuese aviso

    IF (conds1 or conds2 or conds3) and conds4 and not doji THEN
    if not amorfo then
    DRAWARROWDOWN(barindex, xHigh+distancia*1.1) COLOURED (255, 0, 0) // ROJO
    flechadn=1 // me he salido
    flechaup=0 // puedo volver a entrar
    salida=barindex // cuando ha salido
    entrada=0
    // dibujo la ganancia vendiendo al cierre.
    ganper=xclose-comienzo
    Porcen=(ganper/comienzo*100)
    TXTGAN = round(ganper*100)/100
    TXTPor = Round(Porcen*100)/100
    DRAWTEXT(TXTGAN, barindex, xlow-distancia*1.2)
    drawtext(TXTPor, barindex, xlow-distancia*1.4)
    DRAWsegment(barindex,xlow-distancia, barindex, Xlow-distancia*1.2) coloured (0,0,0)
    endif
    endif
    // ahora veo cuando entro
    // dos velas alcistas viniendo de una bajista es entrada en azul claro

    // condiciones de entrada a un valor:
    Condaent1 = (valcista or debtendbaj) and xclose>mr0 and flechadn=1
    if Condaent1 then
    DRAWARROWUP(barindex, xlow-distancia) COLOURED (32,240,228)
    endif
    // vela alcista estocastico ok y cierre > mr0
    Condent1 = (valcista and k>D and xclose>mr0) and flechadn=1
    //
    Condent2 = valcista and valcista1 and flechadn=1
    //
    Condent3 = barindex-diasidle >= salida
    //
    IF (Condent1 and Condent2) and Condent3 THEN
    If not doji then // no sea un doji
    DRAWARROWUP(barindex, xlow-distancia) COLOURED (0, 0, 255) // AZUL
    flechaup=1
    flechadn=0
    entrada=barindex
    salida=0
    comienzo=xopen // (open+close)/2–>un precio medio
    endif
    endif
    //
    If Dayofweek =5 and day>= 15 and Day<=21 then
    DRAWVLINE(barindex) coloured(237,96,9)
    endif
    RETURN MR0 as "mr0"

  9. Guibourse • 10/10/2017 #

    I can’t find the part of the Code which detects when the first large white bodies and no lower shadows/Large black bodies without upper shadows. Can someone help me please ? Thanks !

  10. rafadonl2 • 10/10/2017 #

    is not taken into account in the procedure. It considers only if it is a doji or when candles are white / black. Strategy is based on the change of candle types.

  11. Guibourse • 10/10/2017 #

    Okay thanks, just a question : how do you plot your two lines in the same window as price ? The lines are the 5 MA and the price ? Thanks a lot

  12. rafadonl2 • 10/10/2017 #

    sorry, I don’t understand your question. Indicator draws Heikin Ashi candle, not price candle which is different.
    In this way, you can draw any line you want using return command. see “RETURN MR0 as “mr0″”.
    same occurs with the vertical line for the third Friday of the month.

avatar
Register or

Likes

avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar

+3 more likes

Related users ' posts
Lior Green Doesn't work for me. Set values “compra” and “venta” to be shown as HISTOGRAM
Doctrading Hello, Someone asked me something (his results seemed to be different) on my email, but it ...
Glen Marquis Not your best..So what is your best strategy? :)
Doctrading Chez IG markets, on est effectivement plus limité.C'est pourquoi j'utilise ProRealTime CFD. ...
pascal3431 il semble que cette stratégie ne fonctionne pas avec des stop loss : y a t'il un moyen de li...
alfcont The first time that the system open a position it should buy or sell one contract, after the...
tahar Bonjour, je travaille sur un ecran noir et les bougies sont extremement palotes, on distingu...
Alai-n Voir Echantillons de Couleurs RVB : https://www.prorealcode.com/documentation/category/instr...
Guillaume34 Bonjour, quelqu'un à t'il réalisé ce code à l'identique mais pas dans une fenêtre sous le gr...
TradSuz C'est étrange, je note donc à nouveau les deux horaires achat et vente =9H/17H, le iRSI de l...
TradSuz Merci à Doctrading pour cette trame de code super et qui marche sur d'autres supports aussi....
Bibi83 Bonsoir à tous Juste pour vous informer que j'ai enlever les conditions short et que cela ...
Nicolas oui c'est possible, je pense même que cela a été codé X fois déjà, je vais chercher.
iloco17 Bonjour Nicolas Par rapport à ce code je souhaiterais la ligne de code qui permet d'identi...
Nicolas Merci de formuler une demande dans le forum ProScreener.

Top