Tài nguyên đang được tải lên... tải...

RSI Dynamic Stop-Loss Intelligent Trading Strategy - Chiến lược giao dịch thông minh

Tác giả:ChaoZhang, Ngày: 2024-11-12 11:39:06
Tags:RSISMAATR

img

Tổng quan

Chiến lược này là một hệ thống giao dịch dừng lỗ năng động dựa trên chỉ số RSI, kết hợp các chỉ số SMA và ATR để tối ưu hóa các quyết định giao dịch. Nó sử dụng cách tiếp cận lấy lợi nhuận nhiều cấp độ với đóng cửa vị trí theo kiểu kim tự tháp để tối đa hóa lợi nhuận trong khi sử dụng lệnh dừng lỗ năng động ATR để kiểm soát rủi ro. Chiến lược có khả năng thích nghi cao và tự động điều chỉnh các tham số giao dịch dựa trên biến động thị trường.

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

Chiến lược này chủ yếu sử dụng các điều kiện bán quá mức RSI (RSI<30) như là tín hiệu đầu vào trong khi yêu cầu giá phải ở trên mức trung bình động 200 ngày để đảm bảo xu hướng tăng. Nó thực hiện ba mục tiêu lợi nhuận (5%, 10%, 15%) kết hợp với ATR stop-loss động. Cụ thể:

  1. Điều kiện tham gia: RSI dưới 30 và giá trên SMA200
  2. Quản lý vị trí: 75% vốn cho mỗi giao dịch
  3. Stop-loss: Dừng động dựa trên 1.5x ATR
  4. Lợi nhuận: Ba mức 5%, 10%, 15%, kết thúc tương ứng 33%, 66% và 100%

Ưu điểm chiến lược

  1. Quản lý rủi ro năng động: điều chỉnh ATR theo biến động thị trường
  2. Lấy lợi nhuận theo giai đoạn: Giảm sự can thiệp cảm xúc và cải thiện xác suất lợi nhuận
  3. Xác nhận xu hướng: Sử dụng đường trung bình động để lọc tín hiệu sai
  4. Quản lý tiền mặt: Phân loại vị trí dựa trên tỷ lệ phần trăm cho các kích thước tài khoản khác nhau
  5. Tối ưu hóa của Ủy ban: Xem xét chi phí giao dịch cho việc thực hiện thực tế

Rủi ro chiến lược

  1. Sự chậm trễ trung bình động có thể trì hoãn các mục nhập
  2. RSI quá bán không đảm bảo đảo ngược
  3. Kích thước vị trí lớn có thể dẫn đến giảm đáng kể
  4. Việc rời khỏi một phần thường xuyên có thể làm tăng chi phí giao dịch Những rủi ro này có thể được quản lý thông qua các điều chỉnh tham số và các bộ lọc bổ sung.

Hướng dẫn tối ưu hóa

  1. Thêm tín hiệu xác nhận âm lượng
  2. Bao gồm các chỉ số sức mạnh xu hướng
  3. Tối ưu hóa tỷ lệ lợi nhuận
  4. Thêm bộ lọc khung thời gian
  5. Xem xét định dạng vị trí thích nghi với biến động

Tóm lại

Chiến lược này kết hợp các chỉ số kỹ thuật với quản lý rủi ro năng động để tạo ra một hệ thống giao dịch toàn diện. Sức mạnh của nó nằm trong khả năng thích nghi và rủi ro được kiểm soát, mặc dù tối ưu hóa tham số dựa trên điều kiện thị trường vẫn cần thiết. Chiến lược này phù hợp với các nhà đầu tư trung và dài hạn và phục vụ như một nền tảng vững chắc cho giao dịch có hệ thống.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA/4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy("Simple RSI stock Strategy [1D] ", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=75, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
oversoldLevel = input(30, title="Oversold Level")
overboughtLevel = input(70, title="Overbought Level")
rsi = ta.rsi(close, 5)
rsi_overbought = rsi > overboughtLevel  
rsi_oversold = rsi < oversoldLevel

// Sma 200
lenghtSMA = input(200, title = "SMA lenght")
sma200 = ta.sma(close, lenghtSMA)

// ATR stop-loss
atrLength = input.int(20, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrValue = ta.atr(atrLength)
var float long_stop_level = na
var float short_stop_level = na
var float tp1_level = na
var float tp2_level = na
var float tp3_level = na

// Strategy entry
long = (rsi_oversold ) and close > sma200 

// Take Profit levels
tp_1 = input.float(5.0, "TP 1", minval=0.1, step=0.1)
tp_2 = input.float(10.0, "TP 2", minval=0.2, step=0.1)
tp_3 = input.float(15.0, "TP 3", minval=0.3, step=0.1)

if long
    strategy.entry('Long', strategy.long)
    long_stop_level := close - atrMultiplier * atrValue
    tp1_level := strategy.position_avg_price * (1 + tp_1 / 100)
    tp2_level := strategy.position_avg_price * (1 + tp_2 / 100)
    tp3_level := strategy.position_avg_price * (1 + tp_3 / 100)

// basic SL - this code is from author RafaelZioni, modified by wielkieef
sl = input.float(25.0, 'Basic Stop Loss %', step=0.1)
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

// ATR SL
if (strategy.position_size > 0 and (close <= long_stop_level))
    strategy.close("Long")
    tp1_level := na
    tp2_level := na
    tp3_level := na
plot(long_stop_level, color=color.orange, linewidth=2, title="Long Stop Loss")

// TP levels
if (strategy.position_size > 0)
    if (not na(tp1_level) and close >= tp1_level)
        tp1_level := na
    if (not na(tp2_level) and close >= tp2_level)
        tp2_level := na
    if (not na(tp3_level) and close >= tp3_level)
        tp3_level := na

plot(strategy.position_size > 0 and not na(tp1_level) ? tp1_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 1")
plot(strategy.position_size > 0 and not na(tp2_level) ? tp2_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 2")
plot(strategy.position_size > 0 and not na(tp3_level) ? tp3_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 3")

// Strategy exit points for Take Profits
strategy.exit('TP 1', from_entry="Long", qty_percent=33, profit=per(tp_1), loss=per(sl))
strategy.exit('TP 2', from_entry="Long", qty_percent=66, profit=per(tp_2), loss=per(sl))
strategy.exit('TP 3', from_entry="Long", qty_percent=100, profit=per(tp_3), loss=per(sl))

// by wielkieef

Có liên quan

Thêm nữa