Strategi ini adalah sistem perdagangan yang mengikuti tren berdasarkan Triple Exponential Moving Average (TEMA). Strategi ini menangkap tren pasar dengan menganalisis sinyal silang antara indikator TEMA jangka pendek dan jangka panjang, menggabungkan stop-loss berbasis volatilitas untuk manajemen risiko. Strategi ini beroperasi pada jangka waktu 5 menit, menggunakan indikator TEMA 300 dan 500 periode sebagai dasar untuk generasi sinyal.
Logika inti dari strategi ini didasarkan pada elemen kunci berikut:
Strategi ini adalah sistem trend-following yang komprehensif yang menangkap tren melalui crossover TEMA sambil mengelola risiko dengan stop-loss dinamis. Logika strategi jelas, implementasinya mudah, dan menunjukkan kepraktisan yang baik. Namun, ketika perdagangan langsung, perhatian harus diberikan pada identifikasi lingkungan pasar dan pengendalian risiko. Disarankan untuk mengoptimalkan parameter berdasarkan kondisi pasar yang sebenarnya setelah 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)