Strategi Crossover Rata-rata Bergerak Dual Posisi Dinamis adalah pendekatan perdagangan kuantitatif yang memanfaatkan sinyal crossover dari dua Rata-rata Bergerak Sederhana (SMA) dengan periode yang berbeda untuk melaksanakan perdagangan. Strategi ini memanfaatkan crossover rata-rata bergerak jangka pendek dan jangka panjang untuk menentukan tren pasar dan secara dinamis menyesuaikan arah posisi berdasarkan sinyal crossover dan hubungan antara harga dan rata-rata jangka panjang. Strategi ini beroperasi pada kerangka waktu harian dan memungkinkan fleksibilitas dalam sensitivitas dan kecepatan reaksi melalui parameter rata-rata bergerak yang dapat disesuaikan.
Strategi Crossover Rata-rata Bergerak Dual Posisi Dinamis adalah metode perdagangan kuantitatif klasik dan praktis yang menangkap tren pasar dengan memanfaatkan sinyal crossover MA dan menyesuaikan posisi secara dinamis. Strategi ini sederhana untuk dipahami, sepenuhnya otomatis, dan menunjukkan kemampuan mengikuti tren yang baik dengan fleksibilitas. Namun, juga menghadapi risiko potensial seperti kinerja yang buruk di pasar yang bergolak dan sinyal yang tertinggal. Dengan memasukkan indikator teknis tambahan, mengoptimalkan pemilihan parameter, dan menerapkan mekanisme stop-loss, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut. Pedagang yang menggunakan strategi ini harus menyesuaikan parameter dan mengelola sesuai dengan instrumen perdagangan tertentu dan lingkungan pasar untuk mencapai risiko jangka panjang, hasil perdagangan yang stabil.
/*backtest start: 2024-06-29 00:00:00 end: 2024-07-29 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="MA Cross Backtest", overlay=true, default_qty_type=strategy.cash, default_qty_value=10) // Parâmetros das Médias Móveis shortlen = input.int(9, "Short MA Length", minval=1) longlen = input.int(21, "Long MA Length", minval=1) // Cálculo das Médias Móveis short = ta.sma(close, shortlen) long = ta.sma(close, longlen) // Plotagem das Médias Móveis plot(short, color=color.orange, title="Short MA") plot(long, color=color.green, title="Long MA") // Sinal de Compra baseado no cruzamento das médias móveis buySignal = ta.crossover(short, long) // Sinal de Venda (Short) baseado no cruzamento das médias móveis sellSignal = ta.crossunder(short, long) // Plotagem dos Sinais de Compra e Venda plotshape(series=buySignal, location=location.belowbar, color=color.blue, style=shape.labelup, text="Buy", title="Buy Signal") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal") // Condições para alertas alertcondition(buySignal, title="Buy Signal", message="MA Cross Buy Signal") alertcondition(sellSignal, title="Sell Signal", message="MA Cross Sell Signal") // Lógica da Estratégia de Backtest if (buySignal) // Se não há posição aberta ou se a posição atual é curta, feche a posição curta antes de abrir uma nova posição longa if (strategy.position_size < 0) strategy.close("Short", comment="Closing Short Position before Long Entry") strategy.entry("Long", strategy.long) // Alerta de compra alert("MA Cross Buy Signal", alert.freq_once_per_bar_close) if (strategy.position_size > 0) // Se o preço abrir abaixo da média longa if (open < long) strategy.close("Long", comment="Price Opened Below Long MA") strategy.entry("Short", strategy.short, comment="Switched to Short") // Alerta de venda alert("Price Opened Below Long MA - Switched to Short", alert.freq_once_per_bar_close) // Se a média móvel curta cruzar abaixo da média móvel longa else if (sellSignal) strategy.close("Long", comment="Short MA Crossed Below Long MA") strategy.entry("Short", strategy.short, comment="Switched to Short") // Alerta de venda alert("Short MA Crossed Below Long MA - Switched to Short", alert.freq_once_per_bar_close) if (strategy.position_size < 0) // Se o preço abrir acima da média longa if (open > long) strategy.close("Short", comment="Price Opened Above Long MA") strategy.entry("Long", strategy.long, comment="Switched to Long") // Alerta de compra alert("Price Opened Above Long MA - Switched to Long", alert.freq_once_per_bar_close)