Strategi Pembalikan Tren Berdasarkan Rata-rata Bergerak

Penulis:ChaoZhang, Tanggal: 2024-02-21 17:03:31
Tag:

img

Gambaran umum

Ide utama dari strategi ini adalah untuk memperdagangkan pullback jangka pendek di sepanjang arah tren jangka panjang. Secara khusus, rata-rata bergerak sederhana 200 hari digunakan untuk menentukan arah tren jangka panjang, dan rata-rata bergerak sederhana 10 hari digunakan untuk menentukan arah tren jangka pendek. Ketika harga di atas garis 200 hari, itu adalah pasar bull. Ketika harga di bawah garis 200 hari, itu adalah pasar bear. Di pasar bull, pergi panjang ketika harga turun ke garis 10 hari. Di pasar bear, pergi pendek ketika harga naik ke garis 10 hari.

Logika Strategi

Strategi ini menggunakan rata-rata bergerak sederhana 200 hari dan rata-rata bergerak sederhana 10 hari untuk menentukan tren pasar. Ketika harga melintasi di atas garis 200 hari, itu dianggap memasuki pasar bull. Ketika harga melintasi di bawah garis 200 hari, itu dianggap memasuki pasar bear. Di pasar bull, jika harga turun ke sekitar garis 10 hari, itu berarti menghadapi koreksi jangka pendek. Pada saat ini, pergi panjang, menargetkan kelanjutan tren bullish jangka panjang. Di pasar bear, jika harga naik ke sekitar garis 10 hari, itu berarti menghadapi rebound jangka pendek. Pada saat ini, pergi pendek, menargetkan kelanjutan tren bearish jangka panjang.

Secara khusus, ketika kondisi berikut terpenuhi, pergi panjang untuk memasuki pasar: harga di atas garis 200 hari, harga di bawah garis 10 hari, dan tidak ada posisi sebelumnya. Ketika kondisi berikut terpenuhi, tutup posisi untuk keluar dari pasar: harga di atas garis 10 hari, dan ada posisi panjang sebelumnya. Untuk mencegah kerugian besar, stop loss FAILSAFE ditetapkan. Jika retracement dari titik tertinggi melebihi 10%, langsung stop loss untuk keluar.

Hal ini dapat dilihat bahwa logika perdagangan dari strategi ini terutama didasarkan pada salib emas dan salib kematian rata-rata bergerak.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah low-cost trend tracking untuk mengejar hasil yang berlebihan.

  1. Menggunakan kombinasi rata-rata bergerak jangka panjang dan jangka pendek untuk menentukan arah tren primer dan sekunder dapat secara efektif mengunci peluang tren jangka menengah dan jangka panjang dan menghindari tertipu oleh pergerakan pasar jangka pendek.

  2. Dengan masuk berdasarkan penarikan jangka pendek, biaya masuk dapat diminimalkan untuk mendapatkan potensi keuntungan yang relatif tinggi.

  3. Mekanisme stop loss FAILSAFE dapat secara efektif mengendalikan kerugian tunggal untuk melindungi dana rekening.

  4. Memungkinkan trend tracking exit dapat sepenuhnya memanfaatkan peluang tren jangka menengah dan panjang untuk over-return alfa.

  5. Mengadopsi metode perdagangan otomatis sepenuhnya menghindari dampak emosional subjektif dan membuat strategi lebih mudah diterapkan.

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. Backtest overfit risk: Kondisi pasar yang sebenarnya mungkin berbeda dari data historis, yang mengakibatkan penurunan kinerja perdagangan yang sebenarnya.

  2. Risiko pecah palsu. Probabilitas harga yang berbalik di dekat rata-rata bergerak relatif besar, yang dapat dengan mudah menyebabkan kerugian akumulasi kecil.

  3. Risiko pembalikan tren: pembalikan mendadak dalam tren jangka menengah dan panjang adalah hal yang umum, yang dapat dengan mudah menyebabkan kerugian yang relatif besar ketika memegang posisi.

Langkah-langkah penanggulangan adalah:

  1. Meningkatkan ukuran sampel dan menggunakan lebih banyak data historis untuk pengujian ketahanan untuk memastikan hasil yang dapat diandalkan.

  2. Mengoptimalkan parameter dengan menyesuaikan kombinasi parameter sistem rata-rata bergerak untuk memastikan kualitas sinyal.

  3. Memperluas garis stop loss dengan tepat untuk memungkinkan beberapa retracement harga untuk menghindari stop loss yang terlalu sensitif.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Tambahkan kondisi penyaringan seperti penyaringan volume untuk secara efektif mengurangi perdagangan yang tidak perlu yang disebabkan oleh breakout palsu.

  2. Menggabungkan indikator lain seperti KDJ dan MACD untuk membentuk sinyal kombinasi untuk meningkatkan kualitas sinyal perdagangan.

  3. Uji periode kepemilikan yang berbeda dan optimalkan strategi mengambil keuntungan dan stop loss untuk meningkatkan rasio Sharpe dll.

  4. Mengatur parameter secara dinamis berdasarkan kondisi pasar untuk membentuk mekanisme optimasi parameter adaptif untuk membuat strategi lebih kuat.

  5. Tambahkan modul perdagangan algoritmik menggunakan pembelajaran mesin dll untuk secara otomatis menghasilkan sinyal perdagangan untuk mengurangi intervensi manusia.

Ringkasan

Logika keseluruhan strategi ini jelas dan mudah diterapkan untuk pelacakan biaya rendah tren jangka menengah dan panjang untuk mencapai alfa yang stabil. Tetapi ada juga risiko terjebak di sisi yang salah dari tren yang membutuhkan optimasi lebih lanjut untuk meningkatkan ketahanan. Secara umum, strategi ini dirancang dari perspektif pelacakan tren dan layak penelitian dan aplikasi lebih lanjut. Dengan penyetelan parameter yang tepat, itu harus menghasilkan hasil perdagangan langsung yang baik.


/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
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/
// © irfanp056
// @version=5

strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=1000, // 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