Chiến lược giao dịch hồi quy trung bình động RSI


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

Chiến lược này được thiết kế dựa trên các chỉ số RSI về tính năng quay trở lại đường trung bình. Khi RSI quá mua quá bán, sẽ có sự quay trở lại, tạo ra cơ hội giao dịch. Chiến lược này sử dụng chỉ số RSI để đánh giá tình trạng quá mua quá bán, sử dụng phương pháp quay trở lại đường trung bình để thiết lập vị trí trống, nhằm mục đích giao dịch có hệ thống.

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

  1. Tính toán giá trị chỉ số RSI, thiết lập đường mua và đường bán quá mức, tham số điển hình là đường mua quá mức 60 và đường bán quá mức 30.

  2. Khi RSI vượt quá đường mua từ trên xuống dưới, hãy bán và đặt vị trí ngắn.

  3. Khi RSI vượt qua đường bán từ dưới lên, thực hiện giao dịch mua và tạo thêm vị trí.

  4. Đường dừng nhiều vị trí là giá nhập cảnh nhân với tỷ lệ dừng 1 và đường dừng ngắn là giá nhập cảnh nhân với tỷ lệ dừng 1 +.

  5. Khi giá vượt qua đường dừng lỗ, hãy thực hiện lệnh dừng lỗ.

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

  1. Sử dụng tính năng hồi phục của chỉ số RSI, bạn có thể bắt được cơ hội giao dịch từ sự điều chỉnh xu hướng.

  2. Sử dụng cách xây dựng nhà kho đột phá, bạn có thể kịp thời bắt kịp sự biến đổi xu hướng.

  3. Thiết lập đường dừng lỗ để kiểm soát tổn thất đơn lẻ.

Những rủi ro của chiến lược này bao gồm:

  1. Chỉ số RSI có khả năng phát ra tín hiệu sai, nên được xác nhận kết hợp với các chỉ số khác.

  2. Các điểm dừng gần điểm vào sẽ thường xuyên bị dừng, nên mở rộng phạm vi dừng một cách thích hợp.

  3. Lựa chọn không đúng thời điểm quay trở lại giao dịch có thể dẫn đến thời gian nắm giữ quá dài.

Nói tóm lại, chiến lược RSI quay trở lại bằng cách nắm bắt cơ hội quay trở lại của chỉ số RSI. Chiến lược này có thể theo dõi và kiểm soát hiệu quả tổn thất đơn lẻ. Tuy nhiên, chỉ số RSI có độ tin cậy thấp, nhà đầu tư cần thận trọng áp dụng và hỗ trợ xác nhận bằng các chỉ số kỹ thuật khác, tối ưu hóa cơ chế dừng lỗ để có được lợi nhuận ổn định lâu dài.

Mã nguồn chiến lược
/*backtest
start: 2022-09-05 00:00:00
end: 2023-09-11 00:00:00
period: 1d
basePeriod: 1h
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/
// © relevantLeader16058

//@version=4
strategy(shorttitle='RSI Bot Strategy',title='Quadency Mean Reversion Bot Strategy', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.08)

//Backtest dates
start = input(defval = timestamp("08 Mar 2021 00:00 -0600"), title = "Start Time", type = input.time)
finish = input(defval = timestamp("9 Mar 2021 23:59 -0600"), title = "Start Time", type = input.time)
window()  => true       // create function "within window of time"

// Complete Control over RSI inputs and source price calculations
lengthRSI = input(14, minval=1)
source = input(title="Source", type=input.source, defval=close)
strat = input(title="Strategy", defval="Long/Short", options=["Long Only", "Long/Short", "Short Only"])
strat_val = strat == "Long Only" ? 1 : strat == "Long/Short" ? 0 : -1
stoploss = input(5.00, "Stop Loss %")
oversold= input(30)
overbought= input(60)

// Standard RSI Calculation
RSI = rsi(close, lengthRSI)
stLossLong=(1-(stoploss*.01))
stLossShort=(1+(stoploss*.01))

//Long and Short Strategy Logic
GoLong = crossunder(RSI, oversold) and window()
GoShort = crossover(RSI, overbought) and window()

// Strategy Entry and Exit
if (GoLong)
    if strat_val > -1
        strategy.entry("LONG", strategy.long)
    if strat_val < 1
        strategy.close("SHORT")
    

if (GoShort)
    if strat_val > -1
        strategy.close("LONG")
    if strat_val < 1
        strategy.entry("SHORT", strategy.short)


LongStopLoss = barssince(GoLong)<barssince(GoShort) and crossunder(low, valuewhen(GoLong, close, 0)*stLossLong)

ShortStopLoss = barssince(GoLong)>barssince(GoShort) and crossover(high, valuewhen(GoShort, close, 0)*stLossShort)

if (ShortStopLoss)
    strategy.close("SHORT")
    
if (LongStopLoss)
    strategy.close("LONG")