Heikin ashi smooth and signal

Viewing 14 posts - 1 through 14 (of 14 total)
  • Author
    Posts
  • #73129 quote
    finplus
    Participant
    Master

    Bonsoir,

    j’ai fait un copier coller d’un indicateur trouvé sur ce site “Heikin Ashi smooth and signal”. Je voudrais faire un screener qui détecte le passage des prix au dessus ou au dessous du “sous-indicateur” appelé “VALOR”. Je n’y arrive pas. Quelqu’un peut il m’aider SVP? merci d’avance.

     

     

    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    //Reglas en Heikin-Ashi:
    //1- Secuencia de cuerpos blancos = tendencia alcista.
    //   Secuencia de cuerpos negros = tendencia bajista.
    //2- Tendencia alcista fuerte = Grandes cuerpos blancos y sin sombras inferiores.
    //   Tendencia bajista fuerte = Grandes cuerpos negros 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      valor por defecto
    //ONCE period=5            valor por defecto
    ONCE flecha=0
    ONCE Dflech=barindex
    //    ciclo normal
    IF BarIndex=0 THEN
    xClose= (open+high+low+close)/4
    xOpen= open
    xHigh= high
    xLow= low
    ELSE
    xClose= (open+high+low+close)/4
    xOpen= (xOpen[1]+xClose[1])/2
    xHigh= Max(max(high, xOpen), xClose)
    xLow= Min(min(Low, xOpen), xClose)
    endif
    //  SUAVIZADO con la media de 2 en las velas
    if barindex>=(period+SmoothPeriod) then
    AvOpen=exponentialAverage[SmoothPeriod](xOpen)
    AvHigh=exponentialAverage[SmoothPeriod](xHigh)
    AvLow=exponentialAverage[SmoothPeriod](xLow)
    Avclose=exponentialAverage[SmoothPeriod](xClose)
    endif
    //    y ésta es la que uso
    DRAWCANDLE(AvOpen, AvHigh, AvLow, AvClose)
    //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 10
    Media7 = Average[7](Opcl)
    Media10 = Average[10](Opcl)
    rango= Media7/10
    //   uso rango para el dibujo
    Alcista = AvOPen<AvClose
    Alcista1 = AvOpen[1]<AvClose[1]
    Bajista = AvOpen>AvClose
    Bajista1 = AvOpen[1]>AvClose[1]
    //Doji = Range[1] > ABS(AvOpen[1]-AvClose[1])*5
    //no puede haber dos operaciones en dos dias
    //valor representa mi compra cuando estoy dentro
    //  y el precio de venta cuando me salgo
    IF Dflech < barindex[2] then
    IF (Opcl>Media7 or Opcl>Media10) and not (Bajista and Bajista1) and flecha<1 then
    //  uso Range para que salgan visibles las flechas
    DRAWARROWUP (barindex, AvHigh+Range) COLOURED (0, 0, 255)
    flecha=1
    Dflech= barindex
    valor= AvClose
    ELSIF (Opcl<Media7 or Opcl<Media10) and not (Alcista and Alcista1) and flecha>=1 then
    DRAWARROWDOWN (barindex, AvHigh+Range) COLOURED (255, 0, 0)
    flecha=1
    Dflech= barindex
    valor= AvClose
    ENDIF
    ENDIF
    RETURN Media7 COLOURED (0,0,255), Opclrango COLOURED(0,0,0) as “op-cl”, Media7rango coloured (0,0,255) as “media7”, Media10rango coloured(250,0,250) as “media10”, valor COLOURED (255,0,0) as “valor”
    #73238 quote
    finplus
    Participant
    Master

    En fait, je me suis trompé : je voudrais que le screener identifie les paires où une flèche up ou down apparaît (dans l’indicateur drawarrowup ou drawarrowdown).

    merci.

    #73259 quote
    Nicolas
    Keymaster
    Master

    Ci-dessous le code de l’indicateur modifié en screener, les résultats sont à vérifier:

    ONCE SmoothPeriod=2     // valor por defecto
    //ONCE period=5           // valor por defecto
    ONCE flecha=0
    ONCE Dflech=barindex
    //    ciclo normal
    IF BarIndex=0 THEN
    xClose= (open+high+low+close)/4
    xOpen= open
    //xHigh= high
    //xLow= low
    ELSE
    xClose= (open+high+low+close)/4
    xOpen= (xOpen[1]+xClose[1])/2
    //xHigh= Max(max(high, xOpen), xClose)
    //xLow= Min(min(Low, xOpen), xClose)
    endif
    //  SUAVIZADO con la media de 2 en las velas
    //if barindex>=(period+SmoothPeriod) then
    AvOpen=exponentialAverage[SmoothPeriod](xOpen)
    //AvHigh=exponentialAverage[SmoothPeriod](xHigh)
    //AvLow=exponentialAverage[SmoothPeriod](xLow)
    Avclose=exponentialAverage[SmoothPeriod](xClose)
    //endif
    //    y ésta es la que uso
    //DRAWCANDLE(AvOpen, AvHigh, AvLow, AvClose)
    //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 10
    Media7 = Average[7](Opcl)
    Media10 = Average[10](Opcl)
    //rango= Media7/10
    //   uso rango para el dibujo
    Alcista = AvOPen<AvClose
    Alcista1 = AvOpen[1]<AvClose[1]
    Bajista = AvOpen>AvClose
    Bajista1 = AvOpen[1]>AvClose[1]
    //Doji = Range[1] > ABS(AvOpen[1]-AvClose[1])*5
    //no puede haber dos operaciones en dos dias
    //valor representa mi compra cuando estoy dentro
    //  y el precio de venta cuando me salgo
    IF Dflech < barindex[2] then
    IF (Opcl>Media7 or Opcl>Media10) and not (Bajista and Bajista1) and flecha<1 then
    //  uso Range para que salgan visibles las flechas
    //DRAWARROWUP (barindex, AvHigh+Range) COLOURED (0, 0, 255)
    flecha=1
    Dflech= barindex
    //valor= AvClose
    ELSIF (Opcl<Media7 or Opcl<Media10) and not (Alcista and Alcista1) and flecha>=1 then
    //DRAWARROWDOWN (barindex, AvHigh+Range) COLOURED (255, 0, 0)
    flecha=-1
    Dflech= barindex
    //valor= AvClose
    else
    flecha=0
    ENDIF
    ENDIF
    screener[flecha=1 or flecha=-1](flecha)
    #73373 quote
    finplus
    Participant
    Master

    Bonsoir,

     

    le screener ne ramène toutes les valeurs de la liste alors que la condition n’est pas remplie. Je me suis également aperçu que la flèche correspond au passage des cours sur la KAMA 200. c’est étonnant.

    #73377 quote
    finplus
    Participant
    Master

    Ce que je ne comprends pas c’est que quand je onstruit un système de trading en utilisant l’option “création simplifiée”, les ouvertures de position sont parfaitement corrélées avec l’apparition des flèches. Le programme utilise la fonction : ignored, ignored, ignored, ignored, indicator1 = CALL “heikin ashi smooth and signal” (close).

    et après C1 = (close crosses over indicator1)

    puis if C1 then

    buy 1 contract at market

    endif.

     

    Et bien quand je  récupère cette formule avec screener [C1], je n’ai pas les bons résultats….

     

    si quelqu’un peut me venir en aide.

    merci.

    #73684 quote
    finplus
    Participant
    Master

    Je ne comprends pas pourquoi ce screener ne me renvoie pas la bonne information : à savoir croisement des cours et de la KAMA200 avec le DI.

    merci de m’aider SVP.

    // Paramètres KAMA 200
    
    Period = 200
    Fastperiod = 2
    Slowperiod = 30
    
    Fastest = 2 / (FastPeriod + 1)
    Slowest = 2 / (SlowPeriod + 1)
    if barindex < Period+1 then
    Kama=close
    else
    Num = abs(close-close[Period])
    Den = summation[Period](abs(close-close[1]))
    ER = Num / Den
    Alpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)
    KAMA = (Alpha * Close) + ((1 -Alpha)* Kama[1])
    endif
    
    //indicateur heikin kama
    p=2
    ONCE ama = UNDEFINED
    signal = ABS(MOMENTUM[p])
    noise = SUMMATION[p](ABS(MOMENTUM[1]))
    IF noise>0 THEN
    er = signal / noise
    ELSE
    er=1
    ENDIF
    fastsc = 2 / (2+ 1)
    slowsc = 2 / (20 + 1)
    factor = SQUARE(er * (fastsc - slowsc) + slowsc)
    IF BARINDEX = p THEN
    ama = CLOSE
    ELSIF BARINDEX > p THEN
    ama = ama + factor * (CLOSE - ama)
    ENDIF
    
    once haopen=open
    haclose=ama
    if barindex> 12 then
    haopen=(haopen+haclose[1])/2
    endif
    
    // Paramètres DI
    p=50
    
    plusDM = (MAX(HIGH-HIGH[1], 0))*10
    minusDM = (MAX(LOW[1]-LOW, 0))*10
    
    IF plusDM > minusDM THEN
    minusDM = 0
    ENDIF
    
    IF plusDM < minusDM THEN
    plusDM = 0
    ENDIF
    
    IF plusDM = minusDM THEN
    plusDM = 0
    minusDM = 0
    ENDIF
    
    plusDI = WILDERAVERAGE[p](plusDM)
    minusDI = WILDERAVERAGE[p](minusDM)
    
    DM = plusDI-minusDI
    
    Up= (haclose crosses over KAMA) and (DM > 0)
    
    down = (haclose crosses under KAMA) and (DM < 0)
    
    screener [up or down]
    #73784 quote
    Nicolas
    Keymaster
    Master

    Difficile de débugger sous ProScreener. Le mieux à faire dans ce type de situation est de vérifier les valeurs qu’on souhaite tester sont bien correctement calculés par ProScreener (et en faisant une comparaison avec les valeurs affichées de l’indicateur). Pour mémoire, ProScreener n’utilise pas le même moteur que ProBuilder et il comporte moins d’historique.

    Donc je remplacerai les 3 dernières lignes du screener par:

    Up= 1//(haclose crosses over KAMA) and (DM > 0)
     
    down = 1//(haclose crosses under KAMA) and (DM < 0)
     
    screener [up or down](KAMA)

    Le screener renverra forcément toutes les valeurs de la liste puisque les conditions seront toujours vraies (up=1 et down=1), mais on pourra ainsi voir dans la colonne de tri la valeur de KAMA et ainsi la vérifier avec celle à l’écran (celle de l’indicateur sur le graphique de prix). Et ainsi de suite avec les autres variables si nécessaire, jusqu’à trouver la cause de non fonctionnement du screener.

    #73821 quote
    finplus
    Participant
    Master

    Merci. Je vais essayer de faire comme indiqué même si je n’ai pas tout bien compris…

    #73822 quote
    finplus
    Participant
    Master

    Bon je n’y arrive pas/ Est-ce que quelqu’un peut donc me programmer un simple screener qui me remonte les paires pour lesquelles les prix croisent à la hausse ou à la baisse la KAMA 200?

    merci.

    #73855 quote
    Nicolas
    Keymaster
    Master

    Je vais reprendre depuis le début, on ira plus vite 🙂

    Dans cet indicateur on a beaucoup plus que le “cours et la kama”, il y a des bougies construites en Heikin Ashi depuis la KAMA et un oscillateur DMI pour générer des signaux, est-ce volontaire ou non ?

    #73956 quote
    finplus
    Participant
    Master

    oui c’est volontaire. Mais on peut oublier l’indicateur ci-dessus et partir sur le franchissement de la KAMA 200 par les prix.

    #73991 quote
    Nicolas
    Keymaster
    Master

    Ce code devrait fonctionner:

    // parameters :
    Period = 200
    FastPeriod = 2
    SlowPeriod = 30
    
    Fastest = 2 / (FastPeriod + 1)
    Slowest = 2 / (SlowPeriod + 1)
    
    if barindex < Period+1 then
    Kama=close
    else
    Num = abs(close-close[Period])
    Den = summation[Period](abs(close-close[1]))
    ER = Num / Den
    Alpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)
    KAMA = (Alpha * Close) + ((1 -Alpha)* Kama[1])
    endif
    
    if close crosses over KAMA or close crosses under KAMA then
    test=1
    else
    test=0
    endif
    
    screener[test] (KAMA)

    Mais le problème c’est que pour une période aussi longue, il faudrait 400 bars d’historique, car à la ligne 12 à partir de la 200ème période on va chercher la valeur du close il y a déjà 200 périodes en arrière, donc nous n’aurons jamais les mêmes valeurs avec ProBacktest dut à la limitation de l’historique à 254 bars..

    #74114 quote
    finplus
    Participant
    Master

    Bien. Merci pour ces explications. C’est bien dommage. Bon week-end.

    #104084 quote
    finplus
    Participant
    Master

    Bonjour,

    je réouvre ce sujet pour savoir si la version 10.3 de PRT disposera de suffisamment d’historiques pour pouvoir disposer d’un screener permettant – par exemple – d’identifier un croisement des cours avec la kama 200.

    merci.

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

Heikin ashi smooth and signal


ProScreener : Scanners de Marché & Détection

New Reply
Author
author-avatar
finplus @finplus Participant
Summary

This topic contains 13 replies,
has 2 voices, and was last updated by finplus
6 years, 7 months ago.

Topic Details
Forum: ProScreener : Scanners de Marché & Détection
Language: French
Started: 06/13/2018
Status: Active
Attachments: No files
Logo Logo
Loading...