Screener pour fanion

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #161917 quote
    deletedaccount210122
    Participant
    New

    Je viens de faire un petit script pour détecter les fanions. Je trouve qu’il fonctionne plutôt bien, même s’il retourne pas énormément de valeur. D’ailleurs si vous avez un fanion sous le coude pour tester 🙂
    Qu’en pensez-vous ?

    TIMEFRAME(daily)
    
    // Paramètres
    paramJoursRetourFanion = 5 // Nombre de jours à revenir en arrière pour déterminer le plus haut et bas pour voir si on est toujours dans le fanion
    paramPcMargeFanion = 10 // Pourcentage de marge pour voir si une bougie rentre entre les précédentes
    paramNbJoursMiniFanion = 4 // Nombre de jours minimum pour constituer le fanion
    paramPcGaucheMin = 8 // %age minamale de la partie de gauche
    paramVolumeMin = 200000 // Volume moyen minimum
    paramMinPcImpulsion = 8 // %age minimum de la bougie d'impulsion
    
    
    // Initalisation
    condFanion = 1
    
    // On parcours les jours en reculant
    nJour = 1
    bContinue = 1
    xMoyenneVolumeFanion = 0
    
    WHILE bContinue
    // Détermine le plus haut et bas sur les x derniers jours
    xPlusHautPrec = 0
    xPlusBasPrec = 999999
    FOR i = 1 TO paramJoursRetourFanion DO
    xHautTmp = MAX(OPEN[nJour + i], CLOSE[nJour + i])
    xBasTmp = MIN(OPEN[nJour + i], CLOSE[nJour + i])
    
    IF (xHautTmp > xPlusHautPrec) THEN
    xPlusHautPrec = xHautTmp
    ENDIF
    
    IF (xBasTmp < xPlusBasPrec) THEN
    xPlusBasPrec = xBasTmp
    ENDIF
    NEXT
    
    // Si pas assez de données, on affiche pas
    IF (xPlusBasPrec = 999999 OR xPlusHautPrec = 0) THEN
    condFanion = 0
    BREAK
    ENDIF
    
    // On applique des marges
    xPlusHautPrec = xPlusHautPrec * (1 + (paramPcMargeFanion / 100))
    xPlusBasPrec = xPlusBasPrec * (1 - (paramPcMargeFanion / 100))
    
    // On teste si notre bougie du jour entre donc dans ces plus et plus bas
    xHaut = MAX(OPEN[nJour], CLOSE[nJour])
    xBas = MIN(OPEN[nJour], CLOSE[nJour])
    
    // Si la bougie rentre dans les précédentes
    IF (xHaut > xPlusHautPrec OR xBas < xPlusBasPrec) THEN
    BREAK
    ENDIF
    
    xMoyenneVolumeFanion = xMoyenneVolumeFanion + VOLUME[nJour]
    
    IF (nJour > 20) THEN
    condFanion = 0
    BREAK
    ENDIF
    
    nJour = nJour + 1
    WEND
    
    xMoyenneVolumeFanion = xMoyenneVolumeFanion / nJour
    
    // nJour est le n° de jour (en arrière) qui finit le mât
    
    // Si trop peu de jours pour arriver au mât c'est un peu cours comme fanion, on ne prend pas
    IF (nJour <= paramNbJoursMiniFanion) THEN
    condFanion = 0
    ENDIF
    
    // Si toujours OK
    IF (condFanion) THEN
    // On regarde maintenant que la partie gauche du fanion est bien plus grande que celle de droite
    xPcGauche = 0
    xAmplGaucheMax = 0
    xAmplGaucheMin = 999999
    xAmplDroiteMax = 0
    xAmplDroiteMin = 999999
    nJourDecoupeFanion = ROUND(nJour / 3)
    FOR i = 0 TO nJourDecoupeFanion - 1
    // Gauche
    xHaut = MAX(OPEN[nJour - i], CLOSE[nJour - i])
    xBas = MIN(OPEN[nJour - i], CLOSE[nJour - i])
    
    IF (xHaut > xAmplGaucheMax) THEN
    xAmplGaucheMax = xHaut
    ENDIF
    IF (xBas < xAmplGaucheMin) THEN
    xAmplGaucheMin = xBas
    ENDIF
    
    xPcGauche = xPcGauche + (xHaut * 100 / xBas)
    
    
    // Droite
    xHaut = MAX(OPEN[1 + i], CLOSE[1 + i])
    xBas = MIN(OPEN[1 + i], CLOSE[1 + i])
    
    IF (xHaut > xAmplDroiteMax) THEN
    xAmplDroiteMax = xHaut
    ENDIF
    IF (xBas < xAmplDroiteMin) THEN
    xAmplDroiteMin = xBas
    ENDIF
    NEXT
    xAmplitudeGauche = xAmplGaucheMax - xAmplGaucheMin
    xAmplitudeDroite = xAmplDroiteMax - xAmplDroiteMin
    xPcGauche = xPcGauche / nJourDecoupeFanion
    xPcGauche = ((xPcGauche / 100) - 1) * 100
    
    // Si pourcentage de gauche est de x% passe
    IF (xPcGauche < paramPcGaucheMin) THEN
    condFanion = 0
    ENDIF
    
    // L'amplitude de droite doit faire au moins 1/3 de celle de gauche
    IF (xAmplitudeGauche / 3 < xAmplitudeDroite) THEN
    condFanion = 0
    ENDIF
    ENDIF
    
    // Si toujours OK
    IF (condFanion) THEN
    // On va ensuite regarder le mât complet
    
    // On regarde le plus bas sur les x derniers jours (x = moitié du fanion)
    nJourMat = ROUND(nJour / 2)
    xValMin = 999999
    nJourMin = 0
    nNbTmp = 0
    xMoyenneVolumeMat = 0
    FOR i = 0 TO nJourMat - 1
    IF (OPEN[nJour + i] < xValMin) THEN
    xValMin = OPEN[nJour + i]
    nJourMin = i
    nNbTmp = nNbTmp + 1
    xMoyenneVolumeMat = xMoyenneVolumeMat + VOLUME[nJour + i]
    ENDIF
    NEXT
    xMoyenneVolumeMat = xMoyenneVolumeMat / nNbTmp
    
    // Le mat doit faire au moins 3 jours
    IF (nJourMin <= 2) THEN
    condFanion = 0
    ENDIF
    
    // Le mat doit faire au moins 1.5x plus que l'amplitude de gauche
    xHauteurMat = MAX(OPEN[nJour], CLOSE[nJour]) - xValMin
    IF ((xHauteurMat / xAmplitudeGauche) < 1.5) THEN
    condFanion = 0
    ENDIF
    ENDIF
    
    // Si toujours OK
    IF (condFanion) THEN
    // Enfin on cherche un bougie verte d'impulsion 
    IF Variation < paramMinPcImpulsion THEN
    condFanion = 0
    ENDIF
    
    // Volumes mât doit être > volume moyen fanion
    IF (xMoyenneVolumeMat < xMoyenneVolumeFanion) THEN
    condFanion = 0
    ENDIF
    
    // Volume impulsion doit ête supérieur à la moyenne des deux jours précédents ET supérieur au volume MIN
    xVolTmp = (Volume[1] + Volume[2]) / 2
    IF (volume < xVolTmp OR volume < paramVolumeMin) THEN
    condFanion = 0
    ENDIF
    ENDIF
    
    SCREENER[condFanion](xHauteurMat)
    

    Désolé pour l’indentation, mais le copier-coller ne fonctionne pas bien on dirait.

    #161919 quote
    Nicolas
    Keymaster
    Master

    Merci beaucoup pour le partage ! Il n’y a pas d’indentation automatique sur le forum pour info.

    #161920 quote
    deletedaccount210122
    Participant
    New

    Il y a peu/pas de résultat actuellement car les marchés ne s’y prêtent pas trop. A voir donc quand ça ira mieux.

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

Screener pour fanion


ProScreener : Scanners de Marché & Détection

New Reply
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by deletedaccount210122
5 years ago.

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