Chiến lược theo dõi song hướng AlphaTrend


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

Chiến lược theo dõi song hướng AlphaTrend

Tổng quan

Chiến lược theo dõi hai chiều của AlphaTrend là chiến lược giao dịch dựa trên tín hiệu mua và bán của chỉ số AlphaTrend. Chiến lược này có thể mở các vị trí đầu nhiều và đầu trống trong khu vực mà chỉ số AlphaTrend tạo ra tín hiệu mua và bán.

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

Cốt lõi của chiến lược theo dõi hai chiều của AlphaTrend là chỉ số AlphaTrend. Chỉ số AlphaTrend dựa trên sự kết hợp của sóng thực trung bình thích nghi ((ATR) và giá ((giá đóng cửa hoặc giá trung bình trọng lượng giao dịch)).

Đường lên = giá thấp nhất - ATR * hệ số Đường đua dưới = giá cao nhất + ATR * hệ số

Trong đó, ATR là bước sóng trung bình thực tế trong một chu kỳ nhất định trong quá khứ, hệ số là tham số điều chỉnh được. Khi giá cao hơn đường lên, đường chỉ số gần đường lên; Khi giá thấp hơn đường xuống, đường chỉ số gần đường xuống. Như vậy, chỉ số AlphaTrend tạo ra một kênh thích ứng.

Chiến lược theo dõi hai chiều của AlphaTrend dựa trên tín hiệu của chỉ số AlphaTrend để tạo vị trí đầu nhiều đầu và đầu trống.

  • Khi giá lên, hãy làm nhiều hơn.
  • Khi giá vượt qua chỉ số AlphaTrend, hãy thả.

Điều này đã hoàn thành giao dịch theo dõi hai chiều dựa trên kênh động của chỉ số AlphaTrend.

Phân tích lợi thế

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

Ngoài ra, chỉ số AlphaTrend kết hợp cả giá và khối lượng giao dịch (hoặc động lực), có thể lọc ra một số đột phá giả. Điều này cũng cải thiện chất lượng tín hiệu chiến lược.

Phân tích rủi ro

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

Ngoài ra, chỉ số ALPHA có thể bị chậm trễ. Vì vậy, nó có thể tạo ra tín hiệu sai ở gần điểm biến động. Điều này cần được hỗ trợ bởi các chỉ số khác để xác nhận.

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

Chiến lược theo dõi hai chiều của AlphaTrend có thể được tối ưu hóa theo các khía cạnh sau:

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

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

Tóm tắt

Chiến lược theo dõi hai chiều của AlphaTrend nói chung là một chiến lược hiệu quả để theo dõi sự thay đổi của thị trường. Nó giải quyết các chỉ số kỹ thuật truyền thống dễ bị thất bại và kết hợp với khối lượng giao dịch để 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 hệ thống giao dịch định lượng.

Mã nguồn chiến lược
/*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!')