Random Fisher biến đổi tạm dừng đảo ngược chỉ số STOCH Chiến lược định lượng

Tác giả:ChaoZhang, Ngày: 2024-01-02 11:14:12
Tags:

img

Tổng quan

Ý tưởng cốt lõi của chiến lược này là kết hợp biến đổi ngẫu nhiên của Fisher và chỉ số STOCH tạm thời để đưa ra quyết định mua và bán.

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 đó thực hiện biến đổi Fisher trên nó để có được INVLine. Khi INVLine vượt qua ngưỡng dưới dl, một tín hiệu mua được tạo ra. Khi INVLine vượt qua ngưỡng trên ul, một tín hiệu bán được tạo ra. Đồng thời, chiến lược này cũng thiết lập một cơ chế dừng lại để khóa lợi nhuận và giảm lỗ.

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. Biến đổi Fisher: Thực hiện biến đổi Fisher trên giá trị STOCH để có được INVLine
  3. Tạo tín hiệu giao dịch: Mua khi INVLine vượt trên dl, bán khi vượt dưới ul
  4. Chặn sau: Cho phép cơ chế theo dõi dừng tạm thời để dừng lỗ kịp thời

Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. Biến đổi Fisher hiệu quả cải thiện độ nhạy của chỉ số STOCH và có thể phát hiện các cơ hội đảo ngược xu hướng sớm hơn
  2. Cơ chế dừng tạm thời có thể kiểm soát hiệu quả rủi ro và khóa lợi nhuận
  3. Nó phù hợp với các giao dịch trung hạn, đặc biệt là giao dịch định lượng tần số cao phổ biến hiện nay
  4. Nó hoạt động tốt trong điều kiện thị trường ổn định với 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 có xu hướng tạo ra các tín hiệu sai, có thể gây ra giao dịch không cần thiết
  2. Các biến đổi Fisher cũng khuếch đại tiếng ồn của chỉ báo STOCH, dẫn đến nhiều tín hiệu sai
  3. Thật dễ dàng để dừng lỗ trong thị trường dao động và không thể tạo ra lợi nhuận bền vững
  4. Thời gian giữ tương đối ngắn là cần thiết để có được Alpha.

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

  1. Điều chỉnh các thông số STOCH để làm mịn đường cong và giảm tiếng ồn
  2. Tối ưu hóa các vị trí đường ngưỡng để giảm xác suất giao dịch sai
  3. Thêm điều kiện lọc để tránh giao dịch trên thị trường dao động
  4. Điều chỉnh thời gian giữ để phù hợp với chu kỳ hoạt động

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

Các hướng chính để tối ưu hóa chiến lược này bao gồm:

  1. Tối ưu hóa các tham số của biến đổi Fisher để đường cong INVLine trơn tru
  2. Tối ưu hóa thời gian STOCH để tìm kết hợp tham số tối ưu
  3. Tối ưu hóa các thông số đường ngưỡng để giảm xác suất giao dịch sai
  4. Thêm xác nhận giá khối lượng để tránh dừng kéo không cần thiết
  5. Thêm bộ lọc đột phá trong ngày để giảm tín hiệu sai trong thị trường dao động
  6. Bao gồm các chỉ số xu hướng để tránh giao dịch ngược xu hướng

Kết luận

Chiến lược này kết hợp 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ắn hạn đơn giản và thực tế. Ưu điểm của nó nằm ở tần số hoạt động cao, phù hợp với giao dịch định lượng tần số cao phổ biến hiện nay. Đồ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 chung. Các thông số và điều kiện lọc cần được tối ưu hóa để giảm rủi ro và cải thiện sự ổn định. Nói chung, chiến lược này cung cấp một ý tưởng tốt cho giao dịch định lượng đơn giản và đáng nghiên cứu sâu hơn.


/*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)


Thêm nữa