condition simple sur indicatereur supertrend
Forums › ProRealTime forum Français › Support ProOrder › condition simple sur indicatereur supertrend
- This topic has 59 replies, 3 voices, and was last updated 4 years ago by Canis Majoris.
-
-
03/02/2020 at 1:37 AM #120922
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
03/02/2020 at 8:47 AM #12092803/02/2020 at 1:29 PM #120959Merci 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
1234567891011121314151617181920212223242526272829303132DEFPARAM 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éenoEntryBeforeTime = 093000timeEnterBefore = 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éenoEntryAfterTime = 163000timeEnterAfter = time < noEntryAfterTime// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiésdaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// Conditions pour ouvrir une position acheteuseignored, 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 THENBUY 1 SHARES AT MARKETENDIF// Conditions pour fermer une position acheteuseindicator3, ignored, ignored = CALL "Bande de Mogalef"c3 = (close >= indicator3)indicator4 = SuperTrend[3,10]c4 = (indicator4 >= close)IF c3 AND c4 THENSELL AT MARKETENDIFThanks
03/02/2020 at 2:41 PM #120967Il 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.
03/02/2020 at 3:31 PM #120973Effectivement ; 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
03/02/2020 at 4:48 PM #120988Ok donc si on veut utiliser les infos du ST en 30-minutes on fait comme ceci:
12345678910111213141516171819202122232425262728293031323334DEFPARAM 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éenoEntryBeforeTime = 093000timeEnterBefore = 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éenoEntryAfterTime = 163000timeEnterAfter = time < noEntryAfterTime// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiésdaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// Conditions pour ouvrir une position acheteuseignored, ignored, indicator1 = CALL "Bande de Mogalef"c1 = (close <= indicator1)c2 = (st >= close)IF (c1 AND c2) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THENBUY 1 SHARES AT MARKETENDIF// Conditions pour fermer une position acheteuseindicator3, ignored, ignored = CALL "Bande de Mogalef"c3 = (close >= indicator3)c4 = (st >= close)IF c3 AND c4 THENSELL AT MARKETENDIF03/02/2020 at 6:55 PM #121000Merci
J’ai des résultats contradictoires ( voir pièces jointes)
Je vais un peu analyser tout ça et revenir vers vous
03/02/2020 at 11:41 PM #121017Bonsoir,
Non , je n’y arrive pas , par manque de connaissance du language ! dommage ,je suis nouveau dans ce monde depuis octobre 🙂
03/03/2020 at 9:34 AM #121032Pourquoi 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 :
1GRAPH st03/03/2020 at 12:55 PM #121061Bonjour
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 illustrerExit 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 illustrerExit 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
03/03/2020 at 2:06 PM #121074Ci-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).
123456789101112131415161718192021222324252627282930313233343536373839DEFPARAM CumulateOrders = False // Cumul des positions désactivéx = 5 //quantité de bougies tendance SuperTrendstoploss = 50takeprofit = 100timeframe(30 minutes,updateonclose)st = SuperTrend[3,10]bullish = summation[x](close>st)=xbearish = summation[x](close<st)=xtimeframe(default)noEntryBeforeTime = 093000timeEnterBefore = time >= noEntryBeforeTimenoEntryAfterTime = 163000timeEnterAfter = time < noEntryAfterTimedaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0up, 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 THENBUY 1 SHARES AT MARKETENDIFIF (isell AND bearish) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THENSELLSHORT 1 SHARES AT MARKETENDIFset stop ploss stoplossset target pprofit takeprofit//debuggraphonprice stgraph bullish coloured(0,255,0)graph bearish coloured(255,0,0)03/03/2020 at 6:31 PM #121089Merci Nicolas , je vais regarder ça et revenir vers vous..
03/03/2020 at 8:52 PM #121096Re 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
03/04/2020 at 3:53 PM #121149Bonjour 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
03/05/2020 at 10:20 AM #121210Pour ma part tout fonctionne correctement ?! (voir image). J’utilise cette version des bandes de mogalef (à vérifier avec la tienne)
123456789101112131415161718192021222324CP=(open+high+low+2*close)/5F=LinearRegression[3](CP)E=std[7](F)if barindex<8 thenMediane = undefinedBandeHaute = undefinedBandeBasse = undefinedElseBandeHaute = F+(E*2)BandeBasse = F-(E*2)if F<BandeHaute[1] and F>BandeBasse[1] thenE=E[1]BandeHaute=BandeHaute[1]BandeBasse=BandeBasse[1]endifMediane =(BandeHaute+BandeBasse)/2Endifreturn 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.
- 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é.
- normal, manque de marge !
- 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 … 🙄
-
AuthorPosts
Find exclusive trading pro-tools on