Penembusan akhir bulan pada 200 Hari Moving Average Strategi

Penulis:ChaoZhang, Tarikh: 2023-12-08 16:02:08
Tag:

img

Ringkasan

Strategi ini adalah berdasarkan penembusan harga purata bergerak 200 hari pada akhir bulan untuk menangkap arah trend harga saham. kedudukan panjang akan ditubuhkan apabila harga memecahkan MA 200 hari, jika tidak kedudukan akan dihapuskan.

Prinsip Strategi

  1. Menggunakan purata bergerak mudah 200 hari dma200 sebagai penunjuk untuk menilai trend harga
  2. Pada hari dagangan terakhir setiap bulan, menilai sama ada harga penutupan lebih tinggi daripada dma200
  3. Jika harga penutupan menembusi MA 200 hari, mewujudkan kedudukan panjang penuh pada pembukaan hari dagangan seterusnya
  4. Jika harga penutupan pecah di bawah MA 200 hari, hapuskan semua kedudukan pada pembukaan hari dagangan seterusnya
  5. Ini boleh mencapai kesan trend berikut, menubuhkan kedudukan apabila harga saham memasuki trend menaik dan mengelakkan trend menurun

Analisis Kelebihan

  1. Kelebihan strategi ini ialah ia mudah dan berkesan, mudah difahami dan dilaksanakan
  2. Mengambil kedudukan pada akhir bulan boleh mengurangkan kekerapan dagangan dan meminimumkan kos dagangan dan kesan slippage
  3. MA 200 hari adalah penunjuk penilaian trend jangka menengah dan panjang yang sangat biasa digunakan, berkesan untuk kebanyakan stok
  4. Strategi ini mempunyai pengambilan yang agak kecil dan penurunan maksimum, dengan risiko yang boleh dikawal

Analisis Risiko

  1. MA 200 hari mungkin tidak cukup sensitif untuk beberapa stok untuk menangkap pembalikan harga pada masa
  2. Terdapat hanya 1 titik dagangan sebulan untuk mengambil kedudukan, yang mungkin terlepas peluang naik/turun
  3. Strategi mungkin gagal menilai dengan betul apabila trend pasaran keseluruhan tidak pasti
  4. Penunjuk lain harus digabungkan untuk mengurangkan risiko ini

Arahan pengoptimuman

  1. Pertimbangkan untuk meningkatkan titik dagangan pada awal atau pertengahan bulan untuk meningkatkan kekerapan strategi
  2. Tambah penunjuk seperti Bollinger Bands untuk menilai turun naik harga dan mengelakkan perdagangan yang salah
  3. Menilai kesan yang sesuai dari parameter MA yang berbeza pada stok yang berbeza untuk mencari kombinasi parameter yang optimum
  4. Menubuhkan mekanisme saiz kedudukan dinamik untuk menghentikan kerugian secara aktif apabila pengeluaran menjadi terlalu tinggi

Ringkasan

Strategi ini agak mudah dan praktikal secara keseluruhan, dengan berkesan menangkap trend harga saham jangka menengah dan panjang melalui penembusan akhir bulan dari MA 200 hari, dengan pengeluaran dan risiko yang agak kecil. Dengan menggabungkan lebih banyak penunjuk dan pengoptimuman dinamik, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 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/
// © muscleriot
//200 dma
//2000-2016 backtested 
//1 signal per month only at end of month
//If > 200DMA enter long
//If < 200DMA goto cash
//results: 318% drawdown 17% vs 125% with 55% drawdown for buy and hold
//@version=5
strategy("200DMA last DOM - ajh", overlay =true,default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Use 100% of  equity always

dma200 = ta.sma(close, 200)
plot(dma200, color=color.red, linewidth = 2)
//e =dayofmonth(time)
// backtesting date range
from_day = input.int(defval=1, title="From Day", minval=1, maxval=31)
from_month = input.int(defval=1, title="From Month", minval=1, maxval=12)
from_year = input.int(defval=2018, title="From Year", minval=1900)

to_day = input.int(defval=1, title="To Day", minval=1, maxval=31)
to_month = input.int(defval=1, title="To Month", minval=1, maxval=12)
to_year = input.int(defval=9999, title="To Year", minval=1900)

time_cond = time > timestamp(from_year, from_month, from_day, 00, 00) and 
   time < timestamp(to_year, to_month, to_day, 23, 59)



xLong = dayofmonth(time) == 30 and (close > dma200) ? true : na
xSell = dayofmonth(time) == 30 and (close < dma200) ? true : na
plotchar(xLong, "long","L", color=color.green)    
plotchar(xSell, "Sell","S", color=color.red)    
if (xLong == true) and time_cond
    strategy.entry("long", strategy.long)
if (xSell == true) and time_cond
    strategy.close("long")

Lebih lanjut