
Chiến lược này dựa trên đường trung bình di chuyển, trong quá trình đi theo xu hướng, mở nhiều vị trí sau khi điều chỉnh ngắn hạn, thuộc loại chiến lược theo dõi xu hướng.
Chiến lược này sử dụng 3 đường EMA có chu kỳ khác nhau, đường EMA1 được sử dụng để xác định xu hướng ngắn hạn, nó ngắn hơn hai đường EMA khác; đường EMA2 và đường EMA3 được sử dụng để xác định xu hướng trung hạn dài hạn, trong đó đường EMA3 có chu kỳ dài nhất. Khi đường EMA1 ngắn hạn dừng lại, chỉ báo ở trong xu hướng tăng ngắn hạn, đường EMA2 trên đường EMA3 cho thấy đường dài hạn cũng đang trong xu hướng tăng, vì vậy đây là một thời điểm tốt hơn để làm.
Thiết lập đường dừng lỗ và đường dừng lỗ để khóa lỗ. Cụ thể, đường dừng lỗ di chuyển theo giá trị của ATR, đường dừng cũng được thiết lập theo giá trị của ATR.
Ưu điểm lớn nhất của chiến lược này là có thể nắm bắt hiệu quả xu hướng tăng trung bình và dài hạn, đồng thời xem xét các điều chỉnh ngắn hạn, điều này làm cho thời gian nắm giữ và lợi nhuận của nó rất đáng kể.
Ngoài ra, các hệ thống ngăn chặn và ngăn chặn cũng giúp kiểm soát rủi ro của nó.
Rủi ro lớn nhất của chiến lược này là không thể xác định được điểm đảo ngược xu hướng, nếu xu hướng đường dài trung tâm đảo ngược và trong thời gian ngắn vẫn tăng, điều này sẽ tạo ra tín hiệu nhầm lẫn và nhập vào, do đó có thể gây thiệt hại lớn.
Ngoài ra, có thể có tổn thất thương mại không cần thiết trong quá trình thanh toán.
Có thể xem xét điều chỉnh các tham số chu kỳ của EMA theo đặc điểm của các giống giao dịch cụ thể để phù hợp hơn với chu kỳ đường dài trung bình của giống đó.
Kết thúc điều chỉnh ngắn hạn có thể được kết hợp với các chỉ số khác để tránh sai lệch nhập cảnh.
Bạn có thể cân nhắc điều chỉnh hệ số dừng tùy thuộc vào kích thước của giá trị ATR, giảm khoảng cách dừng thích hợp khi ATR lớn hơn.
Chiến lược này nói chung là một chiến lược theo dõi xu hướng đường dài trung bình hoạt động tốt. Bằng phương tiện di chuyển để xác định hướng xu hướng, tín hiệu quay trở lại để xác định thời gian nhập cảnh, thiết lập dừng lỗ để khóa lỗ. Nhưng cũng có một số rủi ro theo dõi mù quáng, cần kết hợp với phán đoán của nhà giao dịch về hành động để quyết định có nên tham gia hay không.
/*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)