Chiến lược giao dịch dựa trên VSTOP và RSI


Ngày tạo: 2023-10-09 15:48:46 sửa đổi lần cuối: 2023-10-09 15:48:46
sao chép: 0 Số nhấp chuột: 706
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 hai chỉ số VSTOP và RSI để thực hiện nhiều giao dịch ngắn hạn khi RSI quá mua quá bán, đồng thời sử dụng VSTOP để xác định hướng của xu hướng và dừng lại kịp thời khi xu hướng đảo ngược.

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

  1. Tính RSI, đặt đường mua và đường bán quá mức. Khi RSI lớn hơn đường mua quá mức, hãy mua nhiều; Khi RSI nhỏ hơn đường bán quá mức, hãy mua ít.

  2. Tính toán VSTOP, đó là đường dừng được thiết lập dựa trên phạm vi biến động giá. Các bước tính toán cụ thể như sau:

    • Tính ATR và thiết lập hệ số của ATR

    • Ghi lại giá max và giá min

    • Dựa trên liệu đang trong xu hướng tăng is_uptrend, tính toán dừng lỗ hiện tại = is_uptrend ? max - mult * ATR: min + mult * ATR

    • Cập nhật đường dừng lỗ: vstop1 = is_uptrend ? max ((vstop_prev, stop): min ((vstop_prev, stop)

    • Đặt lại vstop khi xu hướng đảo ngược

  3. Khi RSI bán quá mức, nếu giá vượt qua VSTOP, bạn sẽ tháo dỡ; khi RSI mua quá mức, bạn sẽ tháo dỡ.

Phân tích lợi thế

  • Kết hợp với chỉ số xu hướng và chỉ số mua bán quá mức, bạn có thể nắm bắt cơ hội đảo ngược trong tình trạng xu hướng.

  • Sử dụng VSTOP để thiết lập dừng lỗ, có thể kiểm soát rủi ro hiệu quả.

  • Các tham số RSI được thiết lập linh hoạt và có thể được tối ưu hóa cho các giống khác nhau.

  • VSTOP có hệ thống theo dõi các lỗ hổng mà không cần sự can thiệp của con người.

Rủi ro và giải pháp

  • Nếu tham số ATR được thiết lập quá lớn hoặc quá nhỏ, đường dừng sẽ mất ý nghĩa. Bạn có thể thử nghiệm các tham số ATR khác nhau hoặc kết hợp với giá trị trung bình của ATR để thiết lập.

  • Trong tình huống cân bằng, RSI có thể thường xuyên kích hoạt tín hiệu giao dịch, làm tăng tần suất giao dịch và chi phí điểm trượt. Các tham số của RSI có thể được điều chỉnh thích hợp, hoặc thêm các điều kiện lọc để giảm tín hiệu không hiệu quả.

  • Sự thất bại của sự đảo ngược là rủi ro chính của chiến lược này, các nhà giao dịch cần chú ý đến hướng xu hướng ở cấp độ lớn hơn và tránh hoạt động ngược.

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

  • Có thể xem xét kết hợp với các chỉ số khác để loại bỏ các tín hiệu không có hiệu lực, chẳng hạn như chỉ số năng lượng lượng, kênh Tôn Tân và các chỉ số khác.

  • Các tham số có thể được tối ưu hóa dựa trên kết quả phản hồi để tìm ra sự kết hợp tham số tốt nhất.

  • Có thể nghiên cứu cách điều chỉnh ATR động để thích ứng với các môi trường thị trường khác nhau.

  • Có thể khám phá các chiến lược đóng cửa trong một khoảng thời gian nhất định để tránh những khoảng thời gian có nguy cơ cao.

Tóm tắt

Chiến lược này tích hợp phán đoán xu hướng và phán đoán mua quá mức, có thể nắm bắt cơ hội đảo ngược trong tình huống xu hướng. Kiểm soát lỗ hổng của VSTOP được thực hiện một cách có hệ thống, giúp kiểm soát rủi ro.

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

//@version=3
strategy("Vstop and RSI", overlay=true)

//RSI Section
length = input(2, "RSI Period") 
overSold = input(30, "Oversold Level") 
overBought = input(70, "Overbought Level") 
price = close 
vrsi = rsi (price, length) 

//VSTOP Section
vlength = input(2, "Vstop Length") 
mult = input(2, "Vstop Mult") 
atr_ = atr(vlength) 

max1=0.0 
min1=0.0 
is_uptrend_prev = false 
stop=0.0 
vstop_prev=0.0 
vstop1=0.0 
is_uptrend=false 
is_trend_changed=false 
max_ = 0.0 
min_ = 0.0 
vstop=0.0 

max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)


is_uptrend_prev := nz(is_uptrend[1], true)

stop := is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2)

if vrsi > overBought
    strategy.entry("Buy", strategy.long, comment="Buy")
     
if vrsi < overSold and vstop > price
    strategy.entry("Sell", strategy.short, comment="Sell")