Strategi ini adalah sistem perdagangan yang mengikuti tren berdasarkan rata-rata bergerak multi-periode. Strategi ini menggunakan 89-periode dan 21-periode Simple Moving Averages (SMA) untuk menentukan arah tren pasar secara keseluruhan, sementara menggabungkan 5 periode Eksponensial Moving Average (EMA) tertinggi dan terendah untuk mengidentifikasi sinyal perdagangan tertentu. Strategi ini menggunakan pendekatan manajemen posisi ganda dikombinasikan dengan mekanisme stop-loss tetap dan trailing take-profit.
Logika inti mencakup elemen kunci berikut:
Strategi ini merupakan sistem trend-following yang komprehensif yang menangkap tren pasar melalui moving average multi-periode sambil menerapkan manajemen posisi dan metode pengendalian risiko yang fleksibel. Meskipun ada ruang untuk optimasi, kerangka kerja dasar menunjukkan kepraktisan dan skalabilitas yang baik. Stabilitas strategi dapat ditingkatkan dengan menyesuaikan parameter dan menambahkan kondisi penyaringan untuk instrumen perdagangan dan lingkungan pasar yang berbeda.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 2h basePeriod: 2h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © tobiashartemink2 //@version=5 strategy("High 5 Trading Technique", overlay=true) // --- Input parameters --- sma89Length = input.int(title="SMA 89 Length", defval=89) sma21Length = input.int(title="SMA 21 Length", defval=21) ema5HighLength = input.int(title="EMA 5 High Length", defval=5) ema5LowLength = input.int(title="EMA 5 Low Length", defval=5) contracts = input.int(title="Aantal Contracten", defval=1) stopLossPoints = input.int(title="Stop Loss Points per Contract", defval=25) takeProfitPoints = input.int(title="Take Profit Points per Contract", defval=25) // --- Calculate moving averages --- sma89 = ta.sma(close, sma89Length) sma21 = ta.sma(close, sma21Length) ema5High = ta.ema(high, ema5HighLength) ema5Low = ta.ema(low, ema5LowLength) // --- Identify trend and order of moving averages --- longSetup = close > sma89 and close > sma21 and ema5High > sma21 and sma21 > sma89 shortSetup = close < sma89 and close < sma21 and ema5Low < sma21 and sma21 < sma89 // --- Entry signals --- longTrigger = longSetup and close <= ema5Low shortTrigger = shortSetup and close >= ema5High // --- Entry orders --- if (longTrigger) strategy.entry("Long 1", strategy.long, qty=contracts) strategy.entry("Long 2", strategy.long, qty=contracts) if (shortTrigger) strategy.entry("Short 1", strategy.short, qty=contracts) strategy.entry("Short 2", strategy.short, qty=contracts) // --- Stop-loss and take-profit for long positions --- if (strategy.position_size > 0) strategy.exit("Exit Long 1", "Long 1", stop=strategy.position_avg_price - stopLossPoints, limit=strategy.position_avg_price + takeProfitPoints) strategy.exit("Exit Long 2", "Long 2", stop=strategy.position_avg_price - stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints) // --- Stop-loss and take-profit for short positions --- if (strategy.position_size < 0) strategy.exit("Exit Short 1", "Short 1", stop=strategy.position_avg_price + stopLossPoints, limit=strategy.position_avg_price - takeProfitPoints) strategy.exit("Exit Short 2", "Short 2", stop=strategy.position_avg_price + stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints) // --- Plot moving averages --- plot(sma89, color=color.blue, linewidth=2) plot(sma21, color=color.red, linewidth=2) plot(ema5High, color=color.green, linewidth=2) plot(ema5Low, color=color.orange, linewidth=2)