RSI Chiến lược xu hướng cá sấu

Tác giả:ChaoZhang, Ngày: 2024-01-29 14:40:07
Tags:

img

Tổng quan

Chiến lược xu hướng cá sấu RSI dựa trên sự kết hợp của chỉ số RSI và chỉ số cá sấu để xác định bước vào và bước ra của xu hướng. Nó sử dụng ba đường trung bình động - đường hàm cá sấu, đường răng và đường môi, được xây dựng bởi RSI của các giai đoạn khác nhau. Nó sẽ dài khi đường răng vượt qua đường môi và đường hàm RSI cao hơn đường răng; nó sẽ ngắn khi đường răng vượt qua dưới đường môi và đường hàm RSI thấp hơn đường răng. Chiến lược cũng thiết lập điều kiện dừng lỗ và lấy lợi nhuận.

Chiến lược logic

Chiến lược RSI Alligator Trend xây dựng ba đường của chỉ số Alligator bằng cách sử dụng chỉ số RSI.

  • Đường hàm: Đường RSI 5 giai đoạn
  • Đường răng: Đường RSI 13 giai đoạn
  • Đường môi: Đường RSI 34 thời gian

Logic tín hiệu đầu vào là:

Tín hiệu dài: khi đường răng vượt qua đường môi và đường hàm cao hơn đường răng, đi dài.

Tín hiệu ngắn: khi đường răng vượt qua dưới đường môi và đường hàm thấp hơn đường răng, hãy đi ngắn.

Chiến lược cũng thiết lập các điều kiện dừng lỗ và lấy lợi nhuận:

  • Stop loss được thiết lập ở mức 10% dưới giá nhập cảnh
  • Lợi nhuận được đặt ở mức 90% trên giá nhập cảnh

Phân tích sức mạnh

Chiến lược RSI Alligator Trend có những điểm mạnh sau:

  1. Sử dụng các đường Alligator để xác định xu hướng có thể lọc hiệu quả tiếng ồn thị trường và khóa trong xu hướng chính
  2. Kết hợp RSI nhiều giai đoạn tránh đột phá sai và cải thiện độ tin cậy tín hiệu
  3. Đặt các điều kiện dừng lỗ và lấy lợi nhuận hợp lý giúp ổn định hoạt động chiến lược
  4. Ý tưởng chiến lược là rõ ràng và dễ hiểu, các thiết lập tham số là đơn giản, và nó dễ dàng để thực hiện cho giao dịch trực tiếp
  5. Nó có thể đi cả dài và ngắn, xem xét cả hai hướng của xu hướng và có sự linh hoạt mạnh mẽ

Phân tích rủi ro

Chiến lược RSI Alligator Trend cũng có những rủi ro sau:

  1. Có thể có sự đột quỵ sai ở vị trí chéo giữa đường răng và đường môi, dẫn đến tổn thất không cần thiết. Các thông số chu kỳ có thể được điều chỉnh để giảm xác suất đột quỵ sai.

  2. Cài đặt stop loss có thể quá hung hăng, với xác suất cao của stop loss không cần thiết.

  3. Nếu thị trường di chuyển mạnh mẽ, stop loss có thể không thể đóng vai trò bảo vệ lợi nhuận đúng cách.

  4. Khi các vị trí dài và ngắn thường xuyên chuyển đổi, áp lực chi phí giao dịch lớn hơn. Các điều kiện nhập cảnh có thể được nới lỏng thích hợp để giảm đi lại không cần thiết.

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

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

  1. Tối ưu hóa các thiết lập tham số dòng Alligator để tìm kết hợp tham số tốt nhất

  2. Tối ưu hóa logic điều kiện nhập cảnh, chẳng hạn như thêm các chỉ số như khối lượng giao dịch để lọc tín hiệu

  3. Tối ưu hóa các chiến lược lấy lợi nhuận và dừng lỗ để làm cho chúng thích nghi hơn với điều kiện thị trường và mức ký quỹ

  4. Thêm các cơ chế để đối phó với các sự kiện cực đoan và tránh tiếp xúc với điều kiện thị trường bất thường

  5. Thêm các thuật toán vị trí mở để kiểm soát tỷ lệ vốn đầu tư vào một giao dịch duy nhất để giảm thiểu rủi ro

Kết luận

Nói chung, chiến lược RSI Alligator Trend là một chiến lược theo xu hướng đáng tin cậy và dễ sử dụng. Nó sử dụng chỉ số Alligator để xác định hướng xu hướng, kết hợp với chỉ số RSI để thiết lập ngưỡng tham chiếu, có thể khóa hiệu quả xu hướng và thiết lập các điểm thoát hợp lý. Đồng thời, chính chiến lược cũng có tính linh hoạt và mở rộng mạnh mẽ, làm cho nó có giá trị cho giao dịch trực tiếp và tối ưu hóa hơn nữa.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=3
// RSI Alligator
// Forked from Author: Reza Akhavan
// Updated by Khalid Salomão

strategy("RSI Alligator Strategy", overlay=false, pyramiding=0, default_qty_type=strategy.cash, default_qty_value=25000, initial_capital=25000, commission_type=strategy.commission.percent, commission_value=0.15, slippage=3)

// === TA LOGIC ===
overBought = input(70, minval=0, maxval=100, title="Over bought")
overSold = input(30, minval=0, maxval=100, title="Over sold")
jawPeriods = input(5, minval=1, title="Jaw Periods")
jawOffset = input(0, minval=0, title="Jaw Offset")
teethPeriods = input(13, minval=1, title="Teeth Periods")
teethOffset = input(0, minval=0, title="Teeth Offset")
lipsPeriods = input(34, minval=1, title="Lips Periods")
lipsOffset = input(0, minval=0, title="Lips Offset")

jaws = rsi(close, jawPeriods)
teeth = rsi(close, teethPeriods)
lips = rsi(close, lipsPeriods)
plot(jaws, color=green, offset=jawOffset, title="Jaw")
plot(teeth, color=red, offset=teethOffset, title="Teeth")
plot(lips, color=blue, offset=lipsOffset, title="Lips")

//
// === Signal logic ===
// 
LONG_SIGNAL_BOOLEAN  = crossover(teeth, lips) and jaws > teeth
SHORT_SIGNAL_BOOLEAN = crossunder(teeth, lips) and jaws < teeth

// === INPUT BACKTEST DATE RANGE ===
strategyType = input(defval="Long Only", options=["Long & Short", "Long Only", "Short Only"])

FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        
window()  => true

// === STRATEGY BUY / SELL ENTRIES ===

// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy()  => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN

if buy()
    if (strategyType == "Short Only")
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long, comment="Long")

if sell()
    if (strategyType == "Long Only")
        strategy.close("Long")
    else
        strategy.entry("Short", strategy.short, comment="Short")
        

// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(90, title='Take Profit %', type=float)/100

stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)

strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)

Thêm nữa