Chiến lược theo xu hướng dựa trên ATR và EMA


Ngày tạo: 2024-02-23 14:34:24 sửa đổi lần cuối: 2024-02-23 14:34:24
sao chép: 0 Số nhấp chuột: 825
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng dựa trên ATR và EMA

Tổng quan

Ý tưởng cốt lõi của chiến lược này là sử dụng phạm vi biến động giá được tính toán bởi chỉ số ATR để xác định giá phá vỡ, và chỉ số EMA để xác định hướng xu hướng tổng thể, để thực hiện giao dịch theo xu hướng. Khi giá phá vỡ từ phạm vi ATR dọc theo hoặc dọc theo hướng EMA, nếu hướng phá vỡ phù hợp với hướng EMA, hãy tham gia thêm hoặc bỏ đi.

Nguyên tắc chiến lược

Đầu tiên, chiến lược này sử dụng chỉ số ATR để tính toán phạm vi biến động của giá trong một chu kỳ nhất định. Các phạm vi ATR có giới hạn trên là SMA + ATR và giới hạn dưới là SMA-ATR. Trong đó SMA đại diện cho trung bình di chuyển đơn giản của giá đóng cửa trong ngày và ATR đại diện cho trung bình real amplitude.

Khi giá phá vỡ theo chiều trên hoặc xuống từ phạm vi ATR, cơ hội giao dịch được tạo ra. Tại thời điểm này, cần phải xác định hướng, nếu phá vỡ lên thì làm nhiều hơn, nếu phá vỡ xuống thì không có gì. Để đảm bảo hướng phá vỡ phù hợp với hướng xu hướng, chiến lược sử dụng chỉ số EMA để xác định hướng xu hướng tổng thể. Chỉ khi hướng phá vỡ phù hợp với hướng EMA, bạn mới tham gia.

Cuối cùng, chiến lược sử dụng giá phá vỡ phạm vi ATR trở lại như một tín hiệu bán. Nếu giá phá vỡ phạm vi thấp, nó sẽ bị phá vỡ; Nếu giá phá vỡ phạm vi cao, nó sẽ bị phá vỡ.

Lợi thế chiến lược

  1. Sử dụng chỉ số ATR để đánh giá đột phá, có thể nắm bắt hiệu quả sự phá vỡ xu hướng giá. Phạm vi ATR được thiết lập theo tỷ lệ dao động, không gây nhiễu quá nhiều cho biến động bình thường.

  2. Thêm chỉ số EMA để đánh giá xu hướng và tránh giao dịch ngược với xu hướng có thể làm tăng đáng kể tỷ lệ lợi nhuận.

  3. Sử dụng giá trở lại phạm vi ATR như một phương pháp dừng lỗ, có thể kiểm soát tối đa rủi ro mất mát.

Rủi ro chiến lược

  1. Trong các tình huống bất ổn, phạm vi ATR có thể bị phá vỡ thường xuyên, dễ gây ra quá nhiều giao dịch không hiệu quả và mở rộng tổn thất.

  2. EMA là một chỉ số đánh giá xu hướng, có một sự chậm trễ. Vì vậy, có thể bỏ lỡ cơ hội biến đổi giá trong thời gian ngắn.

  3. Phương pháp dừng lỗ là giá bị phá vỡ, dễ bị mất mát do sự cố bất ngờ.

Hướng tối ưu hóa chiến lược

  1. Có thể xem xét kết hợp với các chỉ số khác để đánh giá xu hướng và rút lui, tránh lỗi đánh giá đơn lẻ của EMA. Ví dụ: MACD, KDJ, v.v.

  2. Có thể xem xét điều chỉnh tham số ATR theo thời gian thực theo tỷ lệ biến động của thị trường, làm cho phạm vi ATR gần gũi hơn với biến động thực tế.

  3. Có thể kết hợp với phương thức dừng di động, điều chỉnh điểm dừng trong thời gian thực, kiểm soát tối đa rủi ro lỗ đơn.

Tóm tắt

Chiến lược này có ý tưởng tổng thể rõ ràng, sử dụng chỉ số ATR để xác định giá phá vỡ và phối hợp với hướng đánh giá của EMA, có thể theo dõi xu hướng hiệu quả; phương thức dừng lỗ trực tiếp, dễ vận hành. Nhưng đồng thời có một số rủi ro, không gian tối ưu hóa lớn, cần được thử nghiệm và điều chỉnh thêm. Nói chung, chiến lược này phù hợp với các nhà giao dịch xu hướng theo đuổi tỷ lệ thắng cao.

Mã nguồn chiến lược
/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cwagoner78
//@version=4
strategy("cATRpillar", overlay=true)
//------------

//inputs
lookback = input(title="Periods", type=input.integer, defval=37)
atrMult = input(title="Range Multiplier", type=input.float, defval=.2)
takeProfit = input(title="Take Profit", type=input.float, defval=5000)
stopLoss = input(title="Stop Loss", type=input.float, defval=2500)
lots = input(title="Lots to Trade", type=input.float, defval=1)
//------------

//indicators
atr=atr(lookback)*atrMult
sma=sma(close, lookback)
ema=ema(close,lookback*2)
rangeLo=sma-atr
rangeHi=sma+atr
//------------

//draw objects
p0 =plot(close, title="Close", color=#26A69A, linewidth=0, transp=80,style=plot.style_stepline)
p1 =plot(rangeHi, title="High", color=color.fuchsia, linewidth=0, transp=80,style=plot.style_stepline)
p2 =plot(rangeLo, title="Low", color=color.lime, linewidth=0, transp=80,style=plot.style_stepline)
p3 =plot(ema, title="EMA", color=color.white, linewidth=0, transp=80, style=plot.style_stepline)
fill(p1, p0, color=color.fuchsia)
fill(p0, p2, color=color.lime)
//------------

//Trading
atrShort=open[1] > rangeHi and open < rangeLo
atrLong=open[1] < rangeLo and open > rangeHi
exitLong=open>rangeLo
exitShort=open<rangeHi

//Long
longCondition=atrLong and open>ema+atr
strategy.entry(id="cATRpillar-Buy", long=true, when=longCondition)
longCloseCondition=exitLong
strategy.exit(id="cATRpillar-Exit", qty=lots, profit=takeProfit, loss=stopLoss, when=longCloseCondition)

//Short
shortCondition=atrShort and open<ema-atr
strategy.entry(id="cATRpillar-Sell", long=false, when=shortCondition)
shortCloseCondition=exitShort
strategy.exit(id="cATRpillar-Exit",  qty=lots, profit=takeProfit, loss=stopLoss, when=shortCloseCondition)

plotshape(shortCondition,  title= "Short", location=location.belowbar, color=color.fuchsia, transp=80, style=shape.triangledown, size=size.tiny)
plotshape(longCondition,  title= "Long", location=location.abovebar, color=color.lime, transp=80, style=shape.triangleup, size=size.tiny)
//------------