
Chiến lược theo dõi xu hướng EMA ba lần là một chiến lược rất phù hợp để theo dõi xu hướng thị trường. Nó sử dụng ba chu kỳ EMA khác nhau làm tín hiệu đặt vị trí, thiết lập vị trí trên đầu hoặc trống khi có sự xác nhận xu hướng đầy đủ.
Ưu điểm của chiến lược này là nó có thể làm giảm tín hiệu sai và đảm bảo rằng xu hướng sẽ được đưa vào khi nó đủ mạnh. Đồng thời, nó có hệ thống dừng lỗ thích ứng, có thể theo dõi dừng lỗ theo biến động của thị trường, để đạt được hiệu quả quản lý rủi ro tốt hơn.
Chiến lược này sử dụng ba EMA của chu kỳ 7, 14 và 21 như một chỉ số tín hiệu đặt hàng. Logic cụ thể là, khi giá đồng thời vượt qua ba EMA, hãy làm nhiều hơn; khi giá đồng thời vượt qua ba EMA, hãy làm trống.
Thiết kế như vậy có thể làm giảm tín hiệu giả, đảm bảo xu hướng đủ rõ ràng và sau đó tham gia. Trong khi đó, ba chu kỳ EMA được thiết lập đúng cách, có thể bắt kịp sự xuất hiện của xu hướng thị trường.
Chiến lược này sử dụng một hệ thống dừng lỗ thích ứng dựa trên ATR và rút lui tối đa. Nó sẽ tính toán tỷ lệ biến động giá trong thời gian thực và thiết lập đường dừng lỗ theo đó.
Trong quá trình tăng giá, đường dừng sẽ di chuyển lên với mức cao mới, có hiệu quả theo dõi tốt hơn. Khi giá quay trở lại mức thấp của vùng đệm, đường dừng sẽ được kích hoạt, dừng thanh toán. Điều này có thể kiểm soát rủi ro dừng tùy thuộc vào tình hình thị trường cụ thể.
Chiến lược này sử dụng một phương thức dừng tỷ lệ cố định. Sau khi mở vị trí, sẽ thiết lập một đường dừng tỷ lệ phần trăm cao hơn giá vào. Khi giá chạm đến đường dừng, sẽ chủ động thanh toán vị trí.
Lợi ích của stop-loss tỷ lệ cố định này là bạn có thể đặt mục tiêu lợi nhuận, sau khi đạt được, bạn có thể thoát ra. Đồng thời, bạn cũng tránh được rủi ro của giá sẽ giảm trở lại.
Có thể kết hợp các chỉ số đánh giá xu hướng để tránh đặt cược mù quáng trong tình huống chấn động; hoặc có thể sử dụng các phương pháp như dừng di động hoặc tỷ lệ lỗ hổng để làm cho phương pháp dừng lại linh hoạt hơn. Nói chung, vẫn cần phán đoán nhân tạo để hỗ trợ sử dụng chiến lược.
Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:
Sử dụng nhiều chỉ số hơn để đánh giá thời gian nhập cảnh, như MACD, KD, v.v., để tránh bị mắc kẹt trong tình huống chấn động.
Cố gắng di chuyển các nút dừng, hoặc sử dụng các nút dừng khác để làm cho các nút dừng linh hoạt hơn.
Thêm theo dõi xuống trong phương thức dừng lỗ, có thể theo dõi lại điểm thấp hơn khi giá giảm một lần nữa, do đó kiểm soát rủi ro.
Điều chỉnh các tham số chu kỳ EMA theo đặc điểm của các giống khác nhau, tối ưu hóa phán đoán về xu hướng.
Thêm mô-đun quản lý vị trí, có thể điều chỉnh vị trí đơn theo tỷ lệ sử dụng tiền.
Chiến lược theo dõi xu hướng EMA ba là một chiến lược theo dõi xu hướng rất thực tế. Nó có khả năng phán đoán xu hướng mạnh mẽ, đồng thời có cơ chế dừng và mất mát tự động, có thể tự động quản lý đơn đặt hàng. Từ góc độ tối ưu hóa, hệ thống dừng và mất mát có thể được cải tiến hơn nữa, cho phép nó được điều chỉnh theo tình hình thị trường thời gian thực.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
ema_1 = ema(close, input(7))
ema_2 = ema(close, input(12))
ema_3 = ema(close, input(21))
Take_profit= ((input (4))/100)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)
length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
var max = src
var min = src
var uptrend = true
var stop = 0.0
atrM = nz(atr(atrlen) * atrfactor, tr)
max := max(max, src)
min := min(min, src)
stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
uptrend := src - stop >= 0.0
if uptrend != nz(uptrend[1], true)
max := src
min := src
stop := uptrend ? max - atrM : min + atrM
[stop, uptrend]
[vStop, uptrend] = volStop(src, length, factor)
go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3)
closeLong = close > longTakeProfit or crossunder(close, vStop)
//Entry
strategy.entry(id="long", long = true, when = go_long and window())
//Exit
strategy.close("long", when = closeLong and window())
plot(vStop,"Vstop", color.black, linewidth=2)
plot(ema_1,"EMA Short", color.green, linewidth=1)
plot(ema_2,"EMA Mid", color.purple, linewidth=1)
plot(ema_3,"EMA Long", color.red, linewidth=1)