5 hari Moving Average Golden Cross Momentum Strategi

Penulis:ChaoZhang, Tanggal: 2023-09-21 12:16:22
Tag:

Gambaran umum

Strategi ini menggunakan penyeberangan MA 5 hari dan 78 hari untuk menghasilkan sinyal mengejar momentum, yang bertujuan untuk menangkap terobosan harga jangka pendek.

Logika Strategi

  1. Menghitung rata-rata bergerak tertimbang 3 hari, 78 hari dan 195 hari.

  2. 3 hari crossover di atas 195 hari pemicu sinyal beli.

  3. Ketika 3 hari berada di atas 78 hari, dan 78 hari di atas 195 hari, anggap saluran uptrend terbentuk, juga memicu beli.

  4. Setel 6ATR garis mengambil keuntungan dinamis, menjual ketika harga turun di bawah garis.

  5. Jual sinyal ketika 3 hari melintasi kembali di bawah 195 hari.

Keuntungan

  1. Multiple MA cross menyaring penyebaran palsu secara efektif.

  2. Mengambil keuntungan secara dinamis menghindari whipsaws.

  3. Backtest menunjukkan rata-rata 2 jam waktu ditahan per perdagangan, sesuai dengan perdagangan momentum jangka pendek.

  4. Penarikan maksimum dikendalikan sekitar 20%.

Risiko

  1. Parameter MA tetap gagal beradaptasi dengan perubahan pasar.

  2. Periode sampel 1 tahun terbatas, membutuhkan data yang lebih besar untuk memverifikasi strategi.

  3. Parameter profit taking dan stop loss perlu dioptimalkan untuk pengendalian risiko.

  4. Gagal beradaptasi dengan perbedaan harga.

  5. Biaya transaksi yang tinggi.

Peningkatan

  1. Uji kombinasi MA yang berbeda untuk optimasi.

  2. Mengoptimalkan profit take dan stop loss untuk keseimbangan risiko-keuntungan.

  3. Atur filter masuk untuk mengurangi kemungkinan terperangkap.

  4. Optimalkan ukuran posisi, piramida pada kekuatan.

  5. Uji produk yang berbeda dan jangka waktu yang lebih lama.

  6. Simulasi Monte Carlo untuk mengevaluasi penarikan maksimum.

Ringkasan

Strategi ini mengidentifikasi uptrend dengan penyeberangan MA dan menetapkan aturan stop profit dinamis dengan hasil backtest yang baik. Namun periode sampel terbatas, stabilitas param tetap diverifikasi dan gagal pada celah. Membutuhkan backtesting lebih lanjut atas set data yang lebih besar, lebih banyak filter untuk mengurangi sinyal palsu, parameter stop profit yang dioptimalkan, evaluasi biaya transaksi. Jika lulus tes optimasi dan verifikasi yang komprehensif, dapat menjadi sistem pengejaran momentum jangka pendek yang kuat.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// © FinTasticTrading 2021/2/14
// This is a 5 day moving average crossing long strategy, used in short term momentum trading strategy.
// Momentum trading Strategy: When S&P 500 index is at up trend (or above 60 sma), buy 10+ stocks in top 20% stock RS ranking at equal weight using this MA5X_L strategy. Change stocks when any stock exited by algorithm.  
// Back test start since 2020/7/1, each long entry for condition 1 is $30000, condition 2 is $20000, with max of 2 long positions.
// Setup: 10 minutes chart
// Buy condition 1) 3 wma cross up 180 wma (5day) 2) 3wma > 60wma > 180wma UP Trend Arrangement (UTA)
// Exit condition 1) 3 wma cross under 180 wma 2) position profit > 20% and 3 wma cross under 6 ATRs line (green)
//@version=4

strategy("MA5X_L", overlay=true, pyramiding=2,default_qty_type=strategy.cash, default_qty_value=100000)
s_len = input( 3 )
m_len = input( 78 )  // 2 day moving average
l_len = input( 195)  // equal to 5 Day moving average
xl_len = input(390)  // 10 day moving average
//Draw WMAs
s_ma = wma(close,s_len)
m_ma = wma(close,m_len)
l_ma = wma(close,l_len)
xl_ma = sma(close,xl_len)
plot(s_ma, color=color.yellow, linewidth=2)
plot(m_ma, color=color.fuchsia, linewidth=2)
plot(l_ma, color=color.blue, linewidth=2)
plot(xl_ma, color = color.gray, linewidth=2)

//ATR Stop Profit , length = 40 or 1 day
Periods = input(title="ATR Period", type=input.integer, defval=40)
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=6.0)
sl=hl2-(Multiplier*atr(Periods))
sl1 = nz(sl[1], sl)
sl := s_ma[1] > sl1 ? max(sl, sl1) : sl
plot(strategy.position_size > 0 ? sl:na, title="Stop Loss", style=plot.style_linebr, linewidth=2, color=color.green)

//Backtest since
condition100 = time>=timestamp(2020, 07, 01, 00, 00) 

//Long Entry Condition 1 : s_ma Cross UP l_ma
if crossover(s_ma, l_ma) and condition100
    strategy.entry("X Up", strategy.long, qty = 30000/close, comment="X Up")

//Long Entry Condition 2 : s_ma > m_ma > l_ma
condition31 = s_ma>m_ma and m_ma>l_ma
condition32 = condition31[1]==false and condition31 == true and condition100
strategy.entry("UTA", strategy.long, qty = 20000/close, when = condition32, comment="UTA")

//Long Exit Condition 1 :  3 wma cross under 180 wma
condition50 = crossunder(s_ma, l_ma)
strategy.close_all(when = condition50, comment="X Dn")

//Long Exit Condition 2 : position profit > 20% and 3 wma cross under 6 ATRs line (green)
strategy.close_all(when = crossunder(close,sl) and strategy.openprofit>30000*0.2, comment="Stop")


Lebih banyak