
Strategi ini adalah sistem pelacakan tren dinamis berdasarkan saluran rata-rata pergerakan ganda, dikombinasikan dengan mekanisme manajemen risiko. Strategi ini menggunakan dua rata-rata pergerakan sederhana (SMA) untuk membangun saluran perdagangan, di mana rel atas menggunakan rata-rata pergerakan yang dihitung berdasarkan harga tertinggi, dan rel bawah menggunakan rata-rata pergerakan yang dihitung berdasarkan harga terendah. Sistem ini menggunakan lima harga penutupan garis K berturut-turut yang menembus jalur atas sebagai sinyal masuk, dan menggunakan lima harga penutupan garis K berturut-turut yang turun di bawah jalur bawah atau mundur 25% dari titik tertinggi sebagai sinyal keluar, mewujudkan tren dinamis. pelacakan dan pengendalian risiko.
Prinsip inti dari strategi ini adalah menangkap tren harga melalui saluran rata-rata pergerakan ganda dan membangun mekanisme masuk dan keluar yang ketat:
Strategi ini membangun sistem perdagangan pelacakan tren yang lengkap melalui saluran rata-rata pergerakan ganda, dikombinasikan dengan konfirmasi entri yang ketat dan mekanisme keluar ganda, untuk mencapai pelacakan tren yang efektif dan pengendalian risiko yang efektif. Keunggulan strategi ini adalah logika eksekusi yang jelas dan pengendalian risiko yang sempurna, tetapi masih memerlukan optimalisasi parameter untuk lingkungan pasar yang berbeda-beda, dan dapat lebih ditingkatkan dengan menambahkan penyaringan lingkungan pasar, konfirmasi multi-periode waktu, dsb. Secara keseluruhan, ini adalah strategi perdagangan kuantitatif dengan struktur lengkap dan logika yang ketat, yang cocok untuk diterapkan di lingkungan pasar dengan tren yang jelas.
/*backtest
start: 2025-01-02 00:00:00
end: 2025-01-09 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("Moving Average Channel (MAC)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Parameters for Moving Averages
upperMALength = input.int(10, title="Upper MA Length")
lowerMALength = input.int(8, title="Lower MA Length")
stopLossPercent = input.float(25.0, title="Stop Loss (%)", minval=0.1) / 100
// Calculate Moving Averages
upperMA = ta.sma(high, upperMALength)
lowerMA = ta.sma(low, lowerMALength)
// Plot Moving Averages
plot(upperMA, color=color.red, title="Upper Moving Average")
plot(lowerMA, color=color.green, title="Lower Moving Average")
// Initialize variables
var int upperCounter = 0
var int lowerCounter = 0
var float entryPrice = na
var float highestPrice = na
// Update counters based on conditions
if (low <= upperMA)
upperCounter := 0
else
upperCounter += 1
if (high >= lowerMA)
lowerCounter := 0
else
lowerCounter += 1
// Entry condition: 5 consecutive bars above the Upper MA
if (upperCounter == 5 and strategy.position_size == 0)
strategy.entry("Long", strategy.long)
highestPrice := high // Initialize highest price
// Update the highest price after entry
if (strategy.position_size > 0)
highestPrice := na(highestPrice) ? high : math.max(highestPrice, high)
// Exit condition: 5 consecutive bars below the Lower MA
if (lowerCounter == 5 and strategy.position_size > 0)
strategy.close("Long", comment="Exit: 5 bars below Lower MA")
// Stop-loss condition: Exit if market closes below 25% of the highest price since entry
stopLossCondition = low < highestPrice * (1 - stopLossPercent)
if (stopLossCondition and strategy.position_size > 0)
strategy.close("Long", comment="Exit: Stop Loss")