Strategi Pullback Momentum

Penulis:ChaoZhang, Tanggal: 2024-01-23
Tag:

img

Gambaran umum

Strategi ini bertujuan untuk mengidentifikasi peluang mundur potensial di pasar. Ini menggunakan sistem rata-rata bergerak ganda dengan rata-rata bergerak jangka panjang (MA1) dan rata-rata bergerak jangka pendek (MA2).

Logika Strategi

Strategi ini menggunakan dua rata-rata bergerak: MA1 (jangka panjang) dan MA2 (jangka pendek). Logika adalah bahwa jika harga menarik kembali sebentar untuk menguji dukungan tren jangka panjang, itu mungkin menyajikan peluang panjang. Secara khusus, jika harga penutupan tetap di atas dukungan jangka panjang (MA1), tren utama tetap utuh. Tetapi jika harga penutupan melanggar di bawah MA jangka pendek (MA2) namun masih bertahan di atas MA jangka panjang (MA1), itu menandakan pengaturan pullback buku teks. Seseorang dapat pergi panjang di sini dengan stop-loss dan bertujuan untuk harga bergerak kembali di atas MA jangka pendek.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Sederhana untuk menerapkan dan mudah dipahami dengan pengaturan parameter yang fleksibel
  2. Menggunakan MAs ganda untuk mengidentifikasi tren utama dan menghindari perdagangan yang bertentangan dengan tren
  3. Filter waktu yang dapat disesuaikan untuk menghindari periode abnormal
  4. Ukuran posisi yang dapat disesuaikan sesuai dengan preferensi risiko yang berbeda
  5. Mekanisme stop loss untuk membatasi risiko penurunan

Analisis Risiko

Risiko yang harus diketahui:

  1. Penarikan yang gagal jika harga terus menurun dan stop loss tercapai
  2. Pembalikan tren utama jika area pendukung utama rusak
  3. Whipsaws dan divergensi dengan aksi harga yang tidak stabil
  4. Perdagangan yang hilang dari filter waktu sub-optimal

Beberapa cara untuk mengoptimalkan dan mengurangi risiko:

  1. Mengoptimalkan parameter MA untuk meningkatkan kualitas sinyal
  2. Tingkat stop loss yang disesuaikan untuk memaksimalkan keuntungan sambil meminimalkan risiko
  3. Sesuaikan filter waktu untuk fokus pada periode perdagangan terbaik
  4. Pengujian di berbagai instrumen dan lingkungan pasar

Peluang Peningkatan

Beberapa cara untuk meningkatkan strategi:

  1. Mengoptimalkan parameter MA untuk menemukan kombinasi terbaik
  2. Uji mekanisme stop-loss yang berbeda seperti trailing atau chandelier stops
  3. Tambahkan filter tambahan seperti volume atau volatilitas
  4. Masukkan aturan ukuran posisi seperti menambahkan di salib emas dan mengurangi di salib kematian
  5. Membangun mekanisme pengambilan keuntungan otomatis
  6. Backtest untuk menganalisis metrik kunci dan menyelesaikan parameter

Kesimpulan

Singkatnya, ini adalah strategi pullback reversi rata-rata yang sederhana. Ini mengidentifikasi pengaturan pullback dengan pendekatan MA ganda dan mengelola risiko dengan berhenti adaptif. Strategi ini mudah dipahami dan diimplementasikan dengan penyesuaian fleksibel. Langkah selanjutnya adalah pengoptimalan lebih lanjut di sekitar elemen seperti parameter MA, stop-loss, filter untuk membuat strategi lebih kuat.


/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     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("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +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