Strategi Penjejakan Pullback Purata Bergerak


Tarikh penciptaan: 2024-03-28 18:00:05 Akhirnya diubah suai: 2024-03-28 18:00:05
Salin: 0 Bilangan klik: 603
1
fokus pada
1617
Pengikut

Strategi Penjejakan Pullback Purata Bergerak

Gambaran keseluruhan

Strategi utama strategi ini adalah menggunakan purata bergerak dari dua kitaran yang berbeza untuk menangkap peluang rebound selepas penarikan balik pasaran. Strategi ini membuka lebih banyak kedudukan apabila harga berada di atas garis purata jangka panjang dan berlaku penarikan balik ke garis purata jangka pendek, dan meletakkan posisi yang sama apabila harga kembali ke garis purata jangka pendek atau menyentuh harga stop loss. Strategi ini berusaha untuk mendapatkan keuntungan dalam keadaan trend dengan mencari peluang pembelian penarikan balik dalam trend.

Prinsip Strategi

  1. Hitung purata bergerak untuk dua tempoh yang berbeza ((MA1 dan MA2), di mana MA1 adalah purata jangka panjang, dan MA2 adalah purata jangka pendek.
  2. Apabila harga penutupan berada di atas MA1 dan di bawah MA2 dan tidak memegang kedudukan semasa, dan masa semasa dalam jangka masa perdagangan yang ditetapkan, strategi membuka kedudukan lebih banyak.
  3. Rekodkan harga bukaan kedudukan BuyPrice, dan kira harga berhenti StopPrice ((iaitu harga bukaan kedudukan turun i_stopPercent peratus)
  4. Apabila harga penutupan kembali ke MA2 dan i_lowerClose adalah false, atau apabila harga penutupan jatuh di bawah harga hentian stopPrice, strategi pelantikan akan dijalankan.
  5. Jika i_lowerClose adalah true, maka ia akan ditutup pada harga penutupan yang lebih tinggi daripada MA2 dan pada harga penutupan K yang lebih rendah daripada MA2.

Kelebihan Strategik

  1. Pengesanan trend: menentukan trend semasa dengan menilai hubungan antara harga dan kedudukan garis purata jangka panjang, mencari peluang masuk dalam trend.
  2. Pembelian kembali: mencari peluang pembelian untuk membalikkan harga ke garis rata-rata jangka pendek dalam trend menaik, meningkatkan rasio kos untuk membeli titik.
  3. Perlindungan Hentikan Kerosakan: Tetapkan harga hentikan kerugian, tutup kedudukan secara automatik apabila turun naik harga berbalik mencapai tahap tertentu, dan mengawal risiko penurunan secara berkesan.
  4. Parameter fleksibel: pengguna boleh menyesuaikan tempoh rata-rata, peratusan stop loss, dan parameter yang sesuai dengan keutamaan mereka.

Risiko Strategik

  1. Pengoptimuman parameter: Tetapan parameter yang berbeza mempunyai kesan yang besar terhadap prestasi strategi, perlu mengoptimumkan dan menguji parameter dalam keadaan pasaran yang berbeza untuk mencari kombinasi parameter yang terbaik.
  2. Pasaran bergolak: Dalam pasaran bergolak, harga sering bergolak di antara garis purata jangka panjang, yang boleh menyebabkan strategi sering membuka kedudukan kosong, kehilangan lebih banyak kos dagangan.
  3. Pembalikan trend: Apabila trend pasaran berbalik, strategi mungkin mengalami kerugian berturut-turut. Pada masa ini, anda perlu menilai perubahan trend dalam kombinasi dengan petunjuk atau isyarat lain dan menyesuaikan strategi dengan tepat.
  4. Kejadian Selang Hitam: Apabila pasaran mengalami peristiwa besar yang tidak dapat diramalkan, ia boleh menyebabkan turun naik harga yang kuat, dan mencetuskan strategi selepas berhenti kerugian yang lebih besar.

Arah pengoptimuman strategi

  1. Penghakiman Trend: Pengenalan lebih banyak indikator penghakiman trend, seperti ADX dan lain-lain, sebelum membuka kedudukan, untuk mengesahkan kekuatan dan arah trend semasa, meningkatkan ketepatan isyarat untuk membuka kedudukan.
  2. Hentian dinamik: Mengubah kedudukan hentian secara dinamik mengikut kadar turun naik harga, ATR dan sebagainya, dengan melepaskan hentian yang sesuai apabila turun naik harga lebih besar, dan mengetatkan hentian apabila turun naik harga lebih kecil.
  3. Pengurusan kedudukan: Mengikut kekuatan trend pasaran, kadar turun naik harga dan lain-lain faktor, menyesuaikan saiz kedudukan setiap kali membuka kedudukan, meningkatkan kedudukan apabila trend kuat dan kadar turun naik sedang, mengurangkan kedudukan apabila trend lemah atau kadar turun naik terlalu tinggi.
  4. Pelindung pelbagai ruang: pertimbangkan untuk memantau isyarat kedua-dua pihak pada masa yang sama, dan lindung nilai untuk membuka kedudukan di pasaran atau kitaran yang berbeza, untuk mengurangkan risiko keseluruhan strategi.

ringkaskan

Strategi pengesanan pergerakan rata-rata bergerak melalui hubungan kedudukan relatif antara dua garis purata berkala yang berbeza, menangkap banyak peluang untuk melakukan pengesanan harga dalam trend menaik. Strategi ini sesuai untuk pasaran trend, dengan menetapkan parameter dan hentian yang sesuai, anda boleh memperoleh keuntungan yang stabil dalam keadaan trend. Tetapi, strategi ini menghadapi risiko tertentu ketika pasaran goyah dan trend berbalik.

Kod sumber strategi
/*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)