
Strategi ini adalah sistem pelacakan tren berbasis multi-layer moving average (SMA) yang dikombinasikan dengan teknik deteksi silang pensel yang tepat. Ini menentukan tren pasar melalui hierarki hubungan rata-rata bergerak 20, 50, 100 dan 200 periode, dan menggunakan harga real-time dan persilangan rata-rata bergerak untuk memicu sinyal perdagangan.
Strategi ini menggunakan mekanisme penyaringan tren tiga tingkat, yang mengharuskan 50 siklus rata-rata berada di atas 100 siklus rata-rata, dan 100 siklus rata-rata berada di atas 200 siklus rata-rata untuk mengkonfirmasi tren naik, sebaliknya mengkonfirmasi tren turun. Sinyal masuk didasarkan pada persilangan harga dengan 50 siklus rata-rata, menggunakan data pens untuk melakukan deteksi persilangan yang akurat, untuk menentukan kapan persilangan terjadi dengan membandingkan perilaku harga saat ini dengan hubungan posisi garis K sebelumnya. Sinyal keluar ditentukan oleh hubungan harga dengan 20 siklus rata-rata, yang memicu sinyal posisi datar ketika harga menembus 20 siklus rata-rata.
Ini adalah strategi pelacakan tren yang terstruktur, logis, dan jelas, yang menggunakan kombinasi dari beberapa lapisan rata-rata bergerak, yang menjamin keandalan sinyal dan memungkinkan pelacakan tren yang efektif. Strategi ini dirancang dengan mempertimbangkan kepraktisan dan universalitas, dan cocok untuk digunakan dalam berbagai lingkungan pasar. Dengan pengoptimalan dan perbaikan lebih lanjut, strategi ini diharapkan untuk mendapatkan kinerja yang lebih baik dalam perdagangan nyata.
/*backtest
start: 2024-02-22 00:00:00
end: 2024-06-25 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Multi-SMA Strategy - Core Signals", overlay=true)
// ———— Universal Inputs ———— //
int smaPeriod1 = input(20, "Fast SMA")
int smaPeriod2 = input(50, "Medium SMA")
bool useTickCross = input(true, "Use Tick-Precise Crosses")
// ———— Timezone-Neutral Calculations ———— //
sma20 = ta.sma(close, smaPeriod1)
sma50 = ta.sma(close, smaPeriod2)
sma100 = ta.sma(close, 100)
sma200 = ta.sma(close, 200)
// ———— Tick-Precise Cross Detection ———— //
golden_cross = useTickCross ?
(high >= sma50 and low[1] < sma50[1]) :
ta.crossover(sma20, sma50)
death_cross = useTickCross ?
(low <= sma50 and high[1] > sma50[1]) :
ta.crossunder(sma20, sma50)
// ———— Trend Filter ———— //
uptrend = sma50 > sma100 and sma100 > sma200
downtrend = sma50 < sma100 and sma100 < sma200
// ———— Entry Conditions ———— //
longCondition = golden_cross and uptrend
shortCondition = death_cross and downtrend
// ———— Exit Conditions ———— //
exitLong = ta.crossunder(low, sma20)
exitShort = ta.crossover(high, sma20)
// ———— Strategy Execution ———— //
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.close("Long", when=exitLong)
strategy.close("Short", when=exitShort)
// ———— Clean Visualization ———— //
plot(sma20, "20 SMA", color.new(color.blue, 0))
plot(sma50, "50 SMA", color.new(color.red, 0))
plot(sma100, "100 SMA", color.new(#B000B0, 0), linewidth=2)
plot(sma200, "200 SMA", color.new(color.green, 0), linewidth=2)
// ———— Signal Markers ———— //
plotshape(longCondition, "Long Entry", shape.triangleup, location.belowbar, color.green, 0)
plotshape(shortCondition, "Short Entry", shape.triangledown, location.abovebar, color.red, 0)
plotshape(exitLong, "Long Exit", shape.xcross, location.abovebar, color.blue, 0)
plotshape(exitShort, "Short Exit", shape.xcross, location.belowbar, color.orange, 0)