Cette stratégie est un système de trading quantitatif de 4 heures basé sur les bandes de Bollinger, combinant les concepts de trading de rupture de tendance et de réversion moyenne.
La logique de base repose sur les éléments clés suivants: 1. Utilise la moyenne mobile à 20 périodes comme bande intermédiaire, avec 2 écarts types pour la fourchette de volatilité 2. Signaux d'entrée: longs lorsque le corps de la bougie (moyenne d'ouverture et de fermeture) se brise au-dessus de la bande supérieure, courts lorsqu'il se brise au-dessous de la bande inférieure 3. Signaux de sortie: Fermer les positions longues lorsque deux bougies consécutives ont à la fois des prix d'ouverture et de fermeture en dessous de la bande supérieure et en dessous de l'ouverture; logique inverse pour les positions courtes 4. Contrôle des risques: définit le stop-loss aux points hauts / bas actuels de la bougie pour assurer des pertes contrôlées par transaction
Cette stratégie combine les caractéristiques de suivi de tendance et d'inversion moyenne des bandes de Bollinger, permettant d'obtenir des rendements stables sur les marchés à tendance et à fourchette grâce à des conditions d'entrée/sortie strictes et à des mesures de contrôle des risques.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger 4H Follow", overlay=true, initial_capital=300, commission_type=strategy.commission.percent, commission_value=0.04) // StartYear = input(2022,"Backtest Start Year") // StartMonth = input(1,"Backtest Start Month") // StartDay = input(1,"Backtest Start Day") // testStart = timestamp(StartYear,StartMonth,StartDay,0,0) // EndYear = input(2023,"Backtest End Year") // EndMonth = input(12,"Backtest End Month") // EndDay = input(31,"Backtest End Day") // testEnd = timestamp(EndYear,EndMonth,EndDay,0,0) lev = 3 // Input parameters length = input.int(20, title="Bollinger Band Length") mult = input.float(2.0, title="Bollinger Band Multiplier") // Bollinger Bands calculation basis = ta.sma(close, length) upperBand = basis + mult * ta.stdev(close, length) lowerBand = basis - mult * ta.stdev(close, length) // Conditions for Open Long openLongCondition = strategy.position_size == 0 and close > open and (close + open) / 2 > upperBand // Conditions for Open Short openShortCondition = strategy.position_size == 0 and close < open and (close + open) / 2 < lowerBand // Conditions for Close Long closeLongCondition = strategy.position_size > 0 and strategy.position_size > 0 and (close < upperBand and open < upperBand and close < open) // Conditions for Close Short closeShortCondition = strategy.position_size < 0 and strategy.position_size < 0 and (close > lowerBand and open > lowerBand and close > open) // Long entry if openLongCondition strategy.entry("Long", strategy.long, qty=strategy.equity * lev / close) strategy.exit("Long SL", from_entry="Long", stop=low) // Set Stop-Loss // Short entry if openShortCondition strategy.entry("Short", strategy.short, qty=strategy.equity * lev / close) strategy.exit("Short SL", from_entry="Short", stop=high) // Set Stop-Loss // Long exit if closeLongCondition strategy.close("Long", comment = "TP") // Short exit if closeShortCondition strategy.close("Short", comment = "TP") // Plot Bollinger Bands plot(upperBand, color=color.yellow, title="Upper Band") plot(lowerBand, color=color.yellow, title="Lower Band")