Indicateur pour stratégie Donchian complexifiée

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #127144 quote
    patapoufpatapouf
    Participant
    Average

    Bonjour Nicolas.

    Je cherche à comparer – d’abord visuellement – plusieurs stratégies d’entrée en position Longue (en l’occurrence, actuellement, sur le Future Dax en 5 minutes, mais ça peut servir plus largement)
    (Hichimoku Kijun/Tenkan, Trend Impulse Filter, Ehler’s MAMA & FAMA, et Donchian complexifié…)
    pour voir lesquelles sont les plus prometteuses, leurs points faibles, et pourquoi pas, les combiner.
    Pour ce faire, je crée des indicateurs  1 / 0, pour indiquer les périodes on l’on est en position avec ces différentes stratégies.

    J’ai réussi sans problème pour les 3 premières, mais je bute sur la 4è (Donchian complexifié)

    Il y aurait 2 conditions possibles pour entrer Long, et une seule pour sortir.
    Je bute sur la programmation des 2 conditions pour entrer Long :

    • Donchian typique : on définit un canal haut et un canal bas
      CanalHi = Highest[PeriodHi](high) et CanalLo = Lowest[PeriodLo](low)
    • Entrée en position sur Condition 1 OU sur Condition 2 validée.
    • Condition 1 :
      Clôture au-dessus de CanalHi[1]
      Cela devrait donner quelque chose comme :
      close crosses over CanalHi[1]
    • Condition 2 :
      – 2 moyennes mobiles comme filtres : MMcourte = exponentialaverage[3](close) et MMlongue = exponentialaverage[20](close)
      (les périodes seraient à ajuster, mais on verra plus tard)
      – Sous-condition 2/1 : MMCourte croise à la hausse MMLongue.
      On garde alors en mémoire le plus-haut de la barre pour laquelle se produit ce croisement.
      – Sous-condition 2/2 : une fois la sous-condition 2/1 validée, on attend qu’une nouvelle bougie clôture au-dessus de ce plus-haut enregistré.
      Si c’est validé, on entre long
      Si on fait un nouveau plus-haut sans clôturer au-dessus du plus-haut enregistré (= mèche),  c’est le plus haut des 2 plus hauts qui sert de nouvelle référence, et on entre long sur clôture plus haute que le plus-haut de référence
      (je pense qu’on devrait mettre à ce niveau une boucle… mais je ne sais pas pour combien de barres – sans doute pour une durée maximale = PeriodHi)
    • Mais ce qui complique les choses, c’est qu’entre temps, la Condition 1 peut se trouver validée => entrée en position
      … ce qui entraine l’abandon de la surveillance de la Condition 2
    • Sortie de position : Donchian classique
      Close crosses under CanalLo[1]

    Je cherche pour le moment à créer un indicateur qui prenne la valeur 1 quand on est en position, et qui repasse à 0 quand on sort.
    Pourrais-tu m’aider à programmer cela ?
    Merci par avance pour ton aide.

    #145217 quote
    NicolasNicolas
    Keymaster
    Legend

    Désolé pour la réponse tardive, cette demande est-elle toujours d’actualité ?

    #145284 quote
    patapoufpatapouf
    Participant
    Average

    Bonsoir Nicolas. Merci pour ta réponse… tardive !
    A vrai dire, ça m’intéresserait bien. ne serait-ce que pour me pencher sur le code et apprendre comment faire les choses proprement !
    Si tu as le temps de regarder ça, merci par avance…

    #145309 quote
    NicolasNicolas
    Keymaster
    Legend

    En effet, il y a quelques sujets qui date du confinement, qui n’ont pas été traité, on a eu une sacré affluence à cette période, difficile de tout voir et tout traiter ! Je vais m’y plonger.

    #145310 quote
    NicolasNicolas
    Keymaster
    Legend

    voilà un premier jet en stratégie de trading automatique :

    DEFPARAM CumulateOrders = False
    
    Periodhi=50
    periodlo=50
    
    CanalHi = Highest[PeriodHi](high) 
    CanalLo = Lowest[PeriodLo](low)
    MMcourte = exponentialaverage[3](close) 
    MMlongue = exponentialaverage[20](close)
    
    //Condition 1 :
    //Clôture au-dessus de CanalHi[1]
    if not longonmarket and close crosses over CanalHi[1] then 
    buy at market 
    crossbar=0
    crosshigh=0
    endif 
    
    //Condition 2 :
    //- Sous-condition 2/1 : MMCourte croise à la hausse MMLongue.
    //On garde alors en mémoire le plus-haut de la barre pour laquelle se produit ce croisement.
    if not longonmarket and mmcourte crosses over mmlongue then 
    crossbar=barindex
    crosshigh=high
    endif
    //- Sous-condition 2/2 : une fois la sous-condition 2/1 validée, on attend qu’une nouvelle bougie clôture au-dessus de ce plus-haut enregistré.
    //Si c’est validé, on entre long
    if not longonmarket and barindex>crossbar and crossbar>0 then 
    //Si on fait un nouveau plus-haut sans clôturer au-dessus du plus-haut enregistré (= mèche),  c’est le plus haut des 2 plus hauts qui sert de nouvelle référence, et on entre long sur clôture plus haute que le plus-haut de référence
    if close<crosshigh then
    crosshigh=max(crosshigh,high)
    endif
    if close crosses over crosshigh then 
    buy at market 
    endif 
    endif 
    
    if longonmarket and close crosses under canallo[1] then 
    sell at market 
    endif 
    
    graphonprice crosshigh coloured(200,200,0)
    
    
    
    
    
Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Indicateur pour stratégie Donchian complexifiée


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
patapouf @patapouf Participant
Summary

This topic contains 4 replies,
has 2 voices, and was last updated by NicolasNicolas
5 years, 12 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 04/20/2020
Status: Active
Attachments: No files
ProRealCode ProRealCode
Loading...