condition simple sur indicatereur supertrend

Viewing 15 posts - 1 through 15 (of 60 total)
  • Author
    Posts
  • #120922 quote
    Canis Majoris
    Participant
    Average

    Bonjour,

    J’essaie de faire un backtest pour tester une stratégie à l’aide de l’assistant création simplifiée , mais je n’arrive pas à indiquer la condition suivante  en utilisant le wizzard :

    J’achète si l’indicateur SuperTrend[3,10] est haussier

    Je vends si l’indicateur SuperTrend[3,10] est baissier

     

    Merci d’avance

    Tarik

    Capture-d’écran-2020-03-02-à-01.24.17.png Capture-d’écran-2020-03-02-à-01.24.17.png
    #120928 quote
    Nicolas
    Keymaster
    Master

    Si le SuperTrend est haussier c’est parce que le Close l’a croisé à la hausse à un moment et vice-versa pour un SuperTrend baissier. Il faut donc simplement tester un croisement du Close avec le SuperTrend.

    #120959 quote
    Canis Majoris
    Participant
    Average

    Merci pour votre réponse. cela  règle une partie de mon   probléme , le deuxième point est que cette vérification de supertrend doit se faire dans une unité de temps ( 30 min ) qui est  différente de l’unité de temps où j’ai mes signaux d’achat /vente ( 5 min ), voici mon code :

    Dans ce code il n y a aucune distinction de 30 et 5 min, malgré que j’ai positionné le curseur sur l’UT 30 min pour ajouter la condition avec le supertrend

    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    
    // Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiée
    noEntryBeforeTime = 093000
    timeEnterBefore = time >= noEntryBeforeTime
    
    // Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiée
    noEntryAfterTime = 163000
    timeEnterAfter = time < noEntryAfterTime
    
    // Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    // Conditions pour ouvrir une position acheteuse
    ignored, ignored, indicator1 = CALL "Bande de Mogalef"
    c1 = (close <= indicator1)
    indicator2 = SuperTrend[3,10]
    c2 = (indicator2 >= close)
    
    IF (c1 AND c2) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
    BUY 1 SHARES AT MARKET
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    indicator3, ignored, ignored = CALL "Bande de Mogalef"
    c3 = (close >= indicator3)
    indicator4 = SuperTrend[3,10]
    c4 = (indicator4 >= close)
    
    IF c3 AND c4 THEN
    SELL AT MARKET
    ENDIF

    Thanks

    #120967 quote
    Nicolas
    Keymaster
    Master

    Il n’y a pas de support multi timeframe dans l’assistant de création de code, il faut le faire à la main.

    Donc si je comprends bien, il faut prendre les signaux en UT 5 minutes avec les infos du SuperTrend 30 minutes ? Idem pour les bandes de Mogalef ?

    Mais, faut-il prendre l’info des indicateurs en cours de chandelier 30 minutes ou doit-on prendre celles de la barre 30 min précédente ?

    Pour mémoire, si on prend un croisement d’un Close 5-min sur un ST 30-min, à la fin du chandelier 30-min, le Close 5-min aura peut être repassé dans le sens inverse et donc le ST n’aura pas changé de couleur.

    #120973 quote
    Canis Majoris
    Participant
    Average

    Effectivement ; les signaux d’achat/Vente je veux les prendre dans l’UT 5 min en se basant sur les bandes de Mogalef (lorsque le prix touche la bande supérieure ou inférieur ). Et je valide ces signaux  en se basant  uniquement  sur la supertrend  dans l’UT 30 min. Je n’ai pas encore indiquer les conditions de sortie ( quand je le fait j’ai une perte totale du capital,j’ai laissé ça de coté pour l’instant)

    PS : les Bandes de Mogalef sur l’UT 30  Min je les utilise uniquement pour définir le SL et le TP ( à développer dans un deuxième temps ).

    Les résultats du backtest ne sont pas corrects pour l’instant car j’ai du mal à intégrer l’algo que j’ai en tête  ( première partie de l’algo ci dessus ).

    Bàv

    #120988 quote
    Nicolas
    Keymaster
    Master

    Ok donc si on veut utiliser les infos du ST en 30-minutes on fait comme ceci:

    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    
    timeframe(30 minutes,updateonclose)
    st = SuperTrend[3,10]
    
    timeframe(default)
    // Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiée
    noEntryBeforeTime = 093000
    timeEnterBefore = time >= noEntryBeforeTime
    
    // Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiée
    noEntryAfterTime = 163000
    timeEnterAfter = time < noEntryAfterTime
    
    // Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    // Conditions pour ouvrir une position acheteuse
    ignored, ignored, indicator1 = CALL "Bande de Mogalef"
    c1 = (close <= indicator1)
    c2 = (st >= close)
    
    IF (c1 AND c2) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
    BUY 1 SHARES AT MARKET
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    indicator3, ignored, ignored = CALL "Bande de Mogalef"
    c3 = (close >= indicator3)
    c4 = (st >= close)
    
    IF c3 AND c4 THEN
    SELL AT MARKET
    ENDIF
    #121000 quote
    Canis Majoris
    Participant
    Average

    Merci

    J’ai des résultats contradictoires ( voir pièces jointes)

    Je vais un peu analyser tout ça et revenir vers vous

    Capture-d’écran-2020-03-02-à-18.50.06.png Capture-d’écran-2020-03-02-à-18.50.06.png Capture-d’écran-2020-03-02-à-18.50.50.png Capture-d’écran-2020-03-02-à-18.50.50.png
    #121017 quote
    Canis Majoris
    Participant
    Average

    Bonsoir,

    Non , je n’y arrive pas , par manque de connaissance du language ! dommage  ,je suis nouveau dans ce monde depuis octobre   🙂

    #121032 quote
    Nicolas
    Keymaster
    Master

    Pourquoi penses-tu obtenir les mêmes résultats entre ces 2 deux stratégies qui sont différentes ? Dans l’une tu vérifies un ST 5-min et dans l’autre un ST en 30 minutes, ces 2 informations sont différentes, d’où des prises de positions qui ne sont pas comparables.

    Pour afficher le Supertend 30-minutes sur ton graphique 5-minutes, tu peux ajouter à la fin du code la ligne :

    GRAPH st
    #121061 quote
    Canis Majoris
    Participant
    Average

    Bonjour

    Je me suis mal exprimé ,  Sorry :

    Mon algorithme dit qu’il faut vérifier le ST uniquement dans l’UT 30 min ,  quand on se base sur le code que vous m’avez transmis qui prend en compte ce check en  UT 30 j’obtiens un résultat négatif  dans backprotest  (- 4272,16  eur de capital)

    Voilà ce que je veux faire d’une manière algorithmique Pure :

    J’achète  (2 conditions) :

    Condition 1 : Lorsque le cours enfonce (touche ou dépasse  ) la bande inférieure sans provoquer de déplacement des bandes En UT 5 minutes
    Condition 2 : Lorsque la tendance est haussière en UT  30 min (c’est à dire : quand le SUPER TREND est  visuellement vert sur une période pertinente de   bougies 30 min ) -voir pièce jointe pour illustrer

    Exit achat :

    Definir un Stop loss et un TP dans l’UT 30 min  ( De X points chacun )

    Je vends (2 conditions) : 

    Condition 1 : Quand le cours enfonce (touche ou dépasse ) la bande supérieure sans provoquer de déplacement des bandes En UT 5 minutes
    Condition 2 :  Quand la tendance est baissière  en UT  30 min ( c’est à dire: quand le SUPER TREND c’est  visuellement rouge sur une période pertinente de   bougies 30 min) -voir pièce jointe pour illustrer

    Exit vente :

    Définir un Stop loss et un TP dans l’UT 30 min  ( De X points chacun )

     

    Voilà c’est tout , si j’arrive à implémenter ça sur  proback test je serai content 🙂

    Et merci encore pour votre aide

    Capture-d’écran-2020-03-03-à-12.42.44.png Capture-d’écran-2020-03-03-à-12.42.44.png
    #121074 quote
    Nicolas
    Keymaster
    Master

    Ci-joint le code de la  stratégie. un TP/SL ce sont des niveaux de prix, ils ne sont pas liés à une unité de temps.

    La quantité de bougies où le ST est vert ou rouge est définit par la variable X à la ligne 3 (par défaut sur 5).

    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    
    x = 5 //quantité de bougies tendance SuperTrend
    stoploss = 50
    takeprofit = 100
    
    timeframe(30 minutes,updateonclose)
    st = SuperTrend[3,10]
    bullish = summation[x](close>st)=x
    bearish = summation[x](close<st)=x
    
    timeframe(default)
    noEntryBeforeTime = 093000
    timeEnterBefore = time >= noEntryBeforeTime
    
    noEntryAfterTime = 163000
    timeEnterAfter = time < noEntryAfterTime
    
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    up, ignored, down = CALL "Bande de Mogalef"
    ibuy = (close <= down) and down=down[1]
    isell = (close >= up) and up=up[1]
    
    IF (ibuy AND bullish) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
    BUY 1 SHARES AT MARKET
    ENDIF
    
    IF (isell AND bearish) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
    SELLSHORT 1 SHARES AT MARKET
    ENDIF
    
    set stop ploss stoploss
    set target pprofit takeprofit 
    
    //debug 
    graphonprice st 
    graph bullish coloured(0,255,0)
    graph bearish coloured(255,0,0)
    #121089 quote
    Canis Majoris
    Participant
    Average

    Merci Nicolas , je vais regarder ça et revenir vers vous..

    #121096 quote
    Canis Majoris
    Participant
    Average

    Re Bonjour

    Le résultat est toujours négatifs sur un backtest de  3 mois ( 3 décembre au 3 mars 2020), c’est très étrange  (Capture d’écran 2020-03-03 à 19.49.57.png  ), quand j’analyse un peu :

    1-J’ai l’impression que les trades sont en cours d’exécution même pendant les heures / jours où l’algo  n’autorise pas de trading    ( plage de trading : uniquement entre 9:30 et 16h00 pendant les jours ouvrés ) – pas le week end

    2- Le système a arrêté d’entrer en position brusquement  entre le 6 et le 7 février   ( voir petite croix rouge dans la courbe des grains/perte- Capture d’écran 2020-03-03 à 20.12.24 )

    3- je remarque aussi que l’algo parfois  entre en position alors qu’il ne devrait pas  ,exemple :  le 24 janvier à 11:05 (la bougie n’a pas touché la bande inférieur ) , il ferme cette même positon à 17:20 ( heure non autorisé dans le code ) ( Capture d’écran 2020-03-03 à 20.33.09.png ) 

    Toute suggestion sera la bien venue

    Bàv

    Capture-d’écran-2020-03-03-à-20.12.24.png Capture-d’écran-2020-03-03-à-20.12.24.png Capture-d’écran-2020-03-03-à-20.33.09.png Capture-d’écran-2020-03-03-à-20.33.09.png Capture-d’écran-2020-03-03-à-19.49.57.png Capture-d’écran-2020-03-03-à-19.49.57.png
    #121149 quote
    Canis Majoris
    Participant
    Average

    Bonjour Nicolas,

    Je me permet de revenir vers vous ,car j’avoue que je suis un peu frustré de ne pas pouvoir faire ce backtest , avez eu l’opportunité de voir d’où pouvait provenir le probléme ?

    Merci

    #121210 quote
    Nicolas
    Keymaster
    Master

    Pour ma part tout fonctionne correctement ?! (voir image). J’utilise cette version des bandes de mogalef (à vérifier avec la tienne)

    CP=(open+high+low+2*close)/5
    F=LinearRegression[3](CP)
    E=std[7](F)
    
    if barindex<8 then
    Mediane = undefined
    BandeHaute = undefined
    BandeBasse = undefined
    
    Else
    BandeHaute = F+(E*2)
    BandeBasse = F-(E*2)
    
    
    if F<BandeHaute[1] and F>BandeBasse[1] then
    E=E[1]
    BandeHaute=BandeHaute[1]
    BandeBasse=BandeBasse[1]
    endif
    
    Mediane =(BandeHaute+BandeBasse)/2
    Endif
    
    return BandeHaute coloured (255,154,51) as"Mogalef Bande Haute", Mediane coloured (102,0,204) as "Mogalef Mediane", BandeBasse coloured (0,204,255) as "Mogalef Bande Basse"
    

    Le backtest est bien entendu à lancer en TF 5-minutes.

    1. les conditions horaires sont strictes, donc il ne devrait pas y avoir de nouveaux orders ouverts à ces moments, il faut vérifier si le graphique de l’instrument n’est pas en horaire personnalisée et utilise bien celui du marché.
    2. normal, manque de marge !
    3. pour mémoire, le code est lu à la fin de la bougie et l’ordre exécuté à l’open suivant, donc la flèche du backtest ça n’est pas la bougie où le code a vérifié les conditions, c’est bien celle juste avant

    Concernant les performances, je vois pas bien ce que je peux faire par contre … 🙄

    bande-de-mogalef-et-supertrend.png bande-de-mogalef-et-supertrend.png
Viewing 15 posts - 1 through 15 (of 60 total)
  • You must be logged in to reply to this topic.

condition simple sur indicatereur supertrend


ProOrder : Trading Automatique & Backtests

New Reply
Author
Summary

This topic contains 59 replies,
has 3 voices, and was last updated by Canis Majoris
5 years, 10 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 03/02/2020
Status: Active
Attachments: 17 files
Logo Logo
Loading...