Esta estratégia é um sistema de negociação quantitativo que combina a ruptura das Bandas de Bollinger com tendências de média móvel. O sistema captura automaticamente oportunidades de mercado monitorando as relações de preços com as Bandas de Bollinger enquanto usa uma média móvel de 100 dias para confirmação de tendência. Implementa dimensionamento dinâmico de posições baseado no patrimônio da conta para gerenciamento automático de riscos.
A lógica central baseia-se nos seguintes elementos-chave:
Esta estratégia constrói um sistema de negociação quantitativo completo, combinando Bandas de Bollinger e médias móveis. Mantendo uma lógica simples, implementa funcionalidades essenciais, incluindo geração de sinal, gerenciamento de posição e controle de risco. Embora existam áreas para otimização, o design geral é sólido e tem valor prático de aplicação.
/*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")