Chiến lược dừng lỗ theo xu hướng Alpha


Ngày tạo: 2023-11-27 15:25:35 sửa đổi lần cuối: 2023-11-27 15:25:35
sao chép: 0 Số nhấp chuột: 835
1
tập trung vào
1617
Người theo dõi

Chiến lược dừng lỗ theo xu hướng Alpha

Tổng quan

Chiến lược dừng theo dõi xu hướng Alpha là cơ sở của chiến lược dừng theo dõi xu hướng Alpha để kiểm soát rủi ro hiệu quả hơn và tăng tỷ lệ hoàn vốn tổng thể.

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

Chiến lược này đầu tiên sử dụng chỉ số Alpha để xác định xu hướng giá, khi chỉ số Alpha tăng lên là tín hiệu lạc quan, khi chỉ số Alpha giảm là tín hiệu giảm. Chiến lược này tạo ra tín hiệu mua và bán dựa trên giá vàng của chỉ số Alpha.

Trong khi đó, chiến lược đã kích hoạt cơ chế theo dõi dừng lỗ. Theo dõi giá dừng lỗ mặc định là 10% giá đóng cửa trong ngày, khi giữ vị trí nhiều đầu, nếu giá giảm hơn giá dừng lỗ thì dừng lỗ và rút ra; khi giữ vị trí trống, nếu giá tăng hơn giá dừng lỗ thì dừng lỗ.

Phân tích lợi thế

  1. Xu hướng Alpha có khả năng đánh giá xu hướng giá tốt hơn so với các chỉ số như trung bình di chuyển thông thường.

  2. Khởi động hệ thống tracking stop loss có thể kiểm soát hiệu quả tổn thất đơn lẻ và giảm thiểu rủi ro.

  3. Chiến lược này có khả năng kiểm soát rủi ro mạnh mẽ, có thể giảm thiểu thiệt hại ngay cả khi tình hình không thuận lợi.

  4. Chiến lược này có ít tham chiếu và hiệu quả tính toán cao, phù hợp với giao dịch tần số cao.

Phân tích rủi ro

  1. Chiến lược này tạo ra nhiều tín hiệu giao dịch không cần thiết khi điều chỉnh ngang, làm tăng chi phí giao dịch và mất điểm trượt.

  2. Khi kích hoạt theo dõi dừng lỗ, cần thiết phải thiết lập tỷ lệ dừng lỗ hợp lý, tỷ lệ quá lớn hoặc quá nhỏ sẽ không có lợi cho chiến lược.

  3. Khi giá của chỉ số biến động mạnh, sẽ dẫn đến khả năng dừng lỗ được kích hoạt cao hơn, tăng nguy cơ bị mắc kẹt.

  4. Để tối ưu hóa các tham số dừng lỗ, cần phải xem xét tổng hợp các yếu tố khác nhau như tính chất của chỉ số, tần suất giao dịch, không thể chỉ theo đuổi tối đa hóa lợi nhuận.

Những rủi ro trên có thể được giảm thiểu bằng cách điều chỉnh các tham số chỉ số Alpha, thiết lập DYNAMIC Stop Loss, giảm chu kỳ giao dịch.

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

  1. Bạn có thể thử nghiệm các tham số chỉ số khác nhau để tìm một sự kết hợp tham số chỉ số Alpha phù hợp hơn.

  2. Cố gắng thiết lập mức dừng lỗ dựa trên ATR động để có thể thích ứng tốt hơn với biến động của thị trường.

  3. Có thể kết hợp với các chỉ số khác để lọc các tín hiệu như MACD, KD, v.v. để lọc một số tín hiệu sai.

  4. Có thể tự động tối ưu hóa tham số dựa trên kết quả thực tế và phản hồi, thông minh hóa lựa chọn tham số bằng cách sử dụng các kỹ thuật như học máy.

Tóm tắt

Chiến lược dừng lỗ theo dõi xu hướng Alpha kết hợp phán đoán xu hướng với kiểm soát rủi ro, có thể xác định hiệu quả xu hướng giá và khóa lợi nhuận để giảm rủi ro. Chiến lược này có thể mang lại lợi nhuận ổn định cao hơn so với chiến lược theo dõi xu hướng đơn giản.

Mã nguồn chiến lược
/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 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 Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100)
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=false)
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[1] ? #00E60F : AlphaTrend < AlphaTrend[1] ? #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))


// //ENTER SOME SETUP TRADES FOR TSL EXAMPLE
// longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 20))
// if longCondition
//     strategy.entry('My Long Entry Id', strategy.long)

// shortCondition = ta.crossunder(ta.sma(close, 10), ta.sma(close, 20))
// if shortCondition
//     strategy.entry('My Short Entry Id', strategy.short)



longCondition = buySignalk
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = sellSignalk
if (shortCondition)
    strategy.entry("Short", strategy.short)
    

enableTrailing = input.bool(title='Enable Trailing Stop (%)',defval = true)
//TRAILING STOP CODE
trailStop = input.float(title='Trailing (%)', minval=0.0, step=0.1, defval=10) * 0.01



longStopPrice = 0.0
shortStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + trailStop)
    math.min(stopValue, shortStopPrice[1])
else
    999999

//PLOT TSL LINES
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(series=strategy.position_size < 0 ? shortStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Short Trail Stop', offset=1, title='Short Trail Stop')

    
if enableTrailing
    //EXIT TRADE @ TSL
    if strategy.position_size > 0
        strategy.exit(id='Close Long', stop=longStopPrice)
    if strategy.position_size < 0
        strategy.exit(id='Close Short', stop=shortStopPrice)