
Strategi Moving Average Crossover adalah strategi perdagangan kuantitatif yang didasarkan pada rata-rata bergerak sederhana. Strategi ini menghasilkan sinyal beli dan jual dengan menghitung rata-rata bergerak sederhana dari periode yang berbeda saat mereka bersilang.
Secara khusus, strategi ini menghitung rata-rata bergerak sederhana dari garis 9 dan 45 . Ketika harga melewati garis 9 dan 45 di atas, sinyal beli dihasilkan; Ketika harga melewati garis 9 dan 45 di bawah, sinyal jual dihasilkan.
Logika inti dari strategi ini didasarkan pada prinsip berlian-fork-dead-fork pada moving average. Moving average mampu secara efektif menyaring kebisingan pasar dan mengindikasikan perubahan tren besar. Ketika harga mulai memasuki tren naik ketika melewati rata-rata jangka pendek, berarti harga mulai memasuki tren turun ketika melewati rata-rata jangka panjang.
Secara khusus, strategi ini menggunakan rata-rata bergerak sederhana dari garis 9 dan 45 ̨ garis 9 mewakili tren jangka pendek, garis 45 mewakili tren jangka panjang ̨ ketika harga melewati garis 9 dan 45 ̨, menunjukkan bahwa harga saham berada di saluran naik dalam jangka pendek dan jangka panjang, sehingga menghasilkan sinyal beli; ketika harga melewati garis 9 dan 45 ̨, menunjukkan bahwa tren naik harga saham melemah secara bertahap, sehingga menghasilkan sinyal jual ̨
Dari sudut pandang logika kode, strategi ini pertama-tama menghitung rata-rata bergerak sederhana pada garis 9 dan garis 45 dan kemudian menilai garpu emas dan garpu mati pada garis rata-rata dengan fungsi ta.crossover dan ta.crossunder. Untuk menghasilkan sinyal beli dan jual, gunakan fungsi plotshape untuk memetakan grafik sinyal segitiga dan segitiga terbalik pada peta garis K.
Selain itu, strategi ini juga menetapkan logika stop loss untuk posisi panjang dan pendek. Khususnya, setelah membuka posisi, harga tertinggi dan terendah dari garis K sebelumnya akan diambil sebagai harga stop loss. Ini dapat mengunci keuntungan dan menghindari kerugian besar.
Tanggapan:
Strategi ini masih bisa dioptimalkan lebih jauh:
Adaptasi Moving Average atau Indeks Moving Average dapat digunakan untuk menangkap perubahan tren.
Meningkatkan sinyal filter seperti indikator volatilitas untuk menghindari kesalahan sinyal dalam situasi getaran.
Menggunakan metode optimasi parameter untuk mencari kombinasi parameter yang optimal.
Menambahkan mekanisme pelacakan tren ke dalam logika stop loss, memungkinkan garis stop loss untuk melacak harga secara fleksibel.
Meningkatkan penilaian terhadap resistance support pada tingkat besar untuk menghindari sinyal yang salah di area harga kunci.
Dengan model pembelajaran mesin, kualitas sinyal akan disaring lebih lanjut.
Strategi persilangan rata-rata adalah strategi pelacakan tren yang sederhana dan praktis. Ini dapat secara efektif menyaring kebisingan dan menangkap perubahan tren harga jangka menengah dan panjang. Setelah digabungkan dengan logika stop loss yang tepat, dapat melakukan perdagangan tren berdasarkan kontrol risiko.
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMA Crossover Strategy", overlay=true)
// Input parameters
fast_length = input(9, title="Fast SMA Length")
slow_length = input(45, title="Slow SMA Length")
// Calculate moving averages
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)
// Buy condition
buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma)
// Sell condition
sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma)
// Calculate stop loss levels
prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on)
prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on)
// Plot signals on the chart
plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
// Strategy exit conditions
long_stop_loss = sell_condition ? prev_low : na
short_stop_loss = buy_condition ? prev_high : na
strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss)
strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss)
strategy.entry("Long", strategy.long, when=buy_condition)
strategy.entry("Short", strategy.short, when=sell_condition)