Chiến lược ATR siêu xu hướng


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

Chiến lược ATR siêu xu hướng

Tổng quan

Đây là một chiến lược dựa trên chỉ số siêu xu hướng và chỉ số ATR. Ý tưởng chính của chiến lược này là: Sử dụng chỉ số siêu xu hướng để xác định xu hướng của thị trường hiện tại và giao dịch khi chỉ số siêu xu hướng thay đổi. Đồng thời, chiến lược này sử dụng chỉ số ATR để tính toán giá dừng và giá dừng và tính toán kích thước vị trí dựa trên tỷ lệ nhất định của số dư tài khoản để kiểm soát rủi ro.

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

Các nguyên tắc của chiến lược này là:

  1. Tính toán giá trị của chỉ số siêu xu hướng, tạo ra tín hiệu mua hoặc bán khi chỉ số siêu xu hướng thay đổi.
  2. Sử dụng chỉ số ATR để tính toán giá dừng lỗ và giá dừng, giá dừng là giá hiện tại cộng với giá ATR giảm nhân với một nhân số, giá dừng là giá dừng lỗ nhân với tỷ lệ lợi nhuận rủi ro.
  3. Kích thước vị thế được tính theo tỷ lệ số dư tài khoản và giá dừng lỗ để kiểm soát rủi ro cho mỗi giao dịch.
  4. Khi tạo ra tín hiệu mua, mở thêm, giá dừng là giá khi tín hiệu được tạo ra trừ ATR nhân với một nhân, giá dừng là giá khi tín hiệu được tạo ra cộng với ATR nhân với một nhân nhân nhân với tỷ lệ lợi nhuận rủi ro.
  5. Khi tạo ra tín hiệu bán, mở vị trí bằng cách làm trống, giá dừng là giá khi tín hiệu được tạo ra cộng với giá ATR nhân với một nhân số, giá dừng là giá khi tín hiệu được tạo ra trừ giá ATR nhân với một nhân số nhân với tỷ lệ lợi nhuận rủi ro.

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

Những ưu điểm của chiến lược này là:

  1. Kết hợp theo dõi xu hướng và chỉ số biến động, có thể nắm bắt được xu hướng hiệu quả, đồng thời kiểm soát rủi ro.
  2. Kích thước vị trí được tính tự động dựa trên số dư tài khoản và mức độ rủi ro, không cần điều chỉnh thủ công, dễ thực hiện.
  3. Các tham số có thể được điều chỉnh một cách linh hoạt để phù hợp với các thị trường và giống khác nhau.

Rủi ro chiến lược

Rủi ro của chiến lược này là:

  1. Trong thị trường bất ổn, các tín hiệu mua và bán thường xuyên có thể dẫn đến chi phí giao dịch cao và điểm trượt.
  2. Các tỷ lệ dừng và dừng cố định có thể không thích ứng với sự thay đổi của thị trường, dẫn đến dừng quá sớm hoặc lợi nhuận quá nhỏ.
  3. Tính toán kích thước vị trí phụ thuộc vào biến động lịch sử, và nếu biến động đột ngột, nó có thể dẫn đến rút lui lớn hơn.

Các biện pháp sau đây có thể được áp dụng để đối phó với những rủi ro trên:

  1. Tăng các điều kiện lọc tín hiệu, giảm tần suất giao dịch.
  2. Tối ưu hóa phương pháp tính toán dừng và dừng, chẳng hạn như sử dụng dừng di động hoặc dừng động.
  3. Lập các yếu tố kiểm soát rủi ro trong tính toán vị trí, chẳng hạn như giảm vị trí khi tỷ lệ biến động phá vỡ.

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

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

  1. Việc đưa ra nhiều chỉ số kỹ thuật hơn, chẳng hạn như MACD, RSI, v.v., làm điều kiện hỗ trợ cho việc đánh giá xu hướng và lọc tín hiệu, giúp tăng độ chính xác của tín hiệu.
  2. Tối ưu hóa các tham số của chỉ số siêu xu hướng và chỉ số ATR để tìm ra sự kết hợp tham số tốt nhất cho các thị trường và giống khác nhau.
  3. Trong tính toán vị trí, giới thiệu nhiều yếu tố kiểm soát rủi ro hơn, chẳng hạn như khoản rút tối đa của tài khoản, rủi ro tối đa của giao dịch đơn lẻ, để cải thiện sự ổn định của chiến lược.
  4. Thêm các chiến lược dừng lại, chẳng hạn như dừng lại một phần, dừng lại di chuyển, để lợi nhuận tăng lên liên tục.

Các tối ưu hóa trên có thể nâng cao lợi nhuận và tính ổn định của chiến lược, đồng thời giảm rủi ro của chiến lược, giúp chiến lược thích nghi hơn với các môi trường thị trường khác nhau.

Tóm tắt

Chiến lược này kết hợp các chỉ số siêu xu hướng và chỉ số ATR để có thể nắm bắt xu hướng một cách hiệu quả, đồng thời kiểm soát rủi ro. Bằng cách tính toán kích thước vị trí tối ưu, rủi ro cho mỗi giao dịch có thể được kiểm soát. Tuy nhiên, chiến lược này có thể tạo ra chi phí giao dịch và rút lui cao hơn trong thị trường bất ổn.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradez99

//@version=5
strategy('Supertrend', overlay=true, format=format.price, precision=2)

Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white
shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white
//fill(mPlot, upPlot, title='UpTrend Highligter', color=longFillColor)
//fill(mPlot, dnPlot, title='DownTrend Highligter', color=shortFillColor)

multiplier = input.float(title="ATR multiplier", defval = 1.5)
rr           = input.float(title="Risk:Reward", defval=1.0)
riskPerTrade = input.float(title="Risk Per Trade %", defval=1.0)
atr3 = ta.atr(14)

//calculate stops and targets 
longstop = close - (atr3 * multiplier)
shortstop = close + (atr3 * multiplier)
longStopDistance  = close - longstop
shortStopDistance = shortstop - close
longTarget  = close + (longStopDistance * rr)
shortTarget = close - (shortStopDistance * rr)

// Save stops & targets
var t_stop = 0.0
var t_target = 0.0

longCondition = buySignal 
if (longCondition)
    t_stop := longstop
    t_target := longTarget
    positionSize = math.floor((strategy.equity * (riskPerTrade/100)) / (close - t_stop))
    strategy.entry("Long", strategy.long, qty = positionSize)

shortCondition = sellSignal 
if (shortCondition)
    t_stop := shortstop
    t_target := shortTarget
    positionSize = math.floor((strategy.equity * (riskPerTrade/100)) / (t_stop - close))  
    strategy.entry("Short", strategy.short, qty = positionSize)

strategy.exit(id="Long Exit", from_entry="Long", limit=t_target, stop=t_stop)
strategy.exit(id="Short Exit", from_entry="Short", limit=t_target, stop=t_stop)