Chiến lược giao cắt đường trung bình động trục RSI


Ngày tạo: 2023-11-23 16:45:55 sửa đổi lần cuối: 2023-11-23 16:45:55
sao chép: 2 Số nhấp chuột: 751
1
tập trung vào
1617
Người theo dõi

Chiến lược giao cắt đường trung bình động trục RSI

Tổng quan

Chiến lược giao chéo đường trung bình trục RSI được đánh giá bằng cách tính toán chỉ số RSI và đường trung bình di chuyển đơn giản của nó, và quan sát hai cái móc vàng của hai người. Chiến lược này kết hợp với việc tăng kháng cự hỗ trợ cho đường trung bình trục RSI của Brin.

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

Chiến lược này đầu tiên tính toán chỉ số RSI 14 ngày, sau đó tính toán đường trung bình di chuyển đơn giản 8 ngày của chỉ số RSI. Nó tạo ra tín hiệu mua khi chỉ số RSI phá vỡ đường trung bình di chuyển của nó từ dưới lên; nó tạo ra tín hiệu bán khi RSI phá vỡ đường trung bình di chuyển của nó từ trên xuống.

Trong khi đó, chiến lược này cho phép RSI tăng mức trung bình trục để xác định vùng Brin. Các vùng Brin được tính toán thông qua chênh lệch tiêu chuẩn để xác định xem đường trung bình trục RSI đã tương đối quá đông đúc để tránh mua ở mức cao và bán ở mức thấp.

Phân tích lợi thế

Chiến lược giao chéo đường trung bình trục RSI kết hợp chỉ số xu hướng RSI và đường trung bình di chuyển của chỉ số đường cong, có thể đánh giá hiệu quả xu hướng và ngẫu nhiên của thị trường. Đường trung bình toán học của chỉ số RSI có thể làm mỏng hiệu quả của biến động giá trên tín hiệu.

Phương pháp này sử dụng nguyên tắc chênh lệch tiêu chuẩn để tự động điều chỉnh chiều rộng của đường ray lên xuống, có hiệu quả trong việc ngăn chặn các tín hiệu giao dịch bị xáo trộn. Khi vòng Boolean thu hẹp, biểu thị sự thay đổi chậm lại, phù hợp để tìm cơ hội đảo ngược; và khi vòng Boolean mở rộng, biểu thị thời gian biến động mạnh, phù hợp để theo dõi xu hướng.

Phân tích rủi ro

Nguy cơ lớn nhất của chiến lược giao dịch chéo đường trung bình trục RSI nằm ở sự chậm trễ của chỉ số RSI và đường trung bình di chuyển. Khi thời gian đi nhanh, việc tính toán và xác định xu hướng của chỉ số sẽ bị chậm trễ. Điều này có thể dẫn đến điểm mua được nâng lên và điểm bán được hạ xuống.

Một rủi ro chính khác là sự sai lệch của các chỉ số khi xu hướng chuyển đổi bò và gấu. Khi thị trường biến đổi và RSI và chỉ số đường trung bình chưa phản ứng, sẽ tạo ra tín hiệu giao dịch sai và gây thiệt hại.

Các giải pháp bao gồm điều chỉnh RSI một cách thích hợp, rút ngắn chu kỳ đường trung bình; thêm các chỉ số theo xu hướng để hỗ trợ phán đoán; Giảm phạm vi dừng một cách thích hợp.

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

Chiến lược giao chéo đường trung bình trục RSI có thể được tối ưu hóa theo một số hướng sau:

  1. Tối ưu hóa tham số RSI: điều chỉnh độ dài RSI để cân bằng độ nhạy và ổn định

  2. Tối ưu hóa các tham số trung bình di chuyển: điều chỉnh các loại đường trung bình và tham số chu kỳ, tối ưu hóa tính tiến triển của chỉ số

  3. Tăng cơ chế dừng lỗ: thiết lập dừng di chuyển hoặc dừng thời gian, kiểm soát lỗ đơn

  4. Kết hợp các chỉ số xu hướng: thêm MACD, KDJ và các chỉ số khác để tránh sai lầm đảo ngược

  5. Xác minh nhiều khung thời gian: sử dụng khung thời gian cao hơn để xác định xu hướng và tránh bị mắc kẹt

Tóm tắt

Chiến lược giao dịch RSI là một chiến lược giao dịch định lượng khá trưởng thành. Nó kết hợp các lợi thế của nhiều chỉ số kỹ thuật, có thể tham gia vào thị trường thông qua điều chỉnh tham số và tối ưu hóa đa chiều. Rủi ro lớn nhất của chiến lược này là sự chậm trễ của chỉ số, cần phải kết hợp với dừng lỗ để kiểm soát tổn thất. Nếu được vận hành đúng cách, chiến lược giao dịch RSI có thể thu được lợi nhuận đầu tư ổn định hơn.

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

//@version=5
// Copyright (c) 2020-present, Alex Orekhov (everget)
// Corrected Moving Average script may be freely distributed under the terms of the GPL-3.0 license.
strategy('rsisma', shorttitle='rsisma')

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.blue)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")


long = ta.crossover(rsi, rsiMA)
short = ta.crossunder(rsi, rsiMA)
if long
    strategy.entry("long", strategy.long)
if short
    strategy.close("long", comment = "long TP")

 
// long1 = close * 9
// long2 = long1 / 100
// long3 = long2 + close


//plot(long3,color=color.blue)
// if short
//     strategy.entry("short", strategy.short)
// if long
//     strategy.close("short", comment = "short TP")