Chiến lược đột phá ngang ATR xu hướng


Ngày tạo: 2023-12-06 18:03:38 sửa đổi lần cuối: 2023-12-06 18:03:38
sao chép: 0 Số nhấp chuột: 652
1
tập trung vào
1619
Người theo dõi

Chiến lược đột phá ngang ATR xu hướng

Tổng quan

Chiến lược phá vỡ ngang của xu hướng ATR của ong là một chiến lược phá vỡ đường ngắn trung bình dựa trên chỉ số ATR với các tín hiệu giao dịch được tạo ra bởi băng tần Brin. Nó chủ yếu theo dõi sự thay đổi xu hướng của giá cổ phiếu trong kênh ATR lên xuống ở một chiều rộng nhất định, đưa ra quyết định giao dịch khi đi xuống hoặc lên đường.

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

Chiến lược này bao gồm ba phần chính:

  1. Kênh ATR: tính toán phạm vi biến động của giá cổ phiếu thông qua chỉ số ATR và tạo ra một kênh trên và dưới phạm vi đó. Độ rộng của kênh được kiểm soát thông qua chu kỳ lookback ATR và ATRdivisor.

  2. Đường ong: sử dụng đường trung tâm của giá cổ phiếu làm đường chuẩn. Phương pháp tính toán đường trung tâm là: trung bình của thu nhập cao và thấp ngày hôm qua.

  3. Trình lọc xu hướng: tính toán xu hướng giá thông qua các chỉ số chuyển động sai lệch và thiết lập chu kỳ tín hiệu, khi pricesig ‘>’: pricesig[3] khi xu hướng lên, khi pricesig ‘<’ pricesig[3] khi xu hướng xuống.

Các tín hiệu giao dịch cụ thể được tạo theo logic sau:

Tín hiệu đa đầu: pricesig > pricesig[3] và làm nhiều hơn khi giá giảm xuống đường;

Tín hiệu đầu trống: pricesig < pricesig[3] và trống khi giá lên đường;

Các trường hợp khác không có giao dịch.

Chiến lược này đồng thời đặt các điều kiện dừng lỗ để kiểm soát rủi ro giao dịch.

Phân tích lợi thế

Chiến lược phá vỡ xu hướng ATR của ong có những lợi thế sau:

  1. Sử dụng chỉ số ATR để tính toán phạm vi biến động của giá cổ phiếu, có thể nắm bắt được sự thay đổi của thị trường;

  2. Kết hợp với đường trung tâm để đánh giá giá cả cổ phiếu và thiết lập các điểm giao dịch phá vỡ kênh để tránh theo đuổi giá cao và giá thấp;

  3. Để đánh giá xu hướng, tránh giao dịch ngược và tăng tỷ lệ thắng;

  4. Thiết lập điều kiện dừng lỗ để kiểm soát rủi ro đơn lẻ;

  5. Các tham số chính sách thiết lập các chính sách tối ưu hóa các yếu tố như chiều rộng kênh, chu kỳ ATR.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro:

  1. Giao dịch đường ngắn Trung Quốc có sự biến động lớn, rủi ro tương đối cao và cần quản lý tài chính thận trọng;

  2. Trong trường hợp giá cổ phiếu biến động mạnh, việc tính toán phạm vi ATR có thể không chính xác, dễ gây ra sai sót giao dịch;

  3. Chỉ số chuyển động sai lệch cũng có thể bị lỗi trong việc đánh giá xu hướng, do đó ảnh hưởng đến độ chính xác của tín hiệu giao dịch.

Đối với các rủi ro trên, có thể được tối ưu hóa và cải thiện bằng cách điều chỉnh thông số kênh ATR thích hợp, tăng chu kỳ tín hiệu lọc xu hướng.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Điều chỉnh chiều rộng kênh ATR, giảm hoặc tăng tham sốatrDivisor, nén hoặc mở rộng phạm vi kênh.

  2. Điều chỉnh tham số chu kỳ lookback ATR để thay đổi độ nhạy của kênh đối với biến động gần đây.

  3. Điều chỉnh tham số chu kỳ tín hiệu xu hướng để cải thiện độ chính xác của phán đoán xu hướng đa không gian.

  4. Tham gia các chỉ số khác để xác thực đa yếu tố, nâng cao chất lượng tín hiệu giao dịch.

  5. Tối ưu hóa thuật toán dừng lỗ và cải thiện kiểm soát rủi ro.

Tóm tắt

Chiến lược đột phá ATR xu hướng ong đậu kết hợp việc sử dụng phân tích phạm vi biến động giá cổ phiếu và các chỉ số đánh giá xu hướng để kiểm soát rủi ro giao dịch trong khi nắm bắt các điểm nóng của thị trường, là một chiến lược định lượng linh hoạt, thích ứng mạnh mẽ. Chiến lược này có thể được cải thiện liên tục thông qua điều chỉnh tham số và tối ưu hóa tín hiệu, có triển vọng sử dụng rộng rãi.

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

//@version=2
strategy(title="Strategy - Bobo PATR Swing", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000)

// === STRATEGY RELATED INPUTS AND LOGIC ===
PivottimeFrame = input(title="Pivot Timeframe",  defval="D")
ATRSDtimeFrame = input(title="ATR Band Timeframe (Lower timeframe = wider bands)",  defval="D")
len = input(title="ATR lookback (Lower = bands more responsive to recent price action)",  defval=13)
myatr = atr(len)
dailyatr = request.security(syminfo.tickerid, ATRSDtimeFrame, myatr[1])
atrdiv = input(title="ATR divisor (Lower = wider bands)", type=float, defval=2)
pivot0 = (high[1] + low[1]  + close[1]) / 3
pivot = request.security(syminfo.tickerid, PivottimeFrame, pivot0)
upperband1 = (dailyatr / atrdiv) + pivot
lowerband1 = pivot - (dailyatr / atrdiv)
middleband = pivot

// == TREND CALC ===
i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually
i2=input(20, "Slow Period", minval=1)
i3=input(5, "Fast Period", minval=1)
i4=input(3, "Smoothing Period", minval=1)
i5=input(4, "Signal Period", minval=1)
i6=input(50, "Extreme Value", minval=1)
hiDif = high - high[1]
loDif = low[1] - low
uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0
dDM =  loDif > hiDif and loDif > 0 ? loDif : 0
ATR = rma(tr(true), i1)
DIu = 100 * rma(uDM, i1) / ATR
DId = 100 * rma(dDM, i1) / ATR
HLM2 =  DIu - DId
DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) /  ema(ema(ema(abs(HLM2), i2), i3), i4)
signal = ema(DTI, i5)


// === RISK MANAGEMENT INPUTS ===
inpTakeProfit   = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0)
inpStopLoss     = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3])
exitLong = (high > middleband)
strategy.entry(id = "Long", long = true, when = enterLong) 
strategy.close(id = "Long", when = exitLong)

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3])
exitShort = (low < middleband)
strategy.entry(id = "Short", long = false, when = enterShort)
strategy.close(id = "Short", when = exitShort)

// === STRATEGY RISK MANAGEMENT EXECUTION ===
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss)

// === CHART OVERLAY ===
plot(upperband1, color=#C10C00, linewidth=3)
plot(lowerband1, color=#23E019, linewidth=3)
plot(middleband, color=#00E2E2, linewidth=3)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)