Cette stratégie est un système de trading quantitatif qui combine la rupture des bandes de Bollinger avec les tendances de moyenne mobile. Le système capte automatiquement les opportunités de marché en surveillant les relations de prix avec les bandes de Bollinger tout en utilisant une moyenne mobile de 100 jours pour la confirmation de la tendance. Il implémente une dimensionnement dynamique des positions basé sur le capital du compte pour une gestion automatique des risques.
La logique de base repose sur les éléments clés suivants:
Cette stratégie construit un système de négociation quantitatif complet en combinant les bandes de Bollinger et les moyennes mobiles. Tout en maintenant une logique simple, elle implémente des fonctionnalités de base, notamment la génération de signaux, la gestion de position et le contrôle des risques. Bien qu'il existe des domaines d'optimisation, la conception globale est solide et a une valeur d'application pratique. Il est recommandé d'optimiser soigneusement les paramètres et de valider par backtesting avant la mise en œuvre en direct, avec des ajustements effectués en fonction des caractéristiques spécifiques du marché.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BB Breakout with MA 100 Strategy", overlay=true) // Parameter Bollinger Bands length = input(20, title="BB Length") stdDev = input(2.0, title="BB Standard Deviation") // Hitung Bollinger Bands basis = ta.sma(close, length) dev = stdDev * ta.stdev(close, length) upperBB = basis + dev lowerBB = basis - dev // Hitung Moving Average 100 ma100 = ta.sma(close, 100) // Logika untuk sinyal beli dan jual longCondition = close > upperBB and close[1] <= upperBB[1] shortCondition = close < lowerBB and close[1] >= lowerBB[1] // Menentukan ukuran posisi (jumlah lot) size = strategy.equity / close // Menentukan ukuran posisi berdasarkan ekuitas saat ini // Eksekusi order if (longCondition) strategy.entry("Long", strategy.long, qty=size) if (shortCondition) strategy.entry("Short", strategy.short, qty=size) // Menutup posisi ketika kondisi terbalik if (longCondition and strategy.position_size < 0) strategy.close("Short") if (shortCondition and strategy.position_size > 0) strategy.close("Long") // Plotting plot(upperBB, color=color.red, title="Upper BB") plot(lowerBB, color=color.green, title="Lower BB") plot(basis, color=color.blue, title="Basis BB") plot(ma100, color=color.orange, title="MA 100") // Menambahkan informasi ke grafik bgcolor(longCondition ? color.new(color.green, 90) : na, title="Buy Signal Background") bgcolor(shortCondition ? color.new(color.red, 90) : na, title="Sell Signal Background")