
Strategi ini ialah sistem perdagangan kuantitatif berdasarkan isyarat silang berbilang purata bergerak (SMA). Ia secara komprehensif menggunakan tiga purata bergerak mudah bagi tempoh berbeza: 20 hari, 50 hari dan 200 hari, dan mengenal pasti perubahan arah aliran pasaran dan peluang dagangan yang berpotensi dengan menangkap hubungan antara isyarat pindah silang purata bergerak dan kedudukan harga. Strategi ini bukan sahaja mengambil kira isyarat silang bagi purata bergerak jangka pendek dan jangka sederhana, tetapi juga menggunakan purata bergerak jangka panjang sebagai penapis arah aliran, dengan berkesan meningkatkan kualiti transaksi.
Logik teras strategi adalah berdasarkan elemen utama berikut:
Ini ialah strategi dagangan purata bergerak berganda dengan struktur lengkap dan logik yang jelas. Dengan menggunakan purata bergerak bagi tempoh yang berbeza secara menyeluruh dan menggabungkannya dengan perhubungan kedudukan harga, strategi boleh menangkap perubahan dalam arah aliran pasaran dengan lebih baik. Walaupun terdapat ketinggalan tertentu dan risiko turun naik pasaran, strategi ini masih mempunyai nilai praktikal yang baik melalui tetapan parameter yang munasabah dan penapisan isyarat. Pada masa hadapan, kestabilan dan kebolehpercayaan strategi boleh dipertingkatkan lagi dengan memperkenalkan lebih banyak petunjuk teknikal dan mengoptimumkan mekanisme penjanaan isyarat.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMA 20/50/200 Strateji", overlay=true)
// SMA Periyotlarını, renklerini ve çizgi kalınlıklarını özelleştirme
sma20_period = input.int(20, title="SMA 20 Periyodu", minval=1)
sma50_period = input.int(50, title="SMA 50 Periyodu", minval=1)
sma200_period = input.int(200, title="SMA 200 Periyodu", minval=1)
sma20_color = input.color(color.blue, title="SMA 20 Rengi")
sma50_color = input.color(color.orange, title="SMA 50 Rengi")
sma200_color = input.color(color.red, title="SMA 200 Rengi")
sma20_width = input.int(2, title="SMA 20 Kalınlığı", minval=1, maxval=5)
sma50_width = input.int(2, title="SMA 50 Kalınlığı", minval=1, maxval=5)
sma200_width = input.int(2, title="SMA 200 Kalınlığı", minval=1, maxval=5)
// SMA Hesaplamaları
sma20 = ta.sma(close, sma20_period)
sma50 = ta.sma(close, sma50_period)
sma200 = ta.sma(close, sma200_period)
// Al ve Sat Koşulları
buyCondition = ta.crossover(sma20, sma50) and close > sma200
sellCondition = ta.crossunder(sma20, sma50) and close < sma200
buyCondition_50_200 = ta.crossover(sma50, sma200)
sellCondition_50_200 = ta.crossunder(sma50, sma200)
// Grafik üzerine SMA çizimleri
plot(sma20, color=sma20_color, linewidth=sma20_width, title="SMA 20")
plot(sma50, color=sma50_color, linewidth=sma50_width, title="SMA 50")
plot(sma200, color=sma200_color, linewidth=sma200_width, title="SMA 200")
// Al-Sat Stratejisi
if buyCondition
strategy.entry("Buy", strategy.long)
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white)
if sellCondition
strategy.close("Buy")
label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white)
if buyCondition_50_200
label.new(bar_index, low, "50/200 BUY", style=label.style_label_up, color=color.new(color.blue, 0), textcolor=color.white)
if sellCondition_50_200
label.new(bar_index, high, "50/200 SELL", style=label.style_label_down, color=color.new(color.orange, 0), textcolor=color.white)
// Performans Görselleştirmesi İçin Arka Plan Rengi
bgColor = buyCondition ? color.new(color.green, 90) : sellCondition ? color.new(color.red, 90) : na
bgcolor(bgColor)