
Strategi ini adalah sistem perdagangan mengikuti tren yang berdasarkan pada Triple Exponential Moving Average (TEMA). Strategi ini menangkap tren pasar dengan membandingkan sinyal persilangan TEMA jangka pendek dan jangka panjang dan mengelola risiko dengan menggabungkan penghentian volatilitas. Strategi ini berjalan pada jangka waktu 5 menit dan menggunakan indikator TEMA berperiode 300 dan 500 sebagai dasar pembangkitan sinyal.
Logika inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:
Strategi ini adalah sistem pelacakan tren lengkap yang menangkap tren melalui persilangan indikator TEMA dan mengelola risiko dengan stop loss yang dinamis. Strategi ini memiliki logika yang jelas, implementasi yang sederhana dan kepraktisan yang baik. Namun, dalam perdagangan riil, perlu diperhatikan identifikasi lingkungan pasar dan pengendalian risiko. Disarankan untuk mengoptimalkan parameter sesuai dengan kondisi pasar aktual berdasarkan verifikasi backtesting.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("TEMA Strategy for Gold", overlay=true)
// Inputs
tema_short_length = input.int(300, title="Short TEMA Length")
tema_long_length = input.int(500, title="Long TEMA Length")
pip_value = input.float(0.10, title="Pip Value (10 pips = 1 point for Gold)")
// Calculate TEMA
tema_short = ta.ema(2 * ta.ema(close, tema_short_length) - ta.ema(ta.ema(close, tema_short_length), tema_short_length), tema_short_length)
tema_long = ta.ema(2 * ta.ema(close, tema_long_length) - ta.ema(ta.ema(close, tema_long_length), tema_long_length), tema_long_length)
// Plot TEMA
plot(tema_short, color=color.blue, title="300 TEMA")
plot(tema_long, color=color.red, title="500 TEMA")
// Crossover conditions
long_condition = ta.crossover(tema_short, tema_long)
short_condition = ta.crossunder(tema_short, tema_long)
// Calculate recent swing high/low
swing_low = ta.lowest(low, 10)
swing_high = ta.highest(high, 10)
// Convert pips to price
pip_adjustment = pip_value * syminfo.mintick
// Long entry logic
if (long_condition and strategy.position_size == 0)
stop_loss_long = swing_low - pip_adjustment
strategy.entry("Long", strategy.long)
label.new(bar_index, swing_low, style=label.style_label_down, text="Buy", color=color.green)
// Short entry logic
if (short_condition and strategy.position_size == 0)
stop_loss_short = swing_high + pip_adjustment
strategy.entry("Short", strategy.short)
label.new(bar_index, swing_high, style=label.style_label_up, text="Sell", color=color.red)
// Exit logic
if (strategy.position_size > 0 and short_condition)
strategy.close("Long")
label.new(bar_index, high, style=label.style_label_up, text="Exit Long", color=color.red)
if (strategy.position_size < 0 and long_condition)
strategy.close("Short")
label.new(bar_index, low, style=label.style_label_down, text="Exit Short", color=color.green)