Chiến lược giao dịch năng động thích ứng dựa trên lợi nhuận logarit chuẩn hóa

SZI SMA LOG STD
Ngày tạo: 2024-12-27 14:39:32 sửa đổi lần cuối: 2024-12-27 14:39:32
sao chép: 2 Số nhấp chuột: 376
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch năng động thích ứng dựa trên lợi nhuận logarit chuẩn hóa

Tổng quan

Chiến lược này là một hệ thống giao dịch tự điều chỉnh dựa trên chỉ số Shiryaev-Zhou (SZI). Nó xác định tình trạng quá mua và quá bán của thị trường bằng cách tính toán điểm chuẩn hóa của tỷ lệ lợi nhuận đối số, do đó nắm bắt cơ hội quay trở lại giá trị trung bình. Chiến lược kết hợp các mục tiêu dừng lỗ và lợi nhuận động và kiểm soát rủi ro chính xác.

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

Cốt lõi của chiến lược là xây dựng các chỉ số tiêu chuẩn hóa thông qua các đặc điểm thống kê cuộn của tỷ lệ lợi nhuận đối số. Các bước cụ thể sau:

  1. Tính lãi suất đối số để thực hiện xử lý chính thức lãi suất
  2. Tính toán trung bình xoay và chênh lệch chuẩn bằng cửa sổ 50 chu kỳ
  3. Xây dựng chỉ số SZI: (tỷ lệ lãi suất đối số - trung bình cuộn) / chênh lệch tiêu chuẩn cuộn
  4. Khi SZI thấp hơn -2.0 tạo ra tín hiệu làm nhiều, cao hơn 2.0 tạo ra tín hiệu làm trống
  5. Thiết lập mức dừng lỗ 2% và mức dừng 4% dựa trên giá nhập

Lợi thế chiến lược

  1. Nền tảng lý thuyết vững chắc: dựa trên giả định phân bố chính xác đối số, có hỗ trợ thống kê tốt
  2. Khả năng thích ứng: có thể thích ứng với sự thay đổi của các đặc điểm biến động của thị trường thông qua tính toán cửa sổ lăn
  3. Kiểm soát rủi ro tốt: Sử dụng chiến lược dừng phần trăm để kiểm soát chính xác rủi ro trên mỗi giao dịch
  4. Hiển thị thân thiện: đánh dấu rõ ràng trên biểu đồ các tín hiệu giao dịch và mức độ kiểm soát rủi ro

Rủi ro chiến lược

  1. Tính nhạy cảm của tham số: lựa chọn chiều dài cửa sổ cuộn và giá trị threshold có thể ảnh hưởng đáng kể đến hiệu suất của chiến lược
  2. Tùy thuộc vào môi trường thị trường: có thể tạo ra các tín hiệu sai lệch thường xuyên trong thị trường xu hướng
  3. Tác động điểm trượt: Trong thời gian biến động mạnh, giá giao dịch thực tế có thể lệch đáng kể khỏi mức độ lý tưởng
  4. Tính toán chậm trễ: Tính toán số liệu thống kê trong thời gian thực có thể tạo ra một số dấu hiệu chậm trễ

Hướng tối ưu hóa chiến lược

  1. Động thái giảm giá: Có thể xem xét động thái điều chỉnh tín hiệu giảm giá theo biến động thị trường
  2. Nhiều chu kỳ thời gian: cơ chế xác nhận tín hiệu được giới thiệu trong nhiều chu kỳ thời gian
  3. Bộ lọc tỷ lệ biến động: tạm dừng giao dịch hoặc điều chỉnh vị trí trong thời gian biến động cực độ
  4. Xác nhận tín hiệu: tăng khối lượng giao thông, động lực và các chỉ số hỗ trợ để xác nhận tín hiệu
  5. Quản lý vị trí: thực hiện quản lý vị trí động dựa trên biến động

Tóm tắt

Đây là một chiến lược giao dịch định lượng được xây dựng trên cơ sở thống kê vững chắc, nắm bắt cơ hội biến động giá bằng cách tiêu chuẩn hóa lợi nhuận đối số. Ưu điểm chính của chiến lược là khả năng tự điều chỉnh và kiểm soát rủi ro tốt, nhưng vẫn có không gian để tối ưu hóa về lựa chọn tham số và thích ứng với môi trường thị trường.

Mã nguồn chiến lược
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Jalambi Paul model", overlay=true)

// Define the length for the rolling window
window = input.int(50, title="Window Length", minval=1)
threshold = 2.0 // Fixed threshold value
risk_percentage = input.float(1.0, title="Risk Percentage per Trade", step=0.1) / 100

// Calculate the logarithmic returns
log_return = math.log(close / close[1])

// Calculate the rolling mean and standard deviation
rolling_mean = ta.sma(log_return, window)
rolling_std = ta.stdev(log_return, window)

// Calculate the Shiryaev-Zhou Index (SZI)
SZI = (log_return - rolling_mean) / rolling_std

// Generate signals based on the fixed threshold
long_signal = SZI < -threshold
short_signal = SZI > threshold

// Plot the signals on the main chart (overlay on price)
plotshape(series=long_signal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY", offset=-1)
plotshape(series=short_signal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL", offset=-1)

// Strategy logic: Buy when SZI crosses below the negative threshold, Sell when it crosses above the positive threshold
if (long_signal)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    
if (short_signal)
    strategy.entry("Sell", strategy.short, comment="Short Entry")

// Calculate the stop loss and take profit levels based on the percentage of risk
stop_loss_pct = input.float(2.0, title="Stop Loss (%)") / 100
take_profit_pct = input.float(4.0, title="Take Profit (%)") / 100

// Set the stop loss and take profit levels based on the entry price
strategy.exit("Take Profit / Stop Loss", "Buy", stop=close * (1 - stop_loss_pct), limit=close * (1 + take_profit_pct))
strategy.exit("Take Profit / Stop Loss", "Sell", stop=close * (1 + stop_loss_pct), limit=close * (1 - take_profit_pct))

// Plot the stop loss and take profit levels for visualization (optional)
plot(stop_loss_pct != 0 ? close * (1 - stop_loss_pct) : na, color=color.red, linewidth=1, title="Stop Loss Level")
plot(take_profit_pct != 0 ? close * (1 + take_profit_pct) : na, color=color.green, linewidth=1, title="Take Profit Level")