Xu hướng theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-11-06 10:34:19
Tags:

img

Tổng quan

Chiến lược theo xu hướng là một chiến lược giao dịch xu hướng dựa trên sự chéo chéo của các đường trung bình động. Nó sử dụng sự chéo chéo của đường trung bình động nhân tố (EMA) và đường trung bình động Hull (HMA) để xác định hướng xu hướng và tạo ra các tín hiệu giao dịch phù hợp. Chiến lược nhằm mục đích theo xu hướng giá dài hạn hơn là dao động ngắn hạn.

Chiến lược logic

Chiến lược sử dụng hai đường trung bình động với các thông số khác nhau: EMA nhanh hơn và HMA chậm hơn.

Khi EMA nhanh hơn vượt qua trên HMA chậm hơn, nó được xem là sự khởi đầu của xu hướng tăng, và chiến lược sẽ đặt lệnh dài ở giá thị trường trên thanh mở tiếp theo.

Để tối ưu hóa thời gian nhập cảnh, chiến lược này kết hợp một tùy chọn Heikin-Ashi. Khi được bật, tín hiệu mua và bán sẽ dựa trên thanh Heikin-Ashi thay vì các cây nến thông thường. Các thanh Heikin-Ashi có thể lọc các dao động giá ngắn hạn trên các cây nến ban đầu và giảm các tín hiệu sai.

Chiến lược này cũng sử dụng thiết lập dừng lỗ. Khi lỗ vị trí đạt tỷ lệ giảm lỗ dừng trước, vị trí sẽ được đóng lại theo giá thị trường, giới hạn lỗ tối đa cho mỗi giao dịch.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Sử dụng chéo EMA và HMA để xác định xu hướng có thể tận dụng lợi thế của các đường trung bình động giai đoạn khác nhau và cải thiện độ chính xác.

  2. Giao dịch dựa trên xu hướng tránh xoay quanh các dao động nhỏ và giảm các giao dịch không cần thiết.

  3. Tùy chọn Heikin-Ashi tối ưu hóa thời gian nhập bằng cách lọc ra các tín hiệu sai.

  4. Việc dừng lỗ di chuyển có hiệu quả hạn chế lỗ tối đa cho mỗi giao dịch.

  5. Các tham số có thể tùy chỉnh cho phép tối ưu hóa cho các sản phẩm và khung thời gian khác nhau.

Phân tích rủi ro

Những rủi ro của chiến lược này bao gồm:

  1. Là một hệ thống theo xu hướng, nó hoạt động kém hơn trong các thị trường giới hạn phạm vi.

  2. Nó có thể chịu tổn thất lớn khi một xu hướng đảo ngược đến.

  3. Các thiết lập stop loss không đúng có thể gây ra các stop stop không cần thiết hoặc làm tăng lỗ.

  4. Chế độ điều chỉnh tham số không tốt có thể dẫn đến quá mức giao dịch hoặc không hành động.

  5. Thời gian EMA và HMA cần tối ưu hóa cho các sản phẩm và khung thời gian khác nhau.

  6. Heikin-Ashi không thể hoàn toàn tránh được nguy cơ đột quỵ sai.

Hướng dẫn tối ưu hóa

Chiến lược có thể được cải thiện từ các khía cạnh sau:

  1. Sử dụng nhiều chỉ số như MACD, KDJ để tăng độ chính xác xu hướng.

  2. Thêm thêm các bộ lọc như âm lượng, ATR để giảm vỡ sai.

  3. Tối ưu hóa các tham số của đường trung bình động dựa trên các sản phẩm và khung thời gian.

  4. Điều chỉnh tỉ lệ stop loss để có hành vi stop loss tốt hơn.

  5. Hãy xem xét các tính năng lấy lợi nhuận như di chuyển dừng lợi nhuận và lấy lợi nhuận một phần.

  6. Kiểm tra các cách khác để tính toán cơ sở chi phí vị trí để tối ưu hóa.

Tóm lại

Chiến lược theo xu hướng xác định xu hướng bằng cách sử dụng đường chéo trung bình động, và tối ưu hóa hiệu suất thông qua Heikin-Ashi và dừng lỗ di chuyển. Nó phù hợp với giao dịch xu hướng trung và dài hạn, và có thể được tăng cường hơn nữa thông qua điều chỉnh tham số và mở rộng tính năng. Nhưng người dùng nên nhận thức được những rủi ro của sự đảo ngược và dừng lỗ không phù hợp. Nhìn chung nó cung cấp một khuôn khổ phổ quát và tùy chỉnh cho giao dịch xu hướng hoạt động trên các sản phẩm và khung thời gian khác nhau. Kiểm tra tham số thích hợp là cần thiết khi áp dụng nó.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("𝐉𝐔𝐈𝐂𝐘 𝐓𝐑𝐄𝐍𝐃", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

//Heikin Ashi Option
ha = input(true, title = "Heikin Ashi Source")
src = ha ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, barmerge.gaps_off, barmerge.lookahead_off) : close
usestoploss = input(true, title="Stop Loss")

//EMA
len1 = input.int(9, minval=1, title="EMA Length")
ema = ta.ema(src, len1)
emaline = plot(ema, title="EMA", color=color.blue, linewidth=2)

//HMA
len2 = input.int(69, minval=1, title="HMA Length")
hma = ta.wma(2*ta.wma(src, len2/2)-ta.wma(src, len2), math.floor(math.sqrt(len2)))
hmaline = plot(hma, title="HMA", color=color.purple, linewidth=2)
fillcolor = hma < ema ? color.blue : color.purple
fill(emaline, hmaline, title="EMA Fill", color=color.new(fillcolor, 80), editable=true)

//Stop Loss Conditions
stoplosspercent = input.float(title="Stop Loss (%)", defval=-6.5, minval=-50, maxval=0, step=.1) / 100
stoploss = strategy.position_avg_price * (1 + stoplosspercent)
stop = stoploss > close and stoploss[1] < close[1] and strategy.position_size > 0 and usestoploss

//Buy Sell Conditions
buy = hma < ema
sell = hma > ema

//Trades and Alerts
if buy
	strategy.entry("Long Position", strategy.long, comment="BUY")
//	alert("{\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if sell and strategy.openprofit > 0
	strategy.close("Long Position", comment="SELL")
//	alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if stop
    strategy.close("Long Position", comment="STOP")
//    alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)

//Alternate Labels
var pos = 0
if buy and pos <= 0
    pos := 1
if sell and pos >= 0
    pos := -1
buylabel  = pos ==  1 and (pos !=  1)[1]
selllabel = pos == -1 and (pos != -1)[1]

//Plot Labels
plotshape(buylabel,  style=shape.labelup,   location=location.belowbar, color=color.blue,   text="BUY",  textcolor=color.white, size=size.tiny)
plotshape(selllabel, style=shape.labeldown, location=location.abovebar, color=color.purple, text="SELL", textcolor=color.white, size=size.tiny)
plotshape(stop,      style=shape.labeldown, location=location.abovebar, color=color.yellow, text="STOP", textcolor=color.white, size=size.tiny)


Thêm nữa