Strategi Stop Loss Pengesanan Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2024-02-05 13:45:51
Tag:

img

Ringkasan

Strategi ini menghasilkan isyarat beli apabila purata bergerak pantas melintasi purata bergerak perlahan. Pada masa yang sama, ia mengira harga stop loss yang mengikuti berdasarkan Julat Benar Purata untuk menetapkan isyarat jual. Strategi ini dapat dengan berkesan mengesan trend pasaran dan memotong kerugian dengan tepat pada masanya semasa mengambil keuntungan.

Prinsip-prinsip

  1. Purata Bergerak Cepat (EMA): Purata Bergerak Eksponensial 12 hari yang bertindak balas dengan cepat terhadap perubahan harga.
  2. Purata Bergerak Perlahan (SMA): Purata Bergerak Sederhana 45 hari yang menggambarkan trend jangka menengah hingga panjang.
  3. Isyarat beli dihasilkan apabila MA pantas melintasi MA perlahan.
  4. Jangkaan sebenar purata 15 hari (ATR) dikira sebagai penanda aras untuk stop loss.
  5. Tetapkan amplitudo kehilangan berhenti yang beransur-ansur berdasarkan ATR (contohnya 6 x ATR) dan mengemas kini harga berhenti dalam masa nyata.
  6. Isyarat jual dihasilkan apabila harga jatuh di bawah harga stop loss.

Strategi ini menggabungkan kelebihan trend berikut dan pengurusan stop loss. Ia boleh mengesan trend jangka sederhana hingga panjang dan mengawal kerugian perdagangan tunggal melalui stop loss.

Analisis Kelebihan

  1. Kombo MA secara berkesan mengenal pasti trend dan meningkatkan kebolehpercayaan isyarat.
  2. Pencegahan kerugian yang dinamik untuk mengelakkan kerosakan dana.
  3. Stop loss berasaskan ATR menjadikan harga berhenti munasabah dan menghalang sensitiviti berlebihan.
  4. Logik strategi adalah mudah dan parameter adalah fleksibel.

Analisis Risiko

  1. MA mempunyai kelewatan yang mungkin terlepas peluang jangka pendek.
  2. Stop loss yang terlalu longgar menjejaskan keuntungan.
  3. Stop loss ketat yang berlebihan meningkatkan kekerapan perdagangan dan bayaran komisen.
  4. Perubahan turun naik boleh mempengaruhi kestabilan parameter ATR.

Parameter boleh dioptimumkan untuk mengimbangi amplitudo kehilangan berhenti. Penunjuk lain juga boleh digabungkan untuk meningkatkan masa kemasukan.

Arahan pengoptimuman

  1. Uji lebih banyak kombinasi parameter untuk mencari MA optimum.
  2. Sesuaikan pengganda ATR mengikut ciri stok tertentu.
  3. Tambah syarat penapisan seperti penunjuk jumlah untuk mengelakkan perdagangan yang tidak perlu.

Kesimpulan

Strategi ini berjaya menggabungkan keupayaan mengikuti trend MA dan kemampuan menghentikan kerugian ATR yang dinamik. Parameter boleh dioptimumkan untuk menyesuaikan diri dengan saham yang berbeza. Ia membentuk sempadan beli dan jual yang jelas, menjadikan logika mudah dan jelas.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//created by XPloRR 24-02-2018

strategy("XPloRR MA-Buy ATR-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)

emaPeriod = input(12, "Exponential MA")
smaPeriod = input(45, "Simple MA")
stopPeriod = input(12, "Stop EMA")
delta = input(6, "Trailing Stop #ATR")

testPeriod() => true

emaval=ema(close,emaPeriod)
smaval=sma(close,smaPeriod)
stopval=ema(close,stopPeriod)
atr=sma((high-low),15)

plot(emaval, color=blue,linewidth=1)
plot(smaval, color=orange,linewidth=1)
plot(stopval, color=lime,linewidth=1)

long=crossover(emaval,smaval) 
short=crossunder(emaval,smaval)

//buy-sell signal
stop=0
inlong=0
if testPeriod()
    if (long and (not inlong[1]))
        strategy.entry("buy",strategy.long)
        inlong:=1
        stop:=emaval-delta*atr
    else
        stop:=iff((nz(emaval)>(nz(stop[1])+delta*atr))and(inlong[1]),emaval-delta*atr,nz(stop[1]))
        inlong:=nz(inlong[1])
        if ((stopval<stop) and (inlong[1]))
            strategy.close("buy")
            inlong:=0
            stop:=0
else
    inlong:=0
    stop:=0
plot(stop,color=green,linewidth=1)


Lebih lanjut