5 hari Moving Average Golden Cross Momentum Strategy

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

Ringkasan

Strategi ini menggunakan persilangan MA 5 hari dan 78 hari untuk menjana isyarat mengejar momentum, bertujuan untuk menangkap pecah harga jangka pendek.

Logika Strategi

  1. Mengira purata bergerak bertingkat 3 hari, 78 hari dan 195 hari.

  2. 3 hari crossover di atas 195 hari pemicu membeli isyarat.

  3. Apabila 3 hari duduk di atas 78 hari, dan 78 hari di atas 195 hari, pertimbangkan saluran uptrend terbentuk, juga mencetuskan beli.

  4. Tetapkan garis pengambilan keuntungan dinamik 6ATR, jual apabila harga jatuh di bawah garis.

  5. Jual isyarat apabila 3 hari melintasi bawah 195 hari.

Kelebihan

  1. Pelbagai MA cross menyaring breakout palsu dengan berkesan.

  2. Mengambil keuntungan dinamik mengelakkan whipsaws.

  3. Backtest menunjukkan purata 2 jam memegang masa setiap perdagangan, sesuai dengan jangka pendek momentum perdagangan.

  4. Pengeluaran maksimum terkawal sekitar 20%.

Risiko

  1. Parameter MA tetap gagal menyesuaikan diri dengan pasaran yang berubah.

  2. Tempoh sampel 1 tahun terhad, memerlukan data yang lebih besar untuk mengesahkan strategi.

  3. Parameter mengambil keuntungan dan menghentikan kerugian perlu dioptimumkan untuk kawalan risiko.

  4. Tidak dapat menyesuaikan diri dengan jurang harga.

  5. Kos transaksi yang tinggi mungkin.

Peningkatan

  1. Uji kombinasi MA yang berbeza untuk pengoptimuman.

  2. Mengoptimumkan keuntungan mengambil dan menghentikan kerugian untuk keseimbangan risiko-mengembalikan.

  3. Tetapkan penapis masuk untuk mengurangkan kemungkinan terperangkap.

  4. Optimumkan saiz kedudukan, piramid pada kekuatan.

  5. Uji di pelbagai produk dan jangka masa yang lebih lama.

  6. Simulasi Monte Carlo untuk menilai pengeluaran maksimum.

Ringkasan

Strategi ini mengenal pasti trend menaik dengan persimpangan MA dan menetapkan peraturan berhenti keuntungan dinamik dengan hasil backtest yang baik. Tetapi tempoh sampel yang terhad, kestabilan param tetap disahkan dan gagal pada jurang. Menghendaki pengujian kembali lebih lanjut ke atas set data yang lebih besar, lebih banyak penapis untuk mengurangkan isyarat palsu, parameter berhenti keuntungan yang dioptimumkan, penilaian pada kos transaksi. Jika lulus ujian pengoptimuman dan pengesahan yang komprehensif, boleh menjadi sistem mengejar momentum jangka pendek yang mantap.


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