Biến đổi Stochastic Fisher tạm thời dừng đảo ngược Chiến lược định lượng chỉ báo STOCH


Ngày tạo: 2024-01-02 11:14:12 sửa đổi lần cuối: 2024-01-02 11:14:12
sao chép: 0 Số nhấp chuột: 656
1
tập trung vào
1621
Người theo dõi

Biến đổi Stochastic Fisher tạm thời dừng đảo ngược Chiến lược định lượng chỉ báo STOCH

Tổng quan

Ý tưởng cốt lõi của chiến lược này là kết hợp các biến đổi ngẫu nhiên của Fisher và các chỉ số STOCH tạm thời dừng để đưa ra quyết định mua và bán. Chiến lược này phù hợp với hoạt động ngắn hạn và trung bình, có thể mang lại lợi nhuận tốt trong điều kiện ổn định.

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

Chiến lược này đầu tiên tính toán chỉ số STOCH tiêu chuẩn, sau đó biến đổi nó thành INVLine. Khi INVLine vượt qua đường giới hạn dl, tạo ra tín hiệu mua; Khi INVLine vượt qua đường giới hạn ul, tạo ra tín hiệu bán.

Cụ thể, logic cốt lõi của chiến lược này là:

  1. Tính toán chỉ số STOCH: Sử dụng công thức tiêu chuẩn để tính giá trị STOCH nhanh của cổ phiếu
  2. Chuyển đổi Fisher: Chuyển đổi Fisher cho giá trị STOCH để có được INVLine
  3. Tạo tín hiệu giao dịch: mua khi đi dl trên INVLine, bán khi đi dul
  4. Tracking Stop Loss: Khởi động hệ thống tạm dừng theo dõi để dừng lỗ

Phân tích lợi thế

Chiến lược này có những lợi thế chính như sau:

  1. Biến đổi Fisher có hiệu quả trong việc nâng cao độ nhạy của chỉ số STOCH, giúp phát hiện cơ hội đảo ngược xu hướng sớm hơn
  2. Cơ chế tạm thời ngừng theo dõi có thể kiểm soát rủi ro và khóa lợi nhuận
  3. Thích hợp cho hoạt động ngắn hạn, đặc biệt là giao dịch số hóa nhanh chóng phổ biến gần đây
  4. Trong một thời kỳ ổn định, lợi nhuận ổn định

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Chỉ số STOCH dễ tạo ra các tín hiệu sai, có thể dẫn đến giao dịch không cần thiết
  2. Biến đổi Fisher cũng làm tăng tiếng ồn của chỉ số STOCH, mang lại nhiều tín hiệu giả hơn
  3. Trong một thời kỳ khủng hoảng, người ta có thể dễ dàng dừng lỗ và rút lui, nhưng không thể tiếp tục có lợi nhuận.
  4. Cần một thời gian nắm giữ ngắn hơn để có được Alpha, không phù hợp để nắm giữ quá lâu

Để giảm thiểu những rủi ro này, bạn có thể xem xét tối ưu hóa các khía cạnh sau:

  1. Điều chỉnh tham số STOCH, làm mịn đường cong, giảm tiếng ồn
  2. Tối ưu hóa vị trí của các đường viền để giảm khả năng giao dịch sai
  3. Tăng các điều kiện lọc để tránh giao dịch trong tình trạng chấn động
  4. Điều chỉnh thời gian nắm giữ để phù hợp với chu kỳ hoạt động

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Tối ưu hóa tham số của biến đổi Fisher, làm mịn đường cong INVLine
  2. Tối ưu hóa độ dài của chỉ số STOCH period, tìm kiếm sự kết hợp tham số tốt nhất
  3. Tối ưu hóa các tham số của đường thâm hụt để giảm khả năng giao dịch sai
  4. Tăng xác nhận số lượng, tránh mất mát theo dõi không cần thiết
  5. Tăng bộ lọc đột phá trong ngày, giảm tín hiệu giả của thị trường rung động
  6. Kết hợp các chỉ số xu hướng để tránh giao dịch ngược

Tóm tắt

Chiến lược này sử dụng sự biến đổi ngẫu nhiên của Fisher và chỉ số STOCH để thực hiện một chiến lược định lượng đường ngắn đơn giản và thực tế. Ưu điểm của nó là hoạt động với tần số cao, phù hợp với giao dịch định lượng tần số cao phổ biến gần đây. Đồng thời, chiến lược này cũng có một số rủi ro chiến lược chỉ số kỹ thuật phổ biến, cần tối ưu hóa các tham số và điều kiện lọc, giảm rủi ro và tăng sự ổn định.

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

//@version=3
strategy("IFT Stochastic + Trailing Stop", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//INPUTS
stochlength=input(19, "STOCH Length")
wmalength=input(4, title="Smooth")
ul = input(0.64,step=0.01, title="UP line")
dl = input(-0.62,step=0.01, title="DOWN line")
uts = input(true, title="Use trailing stop")
tsi = input(title="trailing stop actiation pips",defval=245)                                                                       
tso = input(title="trailing stop offset pips",defval=20)

//CALCULATIONS
v1=0.1*(stoch(close, high, low, stochlength)-50)
v2=wma(v1, wmalength)
INVLine=(exp(2*v2)-1)/(exp(2*v2)+1)

//CONDITIONS
sell = crossunder(INVLine,ul)? 1 : 0
buy = crossover(INVLine,dl)? 1 : 0

//PLOTS
plot(INVLine, color=aqua, linewidth=1, title="STOCH")
hline(ul, color=red)
hline(dl, color=green)
bgcolor(sell==1? red : na, transp=30, title = "sell signal")
bgcolor(buy==1? lime : na, transp=30, title = "buy signal")
plotchar(buy==1, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(sell==1, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)

//STRATEGY
strategy.entry("BUY", strategy.long, when = buy==1)
strategy.entry("SELL", strategy.short, when = sell==1)

if  (uts)
    strategy.entry("BUY", strategy.long, when = buy)
    strategy.entry("SELL", strategy.short, when = sell)
    strategy.exit("Close BUY with TS","BUY", trail_points = tsi, trail_offset = tso)
    strategy.exit("Close SELL with TS","SELL", trail_points = tsi, trail_offset = tso)