
Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada Supertrend dan DEMA. Strategi ini membangun kerangka keputusan perdagangan yang andal dengan menggabungkan kemampuan identifikasi arah tren dari indikator Supertrend dan fungsi konfirmasi tren dari DEMA. Sistem ini mendukung perdagangan dua arah dan memiliki mekanisme penyesuaian posisi dinamis yang dapat beralih secara fleksibel ke arah multi-halangan sesuai dengan kondisi pasar.
Logika inti dari strategi ini didasarkan pada komponen-komponen kunci berikut:
Strategi ini dengan kombinasi yang cerdik dari indikator Supertrend dan DEMA, membangun sistem pelacakan tren yang solid. Keuntungannya adalah sinyal yang sangat andal, kontrol risiko yang sempurna, tetapi masih membutuhkan parameter yang dioptimalkan oleh pedagang sesuai dengan karakteristik pasar tertentu. Dengan arah optimasi yang diusulkan, kemampuan adaptasi dan stabilitas strategi diharapkan dapat ditingkatkan lebih lanjut.
/*backtest
start: 2025-02-16 00:00:00
end: 2025-02-23 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("Supertrend with DEMA Strategy (Reversal Enabled)", overlay=true)
// ===== Parameters for Supertrend =====
atrPeriod = input.int(10, "ATR Length", minval=1)
factor = input.float(3.0, "Factor", minval=0.01, step=0.01)
// ===== Parameters for Allowing Trade Directions =====
allowLong = input.bool(true, "Allow LONG")
allowShort = input.bool(true, "Allow SHORT")
// Supertrend Calculation
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
// Set the value to na for the first bar to avoid false signals
supertrend := barstate.isfirst ? na : supertrend
// Plot Supertrend Lines
plot(direction < 0 ? supertrend : na, "Up Trend", color=color.green, style=plot.style_linebr)
plot(direction < 0 ? na : supertrend, "Down Trend", color=color.red, style=plot.style_linebr)
// ===== Parameters and Calculation for DEMA =====
demaLength = input.int(100, "DEMA Length", minval=1)
e1 = ta.ema(close, demaLength)
e2 = ta.ema(e1, demaLength)
dema = 2 * e1 - e2
// Plot DEMA
plot(dema, "DEMA", color=#43A047)
// ===== Signal Definitions =====
// Basic Supertrend Trend Change Signals
trendUp = ta.crossover(close, supertrend)
trendDown = ta.crossunder(close, supertrend)
// Entry Signals considering DEMA
longSignal = trendUp and (close > dema)
shortSignal = trendDown and (close < dema)
// ===== Entry/Exit Logic =====
// LONG Signal
if (longSignal)
// If there is an open SHORT position – reverse it to LONG if allowed
if (strategy.position_size < 0)
if (allowLong)
strategy.close("Short")
strategy.entry("Long", strategy.long)
else
// If reversal to LONG is not allowed – just close SHORT
strategy.close("Short")
// If there is no position – open LONG if allowed
else if (strategy.position_size == 0)
if (allowLong)
strategy.entry("Long", strategy.long)
// SHORT Signal
if (shortSignal)
// If there is an open LONG position – reverse it to SHORT if allowed
if (strategy.position_size > 0)
if (allowShort)
strategy.close("Long")
strategy.entry("Short", strategy.short)
else
// If reversal to SHORT is not allowed – just close LONG
strategy.close("Long")
// If there is no position – open SHORT if allowed
else if (strategy.position_size == 0)
if (allowShort)
strategy.entry("Short", strategy.short)
// ===== Additional Position Closure on Trend Change without Entry =====
// If Supertrend crosses (trend change) but DEMA conditions are not met,
// close the opposite position if open.
if (trendUp and not longSignal and strategy.position_size < 0)
strategy.close("Short")
if (trendDown and not shortSignal and strategy.position_size > 0)
strategy.close("Long")