Chiến lược dừng lỗ động thích ứng với biến động ATR


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

Tổng quan

Chiến lược này kết hợp các chỉ số động lực, K-value, K-random, và ATR, để động điều chỉnh các đường dừng và đường vào của K-value theo giá trị của ATR, thực hiện ý tưởng tự động điều chỉnh các đường dừng và đường vào theo biến động của thị trường.

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

  1. Tính toán độ dài của len là giá trị Ksma ((close, stoch ((high, low, len), smoothK), đại diện cho giá trị K của chỉ số ngẫu nhiên.

  2. Tính toán độ dài của len với giá trị ATRatr ((len) ⋅

  3. Đồ họa đường dừng ((rsi ((atr, len) + đường thấp, …, title = “low line”) và đường vào ((rsi ((atr, len) dựa trên giá trị ATR)*-1+100-lowLine, …, title = “up line”)。

  4. Xác định khi nào giá trị K phá vỡ đường vào (crossover) và đường dừng (crossunder), tạo ra tín hiệu mua và bán.

  5. Hình vẽ màu nền mua bán.

  6. Khi tín hiệu trên được đáp ứng, hãy mua và bán và đặt lệnh dừng lỗ.

Phân tích lợi thế chiến lược

  1. Chiến lược này sẽ động điều chỉnh đường dừng và đường vào tùy thuộc vào biến động của thị trường ATR và có thể tự động điều chỉnh rủi ro dừng tùy thuộc vào biến động của thị trường.

  2. Khi thị trường biến động lớn, khoảng cách giữa đường dừng và đường vào là lớn hơn, có thể tránh được việc dừng bị rung.

  3. Khi thị trường biến động yên tĩnh, khoảng cách giữa đường dừng và đường vào sẽ thu hẹp, có thể dừng lại kịp thời.

  4. Sử dụng giá trị K của chỉ số động lực để xác định nhập cảnh và xuất cảnh. Giá trị K có thể phản ứng với tốc độ thay đổi giá, có thể nắm bắt các điểm biến.

  5. Kết hợp với chỉ số động lượng và chỉ số tỷ lệ dao động, nó có thể nắm bắt xu hướng và tự động điều chỉnh rủi ro theo biến động.

Phân tích rủi ro chiến lược

  1. Giá trị K dễ bị phá vỡ giả, có thể gây ra tín hiệu giao dịch không cần thiết. Bạn có thể điều chỉnh tham số giá trị K để làm mịn đường K.

  2. ATR tham số len được đặt quá lớn, khoảng cách giữa đường dừng và đường vào quá lớn, rủi ro có thể quá cao. Bạn có thể kiểm tra sự ổn định của các tham số len khác nhau.

  3. Chỉ theo dõi dừng không thể xác định vị trí dừng là hợp lý hay không, không thể kiểm soát rủi ro dừng một lần. Có thể xem xét kiểm soát rủi ro dừng một lần kết hợp với thuật toán dừng mong muốn.

  4. Các tín hiệu chiến lược thường xuyên và phí giao dịch cao. Các tham số đường vào lowLine có thể được điều chỉnh thích hợp để kiểm soát tần suất giao dịch.

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

  1. Kiểm tra điều chỉnh tham số giá trị K của smoothK, tìm ra các tham số tối ưu cho giá trị K mịn.

  2. Kiểm tra các giá trị khác nhau của tham số ATR len để xác định tham số ATR phù hợp.

  3. Tối ưu hóa tham số đường vào lowLine, tìm tham số tối ưu để kiểm soát tần suất giao dịch.

  4. Xem xét kết hợp các chỉ số khác để lọc tín hiệu vào thị trường, tránh phá vỡ giả. Ví dụ: kết hợp chỉ số khối lượng giao dịch, chỉ số KDJ.

  5. Cân nhắc tối ưu hóa phương thức dừng lỗ, cải thiện mong đợi dừng lỗ và chủ động kiểm soát rủi ro dừng lỗ.

Tóm tắt

Chiến lược này dựa trên giá trị K của chỉ số động lực và ATR của chỉ số tỷ lệ biến động để thực hiện ý tưởng động điều chỉnh đường dừng và đường vào, có thể nắm bắt xu hướng và tự động điều chỉnh rủi ro theo biến động, là một ý tưởng chiến lược rất sáng tạo và thực tế. Bằng cách tối ưu hóa tham số, cải thiện phương thức dừng và các phương pháp tối ưu hóa hơn nữa, có thể làm cho chiến lược trở nên ổn định và đáng tin cậy, có triển vọng phát triển rất tốt.

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

//@version=3
strategy("Stoch + ATR", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

len = input(34, minval=1, title="Length for Main Stochastic & ATR") 
smoothK = input(2, minval=1, title="SmoothK for Main Stochastic")
lowLine = input(10, minval=-50, maxval=50, title="Multiplier for up/low lines")

//Stoch formula
k = sma(stoch(close, high, low, len), smoothK)
plot(k, color=aqua, title = "Stoch")

//len=input
atr=atr(len)
plot(rsi(atr, len)+lowLine , color=red,linewidth=2, title = "low line")
plot(rsi(atr, len)*-1+100-lowLine, color=lime,linewidth=2, title = "up line")

aboveLine = crossunder(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine = crossover(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

aboveLine2 = crossover(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine2 = crossunder(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

skip=(aboveLine2==1 or belowLine2==1) and (aboveLine==1 or belowLine==1)? 1 : 0

//BackGroound Color Plots
plotchar(belowLine==1 and skip==0, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine==1 and skip==0, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)
plotchar(belowLine2==1 and skip==0, title="Close Signal", char='C', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine2==1 and skip==0, title="Close Signal", char='C', location=location.top, color=white, transp=0, offset=0)

bgcolor(aboveLine==1 ? red : na, transp=30, title = "sell signal")
bgcolor(belowLine==1 ? lime : na, transp=30, title = "buy signal")

bgcolor(aboveLine2==1 ? lime : na, transp=80, title = "close short")
bgcolor(belowLine2==1 ? red : na, transp=80, title = "close long")

bgcolor(skip==1 ? black : na, transp=0, title = "skip signal")

//strategy
longCondition = belowLine==1
shortCondition = aboveLine==1

strategy.entry("BUY", strategy.long, when = longCondition)
strategy.entry("SELL", strategy.short, when = shortCondition)
strategy.cancel_all(when = skip==1)