Strategi Pengesanan Pullback Purata Bergerak

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

img

Ringkasan

Idea utama strategi ini adalah menggunakan dua purata bergerak dengan tempoh yang berbeza untuk menangkap peluang pemulihan selepas penurunan pasaran. Apabila harga berada di atas purata bergerak jangka panjang dan menarik kembali ke purata bergerak jangka pendek, strategi membuka kedudukan panjang dan menutup kedudukan apabila harga naik kembali di atas purata bergerak jangka pendek atau mencapai harga stop-loss. Dengan mencari peluang membeli semasa penurunan dalam trend, strategi ini bertujuan untuk mendapat keuntungan dari pasaran trend.

Prinsip Strategi

  1. Mengira dua purata bergerak dengan tempoh yang berbeza (MA1 dan MA2), di mana MA1 adalah purata bergerak jangka panjang dan MA2 adalah purata bergerak jangka pendek.
  2. Apabila harga penutupan berada di atas MA1 dan di bawah MA2, dan tidak ada kedudukan semasa, dan masa semasa berada dalam julat masa dagangan yang ditetapkan, strategi membuka kedudukan panjang.
  3. Mencatatkan harga masuk sebagai harga beli dan mengira harga stop-loss stopPrice (iaitu, i_stopPercent peratusan di bawah harga masuk).
  4. Apabila harga penutupan kembali naik di atas MA2 dan i_lowerClose adalah palsu, atau apabila harga penutupan jatuh di bawah harga stop-loss stopPrice, strategi menutup kedudukan.
  5. Jika i_lowerClose adalah benar, strategi menutup kedudukan apabila harga penutupan di atas MA2 dan harga penutupan lilin sebelumnya di bawah MA2.

Kelebihan Strategi

  1. Mengikuti trend: Dengan menentukan trend keseluruhan berdasarkan kedudukan relatif harga dan purata bergerak jangka panjang, strategi mencari peluang masuk dalam trend.
  2. Membeli balik: Dengan mencari peluang membeli apabila harga menarik kembali ke purata bergerak jangka pendek semasa aliran naik, strategi meningkatkan keberkesanan kos titik masuk.
  3. Perlindungan stop-loss: Menetapkan harga stop-loss membantu mengawal risiko penurunan dengan berkesan apabila harga bergerak negatif dengan magnitud tertentu.
  4. Parameter fleksibel: Pengguna boleh menetapkan parameter yang fleksibel seperti tempoh purata bergerak, peratusan stop-loss, dan sama ada untuk menutup kedudukan apabila harga penutupan lilin sebelumnya di bawah purata bergerak jangka pendek, mengikut pilihan mereka.

Risiko Strategi

  1. Pengoptimuman parameter: Tetapan parameter yang berbeza mempunyai kesan yang ketara terhadap prestasi strategi, yang memerlukan pengoptimuman parameter dan pengujian semula di persekitaran pasaran yang berbeza untuk mencari kombinasi parameter yang optimum.
  2. Pasaran bergelora: Di pasaran bergelora, harga sering turun naik antara purata bergerak jangka panjang dan jangka pendek, yang berpotensi membawa kepada pembukaan dan penutupan kedudukan yang kerap dan mengikis kos dagangan.
  3. Pembalikan trend: Apabila trend pasaran berbalik, strategi mungkin mengalami kerugian berturut-turut. Pada ketika ini, adalah perlu untuk menggabungkan penunjuk atau isyarat lain untuk menilai pembalikan trend dan menyesuaikan strategi dengan tepat pada masanya.
  4. Peristiwa angsa hitam: Apabila pasaran mengalami peristiwa tiba-tiba yang besar dan tidak dapat diramalkan, harga boleh turun naik secara drastik, mencetuskan stop-loss dan mendedahkan strategi kepada kerugian yang ketara.

Arahan Pengoptimuman Strategi

  1. Penghakiman trend: Memperkenalkan lebih banyak penunjuk penilaian trend, seperti ADX, sebelum membuka kedudukan untuk mengesahkan kekuatan dan arah trend semasa dan meningkatkan ketepatan isyarat kemasukan.
  2. Stop-loss dinamik: Sesuaikan tahap stop-loss secara dinamik berdasarkan penunjuk seperti turun naik harga dan ATR, memperluaskan stop-loss apabila turun naik harga tinggi dan mengetatkannya apabila turun naik harga rendah.
  3. Ukuran kedudukan: Sesuaikan saiz kedudukan setiap entri secara dinamik berdasarkan faktor-faktor seperti kekuatan trend pasaran dan turun naik harga, meningkatkan saiz kedudukan apabila trend kuat dan turun naik sederhana, dan mengurangkan saiz kedudukan apabila trend lemah atau turun naik terlalu tinggi.
  4. lindung nilai jangka pendek: Pertimbangkan untuk memantau isyarat dari kedua-dua sisi panjang dan pendek dan lindung nilai kedudukan di pasaran atau jangka masa yang berbeza untuk mengurangkan risiko keseluruhan strategi.

Ringkasan

Strategi Pengesanan Pullback Purata Bergerak menangkap peluang perdagangan panjang semasa penurunan harga dalam trend menaik dengan menggunakan kedudukan relatif dua purata bergerak dengan tempoh yang berbeza. Strategi ini sesuai untuk pasaran yang sedang berkembang, dan dengan tetapan parameter dan stop-loss yang sesuai, ia dapat menghasilkan pulangan yang stabil dalam keadaan trend. Walau bagaimanapun, strategi ini menghadapi risiko tertentu di pasaran yang bergolak dan semasa pembalikan trend. Dengan memperkenalkan lebih banyak penunjuk, mengoptimumkan saiz kedudukan, melaksanakan stop-loss dinamik, dan kaedah lain, prestasi dan kestabilan strategi ini dapat ditingkatkan lagi.


/*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 lanjut