indicateur a plusieurs condition mais pas en meme temps

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #105796 quote
    raphy
    Participant
    New

    Bonjour,

    J aurai bien besoin d’aide car cela fait pas mal de temps que je bloque est n’y arrive pas malgré mais recherche sur ce forum.

    Je souhaiterai créer un indicateur qui serait composé de 3 autres indicateurs (maison) mais ou les conditions ne se déclenchent pas forcement en meme temps.

    ex :

    c1 = indic1

    c2 = indic2

    c3 = indic3

    Je voudrais que les conditions se suivent pour valider un achat, cela donnerai :

    c1 validé , en attente de c2, une fois c2 validé attendre que c3 soit validé. rentrer en position a l achat et la condition de sorti, serait sur le signal inverse.

    J’espere avoir été assez claire, sinon n hésitez pas a me demander des précisions

    Par avance merci

    #105798 quote
    Nicolas
    Keymaster
    Master

    Dans ce cas, on peut utiliser un test sur le BARINDEX (la quantité de chandeliers lue depuis le début de l’historique). Ainsi, si le BARINDEX de c2 est supérieur à celui de c1 alors on sait que c2 a eu lieu après c1, soit :

    if c1 then 
     c1bar = barindex
    endif
    
    if c2 and barindex>c1bar then 
     c2bar = barindex
    endif
    
    if c3 and barindex>c2bar then 
     signal = 1
    endif
    
    if signal = 1 then 
     buy at market 
     signal = 0
    endif
    #105801 quote
    raphy
    Participant
    New

    Merci Nicolas,

    je vais tester tout ca et vous tient au courant.

    #105822 quote
    raphy
    Participant
    New

    Re bonjour Nicolas,

    Comment faire pour qu il ne prenne qu une seule position a l achat et qu il en vende deux pour la vente et ainsi de suite?

    car dans se code il me prend des poses à chaque barre aprés le signal validé.

    L’idée est que j aimerai qu il rentre en position et qu une fois fait qu il n en prenne pas d autre sauf à l inverse.

    ex =

    signal achat à 100 = prise de position de 1 contrat call.

    un signal de vente se déclenche à 120 = prise de 2 contrats short.

    Par avance merci

    #105831 quote
    Nicolas
    Keymaster
    Master

    Le code que j’ai proposé est à adapter à ta stratégie, c’est juste un exemple. Je ne connais pas tes conditions d’entrées au marché, si tu ne veux pas cumuler les positions acheteuse, tu peux ajouter cette instruction dans ta condition d’achat (toujours en reprenant l’exemple précédent) :

    if signal = 1 and NOT LONGONMARKET then 
     buy at market 
     signal = 0
    endif

    Pour la taille des  contrats, tu changes la ligne par 2 avec:

    buy 1 contract at market 
    

    tu changes la quantité selon tes propres conditions bien entendu.

    #105838 quote
    raphy
    Participant
    New

    Re ,

    en rentrant ton code j obtiens ceci :

    avec le graph ci joint  se sera peut etre plus simple 🙂

    Ps : j ai codé comme ceci :

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    
    // Conditions pour ouvrir une position acheteuse
    indicator1 = CALL "testsignal1"
    indicator2 = CALL "testsignal2"
    indicator3 = call "testsignal3"
    c1 = (indicator1 = 1)
    c2 = (indicator2 = 1)
    c3 = (indicator3 = 1)
    c4 = (indicator1 = -1)
    c5 = (indicator2 = -1)
    c6 = (indicator3 = -1)
    if c1 then
    c1bar = barindex
    endif
     
    if c2 and barindex>c1bar then
    c2bar = barindex
    endif
    
    if c3 and barindex>c2bar then
    signal = 1
    endif
    if signal = 1 and NOT LONGONMARKET then
    buy 1 contract at market
    signal = 0
    endif
    
    
    // Conditions pour ouvrir une position en vente à découvert
    if c4 then
    c4bar = barindex
    endif
     
    if c5 and barindex>c4bar then
    c5bar = barindex
    endif
    if c6 and barindex>c5bar then
    
    signal = -1
    endif
     
    if signal = -1 then
    sellshort 1 CONTRACT AT MARKET
    signal = 0
    if signal = 1 and NOT LONGONMARKET then
    sell 1 contract at market
    signal = 0
    endif
    sell 1 contract at market
    endif
    capture-ecran-prt.png capture-ecran-prt.png
    #105840 quote
    Nicolas
    Keymaster
    Master

    Certaines conditions se chevauchent, tu devrais faire une comparaison type >= au lieu de strictement supérieur.

    ça donne quoi un

    GRAPH signal

    lors d’un backtest ?

    #105854 quote
    raphy
    Participant
    New

    te répond plus tard, vais regarder tout ca ce soir.

    Serait il pas plus facile de code en mode “indicateur” et non “proOrder” ?

    En tout cas merci de ton aide.

    #105855 quote
    Nicolas
    Keymaster
    Master

    Oui en effet, pourquoi ne pas plutôt créer un indicateur synthétique avec les conditions de ces 3 indicateurs ! plus simple à débugger en tout les cas 🙂

    #105864 quote
    raphy
    Participant
    New

    Le backtest donne ce qu il y a sur le graphique que j ai posté, l ordre d ‘achat qui est exécuté (ellipse jaune) a exactement bien appliqué la “methode” si je puis dire.

    barre verte dans le 1er  indic en bas,  barre verte dans celui du milieu et barre verte sur celui du bas,(ellipse jaune),

    ce qui a bien déclenché la position acheteuse.

    La ou cela bloque est :

    quand la 1 ere barre rouge arrive sur le 1er indic, suivi des autres rouges dans les 2 derniers (rectangle jaune),

    il n y a pas eu de prise de position (rectangle jaune), dans notre exemple il aurait du déclencher “2” vente,

    1 pour cloturer la position acheteuse et une autre pour prendre une position vendeuse.

    j’espére que j ai été assez claire 🙂

    le code pour un indicateur m irai trés bien en effet, pourrais tu me le donner , si c est pas trop abusé !!

    merci

    #105882 quote
    raphy
    Participant
    New

    Bonjour Nicolas,

    J’ai finalement enlevé une condition et fait un code pour un indicateur qui fonctionne bien, comme suit :

    c1 = (indicator1 > 0.5)
    c2 = (indicator2 > 0.5)
    
    if c1 then
    buyc=1
    endif
     
    if buyc and c2 then
    signal = 1
    
    buyc=0
    endif
    return signal

    En revanche, j ‘aurais bien besoin d’aide pour les ventes car je n’arrive pas à remplacer le “buyc”  !!

    J’ai esseyé avec “sellc” puis “sellshort” sans résultat.

    Par avance merci

    #105886 quote
    raphy
    Participant
    New

    C’est bon 🙂

    J’avais oublié de mettre le négatif dans les conditions !!

    voici le code si cela intéresse quelqu’un :

    c1 = (indicator1 < -0.5)
    c2 = (indicator2 < -0.5)
    
    if c1 then
    sellshortc=1
    endif
     
    if sellshortc and c2 then
    signal = 1
    
    sellshortc=0
    endif
    
    return signal

     

     

    Merci pour tout, bonne journée.

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

indicateur a plusieurs condition mais pas en meme temps


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
raphy @raphy Participant
Summary

This topic contains 11 replies,
has 2 voices, and was last updated by raphy
6 years, 6 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 08/29/2019
Status: Active
Attachments: 1 files
Logo Logo
Loading...