Esta estrategia es un sistema de negociación cuantitativo que combina la ruptura de Bollinger Bands con las tendencias de promedios móviles. El sistema captura automáticamente las oportunidades de mercado mediante el monitoreo de las relaciones de precios con Bollinger Bands mientras utiliza un promedio móvil de 100 días para la confirmación de tendencias. Implementa el tamaño dinámico de la posición basado en el patrimonio de la cuenta para la gestión automática del riesgo.
La lógica central se basa en los siguientes elementos clave:
Esta estrategia construye un sistema de negociación cuantitativo completo mediante la combinación de bandas de Bollinger y promedios móviles. Manteniendo una lógica simple, implementa funcionalidades básicas que incluyen generación de señales, gestión de posiciones y control de riesgos. Aunque hay áreas para la optimización, el diseño general es sólido y tiene un valor de aplicación práctico. Se recomienda optimizar a fondo los parámetros y validar mediante backtesting antes de la implementación en vivo, con ajustes realizados de acuerdo con características específicas del mercado.
/*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")