Strategi hentian purata bergerak

Penulis:ChaoZhang, Tarikh: 2023-09-19 21:33:48
Tag:

Ringkasan

Strategi ini menjana isyarat beli apabila garis beli EMA yang cepat melintasi garis beli SMA yang perlahan, dan menggunakan hentian trailing dinamik ATR untuk kawalan risiko.

Logika Strategi

  1. Mengira EMA pantas dan garis beli SMA perlahan, menjana isyarat beli apabila garis pantas melintasi garis perlahan dengan kekuatan beli tertentu.

  2. Mengira EMA pantas dan garis jual SMA perlahan, menjana isyarat jual apabila garis pantas melintasi di bawah garis perlahan.

  3. Menggunakan purata ATR hari N didarabkan dengan pekali sebagai hentian dinamik untuk kawalan risiko.

  4. Mulakan strategi dalam tempoh backtest untuk pembelian dan penjualan pelaksanaan.

  5. Mengoptimumkan parameter untuk setiap stok untuk mencari nilai terbaik.

Strategi ini menggabungkan kelebihan penyeberangan MA untuk isyarat dan hentian trailing ATR untuk kawalan risiko. pengoptimuman parameter disesuaikan dengan ciri-ciri setiap produk, bertujuan untuk pulangan yang lebih banyak daripada membeli dan memegang dengan perdagangan yang tepat.

Analisis Kelebihan

  1. EMA yang cepat dan crossover SMA yang perlahan mengenal pasti trend dan menghasilkan isyarat.

  2. Pengaturan berhenti ATR berdasarkan turun naik pasaran, mengawal risiko dengan berkesan.

  3. Mengoptimumkan untuk setiap saham meningkatkan keuntungan.

  4. Logik dan peraturan yang mudah, mudah dilaksanakan dan disahkan.

  5. Lengkapkan fungsi backtest untuk mengesahkan strategi.

  6. Mencari prestasi yang lebih baik daripada membeli dan memegang.

Analisis Risiko

  1. Parameter yang dioptimumkan mungkin tidak berfungsi untuk masa depan, pengoptimuman semula berkala mungkin diperlukan.

  2. EMA dan SMA bersilang boleh menghasilkan isyarat yang salah atau tertinggal.

  3. Hentikan ATR mungkin terlalu agresif, boleh melonggarkan julat stop loss.

  4. Frekuensi perdagangan yang rendah mungkin kehilangan peluang yang baik.

  5. Perlu mempertimbangkan kesan kos perdagangan.

Arahan pengoptimuman

  1. Teruskan menguji kombinasi parameter yang berbeza untuk nilai optimum.

  2. Cuba memperkenalkan penunjuk lain untuk penapisan isyarat.

  3. Mengoptimumkan tempoh ATR untuk mengimbangi kepekaan stop loss.

  4. Mengkaji kesan jarak stop loss yang santai.

  5. Pertimbangkan pembelajaran mesin untuk pengoptimuman parameter automatik.

  6. Kajian kesan peningkatan kekerapan perdagangan.

Ringkasan

Strategi hentian rata-rata bergerak ini menggabungkan kekuatan persimpangan MA untuk isyarat dan hentian ATR untuk kawalan risiko. Pengoptimuman parameter menyesuaikannya dengan ciri-ciri setiap saham. Walaupun parameter yang dioptimumkan tidak mempunyai jaminan, logik keseluruhan adalah mudah dan praktikal untuk mengatasi beli dan pegang. Penambahbaikan dan pengesahan lanjut adalah berbaloi, kerana strategi ini mempunyai nilai inspirasi yang baik.


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

//@version=2
//created by XPloRR 04-03-2018

strategy("XPloRR MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)

testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2050, "Stop Year")
testStopMonth = input(12, "Stop Month")
testStopDay = input(31, "Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

ema1Period = input(12, "Fast EMA Buy")
sma1Period = input(54, "Slow SMA Buy")
strength1 = input(52, "Minimum Buy Strength")

ema2Period = input(18, "Fast EMA Sell")
sma2Period = input(55, "Slow SMA Sell")
strength2 = input(100, "Minimum Sell Strength")

delta = input(8, "Trailing Stop (#ATR)")

testPeriod() => true

ema1val=ema(close,ema1Period)
sma1val=sma(close,sma1Period)
ema1strength=10000*(ema1val-ema1val[1])/ema1val[1]

ema2val=ema(close,ema2Period)
sma2val=sma(close,sma2Period)
ema2strength=10000*(ema2val-ema2val[1])/ema2val[1]

plot(ema1val,color=blue,linewidth=1)
plot(sma1val,color=orange,linewidth=1)
plot(ema2val,color=navy,linewidth=1)
plot(sma2val,color=red,linewidth=1)

long=crossover(ema1val,sma1val) and (ema1strength > strength1) 
short=crossunder(ema2val,sma2val) and (ema2strength < -strength2)

stopval=ema(close,6)
atr=sma((high-low),15)

inlong=0
buy=0
stop=0
if testPeriod()
    if (inlong[1])
        inlong:=inlong[1]
        buy:=close
        stop:=iff((stopval>(stop[1]+delta*atr)),stopval-delta*atr,stop[1])
    if (long) and (not inlong[1])
        strategy.entry("buy",strategy.long)
        inlong:=close
        buy:=close
        stop:=stopval-delta*atr
plot(buy,color=iff(close<inlong,red,lime),style=columns,transp=90,linewidth=1)
plot(stop,color=iff((short or (stopval<stop)) and (close<inlong),red,lime),style=columns,transp=60,linewidth=1)
if testPeriod()
    if (short or (stopval<stop)) and (inlong[1])
        strategy.close("buy")
        inlong:=0
        stop:=0
        buy:=0



Lebih lanjut