Cette stratégie est basée sur une idée classique de trading à court terme - short après les bougies haussières consécutives et long après les bougies baissières consécutives. Plus précisément, cette stratégie détecte la hauteur du corps et la couleur des bougies pour déterminer l'apparition de bougies consécutives de la même couleur, puis utilise l'indicateur RVI pour déterminer si un renversement doit avoir lieu. Dans l'ensemble, il s'agit d'une stratégie qui combine les modèles de bougies et l'indicateur RVI pour mettre en œuvre le trading d'inversion à court terme.
La logique de base de cette stratégie comprend:
Vérifiez si la hauteur du corps du chandelier dépasse le seuil minimum pour filtrer les mouvements haussiers/baissiers insignifiants.
Déterminez si les deux chandeliers précédents ont la même couleur, ce qui peut indiquer un potentiel renversement à court terme.
Si le chandelier actuel a une couleur différente des deux précédents, un signal de trading est généré. c'est-à-dire aller long après deux chandeliers baissiers et un haussier, aller court après deux chandeliers haussiers et un baissier.
L'indicateur RVI permet d'identifier les renversements à court terme.
En résumé, cette stratégie combine les modèles de chandeliers et l'indicateur RVI pour créer un système de réversion moyenne à court terme, capturant les renversements rentables des comportements anormaux des prix à court terme.
Les principaux avantages de cette stratégie sont les suivants:
Les chandeliers consécutifs de la même couleur indiquent souvent des anomalies prêtes à s'inverser.
L'indicateur RVI aide à la détermination de l'inversion, complétant les modèles de chandeliers pour des signaux plus stables.
La fréquence de négociation est relativement élevée pour les transactions à court terme.
Risques contrôlables découlant de la taille fixe des transactions et de la prise de stop loss/profit.
Une logique simple et claire qui est facile à comprendre et à mettre en œuvre pour le trading en direct.
Quelques risques à noter:
Les renversements à court terme ne sont pas garantis lors de fortes tendances lorsque les signaux peuvent échouer.
Le RVI peut générer des signaux incorrects dans des conditions particulières de marché.
Un paramètre de stop-loss inadéquat pourrait entraîner des pertes importantes.
Considérez l'optimisation au pourcentage requis de bougies de même couleur dans N périodes.
La taille fixe de la transaction ne peut pas contrôler les risques globaux de la position.
Quelques moyens d'optimiser davantage la stratégie:
Optimiser la logique des chandeliers consécutifs en utilisant des statistiques plutôt que des périodes fixes.
Optimisez les paramètres RVI pour trouver les meilleures combinaisons.
Ajouter le stop loss suivant la volatilité du marché.
Ajouter la taille de la position basée sur l'utilisation du compte.
Ajouter plus de filtres comme les canaux, les tendances pour améliorer la stabilité du système.
Paramètre de réglage pour différents produits.
L'apprentissage automatique sur les données historiques pour optimiser dynamiquement les paramètres.
En résumé, il s'agit d'une stratégie de réversion moyenne à court terme typique basée sur des modèles de bougies et RVI. Elle présente des avantages mais aussi des risques. Des optimisations supplémentaires sur les paramètres et la robustesse peuvent améliorer sa stabilité et sa rentabilité. Cependant, aucune stratégie n'élimine complètement les pertes. Les traders doivent rester disciplinés dans la gestion des risques.
/*backtest start: 2022-10-07 00:00:00 end: 2023-10-07 00:00:00 period: 3d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //This is part of a series of strategies developed automatically by a online software. I cannot share the site url, which is not related to me in any way, because it is against the TV reules. // //This strategy was optimized for GBPUSD, timeframe 1D, fixed lots 0.1, initial balance 1000€ //LOGIC: //- LONG ENTRY when previous candle is bear //- LONG EXIT: RVI > signal line //- SHORT ENTRY when previous candle is bull //- SHORT EXIT: RVI < signal line // //NOTE: I considered the open of actual candle instead of close otherwise there will be a back shift of 1 candle in pine script // //Take profit = no //Stop loss = no // strategy("Expert studio strategy 1 - GBPUSD", overlay=false, precision=6, initial_capital=1000,calc_on_every_tick=true, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=10000, currency=currency.EUR) //INPUTS src = input(close, "source") min_body_height = input(42, "Minimum body height", type=input.float) //bars_back=input(2, "Consecutive bars of same color") rvi_period = input(55, "RVI period") //CALCULATIONS_____________________________ //candle color body_height = abs(open - close) / syminfo.mintick body_color = open > close ? color.red : color.green //da migliorare for i=0 to bars_back-1 //RVI -------- thanks to hecate p = rvi_period CO = close - open HL = high - low value1 = (CO + 2 * CO[1] + 2 * CO[2] + CO[3]) / 6 value2 = (HL + 2 * HL[1] + 2 * HL[2] + HL[3]) / 6 num = sum(value1, p) denom = sum(value2, p) RVI = denom != 0 ? num / denom : 0 RVIsig = (RVI + 2 * RVI[1] + 2 * RVI[2] + RVI[3]) / 6 plot(RVI, color=color.green, style=plot.style_line, linewidth=1) plot(RVIsig, color=color.red, style=plot.style_line, linewidth=1) //---------------------------------- longCondition = body_height[1] >= min_body_height and body_color[1] == color.red and body_height[0] >= min_body_height and body_color[0] == color.red and RVIsig > RVI exitLong = RVI > RVIsig shortCondition = body_height[1] >= min_body_height and body_color[1] == color.green and body_height[0] >= min_body_height and body_color[0] == color.green and RVIsig < RVI exitShort = RVI < RVIsig if longCondition and strategy.opentrades == 0 strategy.entry("Long", strategy.long) strategy.close("Long", when=exitLong) if shortCondition and strategy.opentrades == 0 strategy.entry("Short", strategy.short) strategy.close("Short", when=exitShort) // === Backtesting Dates === thanks to Trost testPeriodSwitch = input(false, "Custom Backtesting Dates") testStartYear = input(2011, "Backtest Start Year") testStartMonth = input(10, "Backtest Start Month") testStartDay = input(7, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0) testStopYear = input(2018, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testStopHour = input(23, "Backtest Stop Hour") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false testPeriod_1 = testPeriod() isPeriod = testPeriodSwitch == true ? testPeriod_1 : true // === /END if not isPeriod strategy.cancel_all() strategy.close_all()