Chiến lược theo dõi kép AlphaTrend

Tác giả:ChaoZhang, Ngày: 2024-02-02 15:17:01
Tags:

img

Tổng quan

Chiến lược theo dõi kép AlphaTrend giao dịch dựa trên các tín hiệu mua và bán được tạo ra bởi chỉ số AlphaTrend. Nó mở các vị trí dài và ngắn trong các khu vực mà AlphaTrend sản xuất tín hiệu mua và bán.

Chiến lược logic

Cốt lõi của chiến lược theo dõi kép của AlphaTrend là chỉ số AlphaTrend. Chỉ số AlphaTrend tính toán các băng tần trên và dưới dựa trên ATR thích nghi và giá (giá đóng hoặc giá trung bình trọng số). Phương pháp tính toán cụ thể là:

Phạm vi trên = thấp nhất - ATR * nhân Phạm vi thấp hơn = cao nhất cao + ATR * nhân

Trong đó ATR là phạm vi trung bình thực sự trong một khoảng thời gian nhất định và nhân là một tham số có thể điều chỉnh. Khi giá ở trên dải trên, đường chỉ báo tiếp cận dải trên. Khi giá dưới dải dưới, đường chỉ báo tiếp cận dải dưới. Do đó AlphaTrend tạo thành một kênh thích nghi.

Chiến lược theo dõi kép AlphaTrend thiết lập các vị trí dài và ngắn dựa trên các tín hiệu được tạo ra bởi AlphaTrend.

  • Đi dài khi giá vượt trên AlphaTrend;
  • Đi ngắn khi giá vượt dưới AlphaTrend.

Điều này hoàn thành giao dịch theo dõi hai hướng dựa trên kênh AlphaTrend năng động.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược theo dõi kép AlphaTrend là nó có thể theo dõi những thay đổi trong xu hướng thị trường. ATR thích nghi có thể điều chỉnh phạm vi kênh theo những thay đổi trong biến động thị trường, tránh được vấn đề của Bollinger Band truyền thống mất hiệu quả do sự mở rộng biến động.

Ngoài ra, AlphaTrend kết hợp cả thông tin giá và khối lượng (hoặc động lực), giúp lọc ra một số đột phá sai, cải thiện chất lượng tín hiệu giao dịch.

Phân tích rủi ro

Rủi ro chính của chiến lược theo dõi kép AlphaTrend xuất phát từ sự biến động thị trường lớn có thể ảnh hưởng đến các điểm dừng lỗ. Khi có sự chuyển động thị trường bất thường, các điểm dừng lỗ có thể bị phá vỡ, dẫn đến tổn thất lớn. Điều này cần được kiểm soát bằng cách điều chỉnh đúng các tham số ATR và các điểm dừng lỗ.

Ngoài ra, ALPHA cũng có một số chậm trễ. Nó cũng có thể tạo ra các tín hiệu không chính xác xung quanh các thời điểm chuyển đổi thị trường. Các chỉ số khác nên được sử dụng để xác nhận các tín hiệu.

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

Chiến lược theo dõi kép AlphaTrend có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kết hợp với các chỉ số xu hướng để xác định xu hướng thị trường chính để tránh giao dịch chống lại xu hướng;
  2. Tăng bộ lọc khối lượng để tránh tổn thất do các vụ nổ giả khối lượng thấp;
  3. Tối ưu hóa các tham số chỉ số để làm cho phạm vi kênh phù hợp hơn với các sản phẩm khác nhau;
  4. Tăng các thuật toán máy học để làm cho kênh thông minh hơn.

Thông qua các tối ưu hóa trên, sự ổn định và lợi nhuận của chiến lược AlphaTrend có thể được cải thiện hơn nữa.

Tóm lại

Tóm lại, chiến lược theo dõi kép AlphaTrend là một cách hiệu quả để theo dõi những thay đổi của thị trường. Nó giải quyết vấn đề của các chỉ số kỹ thuật truyền thống mất hiệu quả và cũng kết hợp thông tin khối lượng để lọc tín hiệu. Với tối ưu hóa thích hợp, chiến lược này có thể trở thành một công cụ mạnh mẽ trong các hệ thống giao dịch định lượng.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
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/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5
strategy('AlphaTrend', shorttitle='AT', overlay=true, format=format.price, precision=2)
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=true)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])


K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

//plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))

//plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))



longCondition = buySignalk and showsignalsk and O1 > K2
if (longCondition)
    
    strategy.entry("BUY", strategy.long, comment = "BUY ENTRY")

shortCondition = sellSignalk and showsignalsk and O2 > K1
if (shortCondition )
    
    strategy.entry("SELL", strategy.short, comment = "SELL ENTRY")













// alertcondition(buySignalk and O1 > K2, title='Potential BUY Alarm', message='BUY SIGNAL!')
// alertcondition(sellSignalk and O2 > K1, title='Potential SELL Alarm', message='SELL SIGNAL!')

// alertcondition(buySignalk[1] and O1[1] > K2, title='Confirmed BUY Alarm', message='BUY SIGNAL APPROVED!')
// alertcondition(sellSignalk[1] and O2[1] > K1, title='Confirmed SELL Alarm', message='SELL SIGNAL APPROVED!')



// alertcondition(ta.cross(close, AlphaTrend), title='Price Cross Alert', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low, AlphaTrend), title='Candle CrossOver Alarm', message='LAST BAR is ABOVE ALPHATREND')
// alertcondition(ta.crossunder(high, AlphaTrend), title='Candle CrossUnder Alarm', message='LAST BAR is BELOW ALPHATREND!')

// alertcondition(ta.cross(close[1], AlphaTrend[1]), title='Price Cross Alert After Bar Close', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low[1], AlphaTrend[1]), title='Candle CrossOver Alarm After Bar Close', message='LAST BAR is ABOVE ALPHATREND!')
// alertcondition(ta.crossunder(high[1], AlphaTrend[1]), title='Candle CrossUnder Alarm After Bar Close', message='LAST BAR is BELOW ALPHATREND!')






Thêm nữa