Chỉ số RSI Cross Cycle Profit and Stop Loss Strategy

Tác giả:ChaoZhang, Ngày: 2024-02-06 11:43:11
Tags:

img

Tổng quan

Chiến lược này sử dụng chỉ số RSI để xác định thời gian đầu vào thông qua các phán đoán chéo chu kỳ và áp dụng cơ chế profit và stop ATR cho các chiến lược theo dõi xu hướng. Nó xác định điểm chuyển đổi của xu hướng thị trường thông qua sự giao thoa của chỉ số RSI của các chu kỳ khác nhau và kết hợp giá đóng cửa để lọc thời gian của các vị trí dài và ngắn. Cơ chế profit và stop kiểm soát hiệu quả rủi ro và khóa lợi nhuận.

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

Chiến lược này đầu tiên sử dụng công nghệ làm mịn SMA để tính toán trung bình động 26 tuần như một điểm chuẩn để đánh giá thị trường bò. Sau đó tính giá trị chỉ số RSI 4 tuần, khi nó vượt dưới 30 trong khu vực quá bán, được coi là thị trường có thể phục hồi. Tại thời điểm này, đánh giá liệu mức cao mới của tham số ngày ngắn có thể phá vỡ mức cao mới gần đây của tham số ngày dài, cho thấy xu hướng ngắn hạn đang tăng cường. Nếu các điều kiện trên được đáp ứng cùng một lúc, một tín hiệu dài được phát hành.

Sau khi tham gia thị trường, sử dụng các số nhân chỉ số ATR như phạm vi lợi nhuận và dừng lỗ ở một tỷ lệ phần trăm nhất định của điểm cao giá đóng cửa.

Ưu điểm của Chiến lược

Chiến lược có những lợi thế sau:

  1. Sử dụng chỉ số RSI để xác định các điểm đảo ngược với khả năng thời gian tốt.

  2. Áp dụng cơ chế cao và thấp mới để tránh tín hiệu sai.

  3. Sử dụng ATR để kiếm lợi nhuận và dừng lỗ để tự động theo dõi điểm thoát tối ưu.

  4. Các thiết lập tham số linh hoạt có thể được điều chỉnh đến mức tối ưu.

  5. Ý tưởng chiến lược là rõ ràng và dễ hiểu, với sự ổn định mạnh mẽ.

Rủi ro của chiến lược

Chiến lược này cũng có những rủi ro sau:

  1. Chỉ số RSI có thể phát ra một tín hiệu sai, dẫn đến thời gian không phù hợp. Các thông số RSI có thể được điều chỉnh phù hợp, hoặc các chỉ số khác có thể được thêm để lọc.

  2. Phạm vi lợi nhuận ATR có thể được đặt quá lớn hoặc quá nhỏ để khóa lợi nhuận tối đa.

  3. Điểm dừng lỗ quá gần và có thể bị phá vỡ.

  4. Dữ liệu backtest không đủ có thể đánh giá quá cao tỷ lệ lợi nhuận của chiến lược.

Tối ưu hóa chiến lược

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kiểm tra và tối ưu hóa các thông số RSI và nhân lợi nhuận và lỗ để tìm sự kết hợp thông số tốt nhất.

  2. Tăng các chỉ số khác để cải thiện độ chính xác chiến lược.

  3. Tối ưu hóa cơ chế dừng lỗ và điều chỉnh năng động theo phạm vi biến động ATR.

  4. Kiểm tra hiệu quả hiệu suất trên các loại giao dịch khác nhau. Chọn các loại có thanh khoản tốt và biến động cao.

  5. So sánh hiệu suất của các loại dừng lỗ khác nhau. chẳng hạn như dừng lỗ tỷ lệ, dừng lỗ di chuyển, vv

Tóm lại

Chiến lược này hoạt động tổng thể rõ ràng và trơn tru, lựa chọn chỉ số và cài đặt tham số là hợp lý, và nó có tính thực tế mạnh mẽ. Vẫn còn chỗ để cải thiện hơn nữa thông qua tối ưu hóa tham số và cải thiện cơ chế. Nhìn chung, chiến lược có khả năng tương đối cao để kiếm được lợi nhuận ổn định. Nó đáng để gỡ lỗi trong các giao dịch thực tế và đưa vào sử dụng.


/*backtest
start: 2023-02-05 00:00:00
end: 2024-01-18 05:20:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//A translation from info found at http://backtestwizard.com/swing-trading-system-for-stocks/
strategy("Swing Trading System RSI", overlay=true)
source = close[1]

longperiod = input(26,"long week",minval=2,maxval=500,step=1)
s = request.security(syminfo.tickerid, "W", sma(close[1], longperiod)) // 1 Day
plot(s)

shortdays = input(21,"short days high period",minval=2,maxval=500,step=1)
longdays = input(50,"long days high period",minval=2,maxval=500,step=1)
rsiperiod = input(4,"rsi period",minval=2,maxval=500,step=1)
rsithresh = input(30,"rsi thresh",minval=2,maxval=500,step=1)

highcheck = highest(source,shortdays) == highest(source,longdays)
rsicheck = crossunder(rsi(source,rsiperiod),rsithresh)

longCondition = (highcheck) and (rsicheck) and source > s
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

profittarget = input(3,"profit target",minval=2,maxval=500,step=1)
stoploss = input(2,"stop target",minval=2,maxval=500,step=1)

exitCondition1 = source > strategy.position_avg_price + (atr(50) * profittarget)
exitCondition2 = source <  strategy.position_avg_price - (atr(50) * stoploss)

if (exitCondition1)
    strategy.close_all()
if (exitCondition2)
    strategy.close_all()


Thêm nữa