Strategi Pelacakan Pullback Moving Average

Penulis:ChaoZhang, Tanggal: 2024-03-28 18:00:05
Tag:

img

Gambaran umum

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.

Prinsip Strategi

  1. Menghitung dua rata-rata bergerak dengan periode yang berbeda (MA1 dan MA2), di mana MA1 adalah rata-rata bergerak jangka panjang dan MA2 adalah rata-rata bergerak jangka pendek.
  2. Ketika harga penutupan berada di atas MA1 dan di bawah MA2, dan tidak ada posisi saat ini, dan waktu saat ini berada dalam kisaran waktu perdagangan yang ditentukan, strategi membuka posisi panjang.
  3. Catat harga masuk sebagai buyPrice dan hitung harga stop-loss stopPrice (yaitu, i_stopPercent persentase di bawah harga masuk).
  4. Ketika harga penutupan naik kembali di atas MA2 dan i_lowerClose adalah false, atau ketika harga penutupan turun di bawah harga stop-loss stopPrice, strategi menutup posisi.
  5. Jika i_lowerClose benar, strategi menutup posisi ketika harga penutupan berada di atas MA2 dan harga penutupan lilin sebelumnya berada di bawah MA2.

Keuntungan Strategi

  1. Mengikuti tren: Dengan menentukan tren keseluruhan berdasarkan posisi relatif harga dan rata-rata bergerak jangka panjang, strategi mencari peluang masuk dalam tren.
  2. Pullback buying: Dengan mencari peluang membeli ketika harga menarik kembali ke rata-rata bergerak jangka pendek selama tren naik, strategi meningkatkan efektivitas biaya titik masuk.
  3. Perlindungan stop-loss: Menetapkan harga stop-loss membantu secara efektif mengendalikan risiko penurunan ketika harga bergerak merugikan dengan besar tertentu.
  4. Parameter fleksibel: Pengguna dapat mengatur parameter yang fleksibel seperti periode rata-rata bergerak, persentase stop-loss, dan apakah untuk menutup posisi ketika harga penutupan lilin sebelumnya berada di bawah rata-rata bergerak jangka pendek, sesuai dengan preferensi mereka.

Risiko Strategi

  1. Optimasi parameter: Pengaturan parameter yang berbeda memiliki dampak yang signifikan pada kinerja strategi, yang membutuhkan optimasi parameter dan pengujian backtesting di lingkungan pasar yang berbeda untuk menemukan kombinasi parameter yang optimal.
  2. Pasar bergolak: Di pasar bergolak, harga sering berfluktuasi antara rata-rata bergerak jangka panjang dan jangka pendek, yang berpotensi menyebabkan pembukaan dan penutupan posisi yang sering dan mengikis biaya perdagangan.
  3. Pembalikan tren: Ketika tren pasar berbalik, strategi dapat mengalami kerugian berturut-turut. Pada titik ini, perlu untuk menggabungkan indikator atau sinyal lain untuk menilai pembalikan tren dan menyesuaikan strategi secara tepat waktu.
  4. Black Swan Events: Ketika pasar mengalami peristiwa mendadak yang besar dan tak terduga, harga dapat berfluktuasi secara drastis, memicu stop loss dan mengekspos strategi terhadap kerugian yang signifikan.

Arah Optimasi Strategi

  1. Penilaian tren: Memperkenalkan lebih banyak indikator penilaian tren, seperti ADX, sebelum membuka posisi untuk mengkonfirmasi kekuatan dan arah tren saat ini dan meningkatkan akurasi sinyal masuk.
  2. Stop loss dinamis: Sesuaikan secara dinamis tingkat stop loss berdasarkan indikator seperti volatilitas harga dan ATR, memperluas stop loss ketika volatilitas harga tinggi dan memperketatnya ketika volatilitas harga rendah.
  3. Ukuran posisi: Sesuaikan secara dinamis ukuran posisi dari setiap entri berdasarkan faktor-faktor seperti kekuatan tren pasar dan volatilitas harga, meningkatkan ukuran posisi ketika tren kuat dan volatilitas sedang, dan mengurangi ukuran posisi ketika tren lemah atau volatilitas terlalu tinggi.
  4. Hedging jangka pendek panjang: Pertimbangkan untuk secara bersamaan memantau sinyal dari sisi panjang dan pendek dan hedging posisi di pasar atau kerangka waktu yang berbeda untuk mengurangi risiko keseluruhan strategi.

Ringkasan

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)


Lebih banyak