
Strategi ini menghasilkan isyarat beli dengan mengira purata bergerak dua parameter yang berbeza apabila garis cepat melintasi garis lambat. Ia juga menggunakan jangkauan pergerakan sebenar purata untuk mengesan harga berhenti dan menghasilkan isyarat jual apabila harga jatuh di bawah harga berhenti. Strategi ini dapat mengesan trend pasaran dengan berkesan dan berhenti tepat pada masanya setelah keuntungan.
Strategi ini menggabungkan trend tracking dan pengurusan hentian kerugian, yang boleh mengesan arah garis tengah dan boleh mengawal kerugian tunggal melalui hentian.
Parameter purata bergerak boleh dioptimumkan dengan sewajarnya, atau menyesuaikan ATR untuk mengimbangi stop loss. Ia juga boleh digabungkan dengan indikator lain sebagai syarat penapisan untuk meningkatkan masa masuk.
Strategi ini berjaya mengintegrasikan trend tracking moving average dan ATR stop loss, dengan parameter pengoptimuman boleh menyesuaikan diri dengan ciri-ciri saham yang berbeza. Strategi ini membentuk batas pembelian yang jelas dan batas stop loss, menjadikan logik perdagangan mudah dan jelas. Secara keseluruhannya, strategi stop loss yang dijejaki oleh dua rata-rata bergerak ini stabil, mudah, mudah dioptimumkan, sesuai sebagai strategi asas untuk perdagangan saham.
/*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)