Strategi Crossover Purata Bergerak Dual Posisi Dinamik adalah pendekatan perdagangan kuantitatif yang menggunakan isyarat silang dua Purata Bergerak Sederhana (SMA) dengan tempoh yang berbeza untuk melaksanakan perdagangan. Strategi ini memanfaatkan silang purata bergerak jangka pendek dan jangka panjang untuk menentukan trend pasaran dan secara dinamik menyesuaikan arah kedudukan berdasarkan isyarat silang dan hubungan antara harga dan purata jangka panjang. Strategi ini beroperasi pada jangka masa harian dan membolehkan fleksibiliti dalam kepekaan dan kelajuan tindak balas melalui parameter purata bergerak yang boleh disesuaikan.
Strategi Crossover Purata Bergerak Dual Posisi Dinamis adalah kaedah perdagangan kuantitatif klasik dan praktikal yang menangkap trend pasaran dengan memanfaatkan isyarat crossover MA dan menyesuaikan kedudukan secara dinamik. Strategi ini mudah difahami, sepenuhnya automatik, dan menunjukkan keupayaan mengikuti trend yang baik dengan fleksibiliti. Walau bagaimanapun, ia juga menghadapi risiko berpotensi seperti prestasi yang buruk di pasaran yang bergolak dan isyarat yang tertinggal. Dengan menggabungkan penunjuk teknikal tambahan, mengoptimumkan pemilihan parameter, dan melaksanakan mekanisme stop-loss, kestabilan dan keuntungan strategi dapat ditingkatkan lagi. Pedagang yang menggunakan strategi ini harus menyesuaikan parameter dan menguruskan mengikut instrumen perdagangan tertentu dan persekitaran pasaran 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)