Stratégie à améliorer
Forums › ProRealTime forum Français › Support ProOrder › Stratégie à améliorer
- This topic has 5 replies, 2 voices, and was last updated 8 months ago by phoentzs.
-
-
02/23/2024 at 12:26 PM #228636
Bonjour,
Ça va faire plusieurs mois maintenant que j’essaye d’adapter ma stratégie en code, et plus j’avance plus j’obtiens des résultats positifs mais je reste loin d’être complètement satisfait. Aujourd’hui j’aimerais la partager avec vous pour obtenir votre aide, et si possible qu’on puisse la perfectionner ensemble ; car je ne sais pas si la stratégie a atteint sa limite ou si en gardant la logique de base on peut l’améliorer.
Ma stratégie repose sur 6 indicateurs :
– les bandes de bollinger ; – deux moyennes mobiles ; – le MACD ; – les stochastiques ; – la parabolique ; – le prix
et consiste à ce que :
– le plus haut (le plus bas) perce la bande sup (inf) de bollinger ; – la parabolique est inférieure (supérieure) à la bande moy de bollinger ; – les bandes sup et inf de bollinger divergent ou forment une parallèle mais ne convergent pas.
– non-croisement des moyennes mobiles à la hausse (baisse)
– non-croisement du MACD à la hausse (baisse)
– non-croisement des stochastiques à la hausse (baisse)
Voici pour la prise de position. Pour la sortie, il suffit d’avoir :
– MACD LINE < MACD LINE [1] (et inversement pour exitshort). Ou – Stoch K devient négatif sur 2 périodes consécutives.
Généralement les deux arrivent au même moment mais dans le doute je précise.
Dans le code j’ai rajouté plusieurs timeframes (libre à vous de les modifier) ce qui peut le rendre complexe à priori mais le code répète les mêmes règles et est très facile à déchiffrer :
Le code est long mais facile à comprendre123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivé// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".DEFPARAM FLATBEFORE = 070000// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"DEFPARAM FLATAFTER = 201500// 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 acheteusetimeframe (30minutes)indicatora1 = BollingerUp[20](typicalPrice)a1 = (high >= indicatora1)indicatora2 = SAR[0.02,0.02,0.2]indicatora3 = Average[20](typicalPrice)a2 = (indicatora2 <= indicatora3)indicatora4 = MACDline[9,19,6](close)indicatora5 = MACDSignal[9,19,6](close)a3 = (indicatora4 > indicatora5)indicatora6 = WilderAverage[3](Stochastic[14,1](close))indicatora7 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))a4 = (indicatora6 > indicatora7)indicatora8 = Average[7](close)indicatora9 = indicatora8a5 = (indicatora8 > indicatora9[1])indicatora10 = Average[23](close)indicatora11 = indicatora10a6 = (indicatora10 > indicatora11[1])indicatora12 = BollingerUp[20](typicalPrice)indicatora13 = indicatora12a7 = (indicatora12 > indicatora13[1])indicatora14 = BollingerDown[20](typicalPrice)indicatora15 = indicatora14a8 = (indicatora14 < indicatora15[1])indicatora16 = MACDSignal[9,19,6](close)a9 = (indicatora16 > indicatora16[1])indicatora17 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))a10 = (indicatora17 > indicatora17[1])indicatora18 = MACDline[9,19,6](close)a11 = (indicatora18 > indicatora18[1])indicatora19 = WilderAverage[3](Stochastic[14,1](close))a12 = (indicatora19 > indicatora19[1])indicatoraV = WilderAverage[3](Stochastic[14,1](close))aV = indicatoraV < 80ConditionsLONGA = ( a2 AND a3 AND a4 AND a5 AND a6 and a9 AND a10 AND a11 AND a12 )timeframe(10 minutes)indicator1 = BollingerUp[20](typicalPrice)c1 = (high >= indicator1)indicator2 = SAR[0.02,0.02,0.2]indicator3 = Average[20](typicalPrice)c2 = (indicator2 <= indicator3)indicator4 = MACDline[9,19,6](close)indicator5 = MACDSignal[9,19,6](close)c3 = (indicator4 > indicator5)indicator6 = WilderAverage[3](Stochastic[14,1](close))indicator7 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))c4 = (indicator6 > indicator7)indicator8 = Average[7](close)indicator9 = indicator8c5 = (indicator8 > indicator9[1])indicator10 = Average[23](close)indicator11 = indicator10c6 = (indicator10 > indicator11[1])indicator12 = BollingerUp[20](typicalPrice)indicator13 = indicator12c7 = (indicator12 > indicator13[1])indicator14 = BollingerDown[20](typicalPrice)indicator15 = indicator14c8 = (indicator14 < indicator15[1])indicator16 = MACDSignal[9,19,6](close)c9 = (indicator16 > indicator16[1])indicator17 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))c10 = (indicator17 > indicator17[1])indicator18 = MACDline[9,19,6](close)c11 = (indicator18 > indicator18[1])indicator19 = WilderAverage[3](Stochastic[14,1](close))c12 = (indicator19 > indicator19[1])indicatorV = WilderAverage[3](Stochastic[14,1](close))cV = indicatorV < 75ConditionsLONG = (c1 AND c2 AND c3 AND c4 AND c5 AND c6 AND c7 AND c8 AND c9 AND c10 AND c11 AND c12) AND not daysForbiddenEntryif ConditionsLONG and cS and ConditionsLONGA THENBUY 10 CONTRACT AT MARKETSET STOP PTRAILING 12ENDIFtimeframe(default)indicatorS = WilderAverage[3](Stochastic[14,1](close))cS = indicatorS < 60// Conditions pour fermer une position acheteuseindicator20 = MACDline[9,19,6](close)c14 = (indicator20 < indicator20[1])indicator21 = WilderAverage[3](Stochastic[14,1](close))c15 = (indicator21 < indicator21[1])IF c14 AND c15 THENSELL AT MARKETENDIF// Conditions pour ouvrir une position vendeusetimeframe(30 minutes)// Conditions pour ouvrir une position en vente à découvertindicatoras24 = BollingerDown[20](typicalPrice)cas17 = (low <= indicatoras24)indicatoras25 = SAR[0.02,0.02,0.2]indicatoras26 = BollingerDown[20](typicalPrice)cas18 = (indicatoras25 >= indicatoras26)indicatoras27 = BollingerUp[20](typicalPrice)indicatoras28 = BollingerUp[20](typicalPrice)cas19 = (indicatoras27 > indicatoras28[1])indicatoras29 = BollingerDown[20](typicalPrice)indicatoras30 = BollingerDown[20](typicalPrice)cas20 = (indicatoras29 < indicatoras30[1])indicatoras31 = Average[7](close)indicatoras32 = Average[7](close)cas21 = (indicatoras31 < indicatoras32[1])indicatoras33 = Average[23](close)indicatoras34 = Average[23](close)cas22 = (indicatoras33 < indicatoras34[1])indicatoras35 = MACDSignal[9,19,6](close)cas23 = (indicatoras35 < indicatoras35[1])indicatoras36 = MACDline[9,19,6](close)indicatoras37 = MACDSignal[9,19,6](close)cas24 = (indicatoras36 < indicatoras37)indicatoras38 = MACDline[9,19,6](close)cas25 = (indicatoras38 < indicatoras38[1])indicatoras39 = WilderAverage[3](Stochastic[14,1](close))indicatoras40 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))cas26 = (indicatoras39 < indicatoras40)indicatoras41 = WilderAverage[3](Stochastic[14,1](close))cas27 = (indicatoras41 < indicatoras41[1])indicatoras42 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))cas28 = (indicatoras42 < indicatoras42[1])ConditionsSHORT60 = ( cas18 AND cas19 AND cas20 AND cas21 AND cas22 AND cas23 AND cas24 AND cas25 AND cas26 AND cas27 AND cas28)timeframe(15 minutes)// Conditions pour ouvrir une position en vente à découvertindicatora24 = BollingerDown[20](typicalPrice)ca17 = (low <= indicatora24)indicatora25 = SAR[0.02,0.02,0.2]indicatora26 = BollingerDown[20](typicalPrice)ca18 = (indicatora25 >= indicatora26)indicatora27 = BollingerUp[20](typicalPrice)indicatora28 = BollingerUp[20](typicalPrice)ca19 = (indicatora27 > indicatora28[1])indicatora29 = BollingerDown[20](typicalPrice)indicatora30 = BollingerDown[20](typicalPrice)ca20 = (indicatora29 < indicatora30[1])indicatora31 = Average[7](close)indicatora32 = Average[7](close)ca21 = (indicatora31 < indicatora32[1])indicatora33 = Average[23](close)indicatora34 = Average[23](close)ca22 = (indicatora33 < indicatora34[1])indicatora35 = MACDSignal[9,19,6](close)ca23 = (indicatora35 < indicatora35[1])indicatora36 = MACDline[9,19,6](close)indicatora37 = MACDSignal[9,19,6](close)ca24 = (indicatora36 < indicatora37)indicatora38 = MACDline[9,19,6](close)ca25 = (indicatora38 < indicatora38[1])indicatora39 = WilderAverage[3](Stochastic[14,1](close))indicatora40 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))ca26 = (indicatora39 < indicatora40)indicatora41 = WilderAverage[3](Stochastic[14,1](close))ca27 = (indicatora41 < indicatora41[1])indicatora42 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))ca28 = (indicatora42 < indicatora42[1])ConditionsSHORT30 = ( ca18 AND ca19 AND ca20 AND ca21 AND ca22 AND ca23 AND ca24 AND ca25 AND ca26 AND ca27 AND ca28)timeframe(10 minutes)indicator24 = BollingerDown[20](typicalPrice)c17 = (low <= indicator24)indicator25 = SAR[0.02,0.02,0.2]indicator26 = BollingerDown[20](typicalPrice)c18 = (indicator25 >= indicator26)indicator27 = BollingerUp[20](typicalPrice)indicator28 = BollingerUp[20](typicalPrice)c19 = (indicator27 > indicator28[1])indicator29 = BollingerDown[20](typicalPrice)indicator30 = BollingerDown[20](typicalPrice)c20 = (indicator29 < indicator30[1])indicator31 = Average[7](close)indicator32 = Average[7](close)c21 = (indicator31 < indicator32[1])indicator33 = Average[23](close)indicator34 = Average[23](close)c22 = (indicator33 < indicator34[1])indicator35 = MACDSignal[9,19,6](close)c23 = (indicator35 < indicator35[1])indicator36 = MACDline[9,19,6](close)indicator37 = MACDSignal[9,19,6](close)c24 = (indicator36 < indicator37)indicator38 = MACDline[9,19,6](close)c25 = (indicator38 < indicator38[1])indicator39 = WilderAverage[3](Stochastic[14,1](close))indicator40 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))c26 = (indicator39 < indicator40)indicator41 = WilderAverage[3](Stochastic[14,1](close))c27 = (indicator41 < indicator41[1])indicator42 = WilderAverage[3](WilderAverage[3](Stochastic[14,1](close)))c28 = (indicator42 < indicator42[1])ConditionsSHORT = (c17 AND c18 AND c19 AND c20 AND c21 AND c22 AND c23 AND c24 AND c25 AND c26 AND c27 AND c28) AND not daysForbiddenEntryif ConditionsSHORT and ConditionsSHORT60 and cSA and ConditionsSHORT30 THENsellshort 10 CONTRACT AT MARKETSET STOP PTRAILING 14ENDIFtimeframe(default)indicatorS = WilderAverage[3](Stochastic[14,1](close))cSA = indicatorS > 45//27 ou 45// Conditions pour fermer une position en vente à découvertindicator43 = MACDline[9,19,6](close)c29 = (indicator43 >= indicator43[1])indicator44 = WilderAverage[3](Stochastic[14,1](close))c30 = (indicator44 >= indicator44[1])IF c29 AND c30 THENEXITSHORT AT MARKETENDIFJ’espère quand voyant ce code vous le comprendrez :). Je travaille actuellement sur le Nasdaq 100 sur du 5 min mais je suppose qu’il peut fonctionner sur d’autres indices.
Si jamais je reste à votre disposition, je suis encore débutant et souhaite développer mes connaissances.
En vous remerciant pour votre bienveillance et votre compréhension 🙂
1 user thanked author for this post.
02/23/2024 at 9:08 PM #22866902/23/2024 at 9:49 PM #228670Merci pour votre retour. Au contraire, le but est d’obtenir le plus d’avis constructifs à propos de la stratégie (moi même je ne suis pas satisfait).
Quand vous parlez de grands mouvements, cela sous entend d’enlever des “timeframes” ? Quelles modifications apporteriez-vous dessus ?02/24/2024 at 2:13 PM #228691Je vous recommande ce fil… et peut-être quelques idées de votre choix. 😉
https://www.prorealcode.com/topic/a-completely-simple-nas-macd-system/
02/24/2024 at 2:22 PM #228693Super ! Je vais y jeter un coup d’œil. Merci beaucoup pour votre aide
02/24/2024 at 2:57 PM #228694 -
AuthorPosts
Find exclusive trading pro-tools on