
Strategi ini adalah berdasarkan purata bergerak, dalam proses ke arah trend, membuka lebih banyak kedudukan selepas penyesuaian jangka pendek, dan merupakan strategi jenis trend-following.
Strategi ini menggunakan 3 garis EMA dengan kitaran yang berbeza, EMA1 digunakan untuk menentukan trend jangka pendek, yang lebih pendek daripada dua garis EMA yang lain; EMA2 dan EMA3 digunakan untuk menentukan trend jangka panjang, di mana EMA3 adalah yang paling lama. Apabila garis EMA1 yang pendek berada di atas garis EMA2 menunjukkan bahawa jangka panjang juga berada di atas trend, jadi ini adalah tempat yang lebih baik untuk dilakukan. Secara khusus, logik penjanaan isyarat perdagangan strategi ini adalah: apabila harga berada di atas garis EMA1 menghasilkan banyak isyarat.
Tetapkan garis stop loss dan garis stop loss untuk mengunci keuntungan. Secara khusus, garis stop loss bergerak mengikut nilai ATR, dan garis stop loss juga ditetapkan mengikut nilai ATR.
Kelebihan utama strategi ini adalah keupayaan untuk menangkap trend kenaikan dalam jangka masa panjang dengan berkesan, dan juga mempertimbangkan penyesuaian jangka pendek, yang menjadikan masa pegangan dan ruang keuntungan yang cukup besar.
Selain itu, ia juga dilengkapi dengan mekanisme penghentian dan penangguhan yang membolehkan ia dapat mengawal risiko.
Risiko terbesar strategi ini adalah ketidakupayaan untuk menentukan titik perubahan trend, jika trend garis tengah berbalik dan dalam jangka pendek masih meningkat, maka ia akan menghasilkan salah melakukan banyak isyarat dan masuk ke dalam, yang boleh menyebabkan kerugian yang lebih besar.
Selain itu, kerugian perdagangan yang tidak perlu mungkin berlaku dalam penyusunan semula.
Anda boleh mempertimbangkan untuk menyesuaikan parameter kitaran EMA mengikut ciri-ciri varieti yang diperdagangkan, agar lebih sesuai dengan kitaran garis tengah yang lebih panjang untuk varieti tersebut.
Ia boleh dikombinasikan dengan petunjuk lain untuk menentukan akhir penyesuaian jangka pendek, mengelakkan salah masuk.
Anda boleh mempertimbangkan untuk menyesuaikan pemfaktor hentian mengikut saiz nilai ATR, dengan jarak hentian yang lebih longgar jika ATR lebih besar.
Strategi ini secara keseluruhan merupakan strategi pengesanan trend garis tengah yang berprestasi baik. Dengan moving averages untuk menentukan arah trend, isyarat pengembalian untuk menentukan masa masuk, dan seting stop loss untuk mengunci keuntungan. Tetapi ada risiko untuk mengikuti secara buta, perlu menggabungkan penilaian pedagang sendiri mengenai pergerakan untuk menentukan sama ada masuk atau tidak.
/*backtest
start: 2024-01-21 00:00:00
end: 2024-01-28 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Trend Continuation', shorttitle='Trend_Continuation', overlay=true)
// Input
price = input(close)
MA1_Length = input.int(50, step=1, title='EMA 1 Length')
MA2_Length = input.int(80, step=1, title='EMA 2 Length')
MA3_Length = input.int(200, step=1, title='EMA 3 Length')
numberOfCandles = input(1)
slATRFactor = input(3.5)
tpATRFactor = input(3.5)
ATRLength = input(14)
// switch1=input(true, title="Show Bar Color?")
// switch2=input(true, title="Show Moving Averages?")
// Calculation
MA1 = ta.ema(price, MA1_Length)
MA2 = ta.ema(price, MA2_Length)
MA3 = ta.ema(price, MA3_Length)
prev_price = close[numberOfCandles]
// Strategy
allPositive = true
for i = 0 to numberOfCandles - 1 by 1
if close[i] < close[i + 1] or close[i] < MA1
allPositive := false
break
long = MA2 > MA3 and price > MA1 and ta.crossunder(prev_price, MA1) and allPositive
// short = crossover(price, MA3) or ( change(price)>0 and change(MA1)>0 and crossover(price,MA1) and change(MA2)<0 )
if long
strategy.entry('Long', strategy.long, comment='Long')
bought = strategy.position_size[0] > strategy.position_size[1]
atrAtLong = ta.valuewhen(bought, ta.atr(ATRLength), 0)
// Stop loss and take profit
slPrice = strategy.position_avg_price - slATRFactor * atrAtLong
tpPrice = strategy.position_avg_price + tpATRFactor * atrAtLong
SL = plot(slPrice, title='SL', style=plot.style_linebr, linewidth=1, color=color.new(color.red, 0))
if price >= tpPrice and price < MA1
strategy.close('Long')
if price < strategy.position_avg_price
strategy.exit('Stop Loss', 'Long', stop=slPrice)
// Strategy Alert
alertcondition(long, title='Long Alert', message='Go Long!')
// alertcondition(short, title='EMA Slope + EMA Cross Strategy, Short Alert', message='Go Short!')
// MA trend bar color
// up = change(MA2)>0 and change(MA3)>0
// dn = change(MA2)<0 and change(MA3)<0
// bar_color = up?green:dn?red:blue
// barcolor(switch1?bar_color:na)
// MA trend output color
change_1 = ta.change(MA2)
MA2_color = ta.change(MA2) > 0 ? color.lime : change_1 < 0 ? color.red : color.blue
change_2 = ta.change(MA3)
MA3_color = ta.change(MA3) > 0 ? color.lime : change_2 < 0 ? color.red : color.blue
// MA output
// EMA2 = plot(switch2?MA2:na, title="EMA 2", style=linebr, linewidth=2, color=MA2_color)
// EMA3 = plot(switch2?MA3:na, title="EMA 3", style=linebr, linewidth=4, color=MA3_color)
// fill(EMA2, EMA3, color=silver, transp=50)
color_1 = MA2 > MA3 ? color.green : color.red
EMA1 = plot(MA1, title='EMA 1', style=plot.style_linebr, linewidth=1, color=color_1)
// EMA2 = plot(MA2, title="EMA 2", style=linebr, linewidth=2, color=blue)
// EMA3 = plot(MA3, title="EMA 3", style=linebr, linewidth=3, color=red)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)