Ide utama dari strategi ini adalah menggunakan dua rata-rata bergerak dengan periode yang berbeda untuk menangkap peluang rebound setelah penurunan pasar. Ketika harga berada di atas rata-rata bergerak jangka panjang dan menarik kembali ke rata-rata bergerak jangka pendek, strategi membuka posisi panjang dan menutup posisi ketika harga naik kembali di atas rata-rata bergerak jangka pendek atau mencapai harga stop-loss. Dengan mencari peluang pembelian selama penurunan dalam tren, strategi bertujuan untuk mendapatkan keuntungan dari pasar tren.
Strategi Pullback Moving Average Tracking menangkap peluang perdagangan panjang selama penurunan harga dalam tren naik dengan menggunakan posisi relatif dua rata-rata bergerak dengan periode yang berbeda. Strategi ini cocok untuk pasar tren, dan dengan pengaturan parameter yang tepat dan stop-loss, dapat menghasilkan pengembalian yang stabil dalam kondisi tren. Namun, strategi ini menghadapi risiko tertentu di pasar yang bergolak dan selama pembalikan tren. Dengan memperkenalkan lebih banyak indikator, mengoptimalkan ukuran posisi, menerapkan stop-loss dinamis, dan metode lainnya, kinerja dan stabilitas strategi ini dapat ditingkatkan lebih lanjut.
/*backtest start: 2023-03-22 00:00:00 end: 2024-03-27 00:00:00 period: 1d basePeriod: 1h 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/ // © contapessoal_ivan // @version=5 strategy("Pullback Strategy", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, // 100% of balance invested on each trade commission_type=strategy.commission.cash_per_contract, commission_value=0.005) // Interactive Brokers rate // Get user input i_ma1 = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA") i_ma2 = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA") i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline") i_lowerClose = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2") i_startTime = input(title="Start Filter", defval=timestamp("26 Jan 2023 00:00 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups") i_endTime = input(title="End Filter", defval=timestamp("26 Mar 2024 23:59 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups") // Get indicator values ma1 = ta.sma(close, i_ma1) ma2 = ta.sma(close, i_ma2) // Check filter(s) f_dateFilter = true // Check buy/sell conditions var float buyPrice = 0 buyCondition = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1]) stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent // Enter positions if buyCondition strategy.entry(id="Long", direction=strategy.long) if buyCondition[1] buyPrice := open // Exit positions if sellCondition or stopCondition strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : "")) buyPrice := na // Draw pretty colors plot(buyPrice, color=color.lime, style=plot.style_linebr) plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1) plot(ma1, color=color.blue) plot(ma2, color=color.orange)