Chiến lược kiểm tra ngược dựa trên chỉ số biến đổi Fisher

Tác giả:ChaoZhang, Ngày: 2024-01-25 14:22:36
Tags:

img

Tổng quan

Chiến lược này là một chiến lược kiểm tra ngược dựa trên chỉ số biến đổi Fisher. Công thức biến đổi Fisher có thể chuyển đổi dữ liệu giá thành một phân bố bình thường để xác định mức giá cực và điểm chuyển đổi. Chiến lược này kết hợp chỉ số biến đổi Fisher để xác định xu hướng giá và đạt được giao dịch tự động.

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

  1. Tính toán chỉ số HL2
  2. Tính toán tối đa xMaxH và tối thiểu xMinL của HL2 trong thời gian dài gần đây nhất
  3. Tính toán chỉ số biến đổi Fisher:
    • nValue1 là 0,33 × (HL2 tiêu chuẩn) + 0,67 × nValue1 của giai đoạn trước
    • nValue2 giới hạn nValue1 giữa -0,99 và 0,99
    • nFish là chuyển đổi logaritm của nValue2
  4. Xác định xem nFish là dương tính hoặc âm tính để xác định hướng vị trí
  5. Định vị tín hiệu possig, nếu giao dịch ngược được thiết lập, có vị trí ngược lại
  6. Tín hiệu đầu vào: possig=1 cho dài, possig=-1 cho ngắn

Phân tích lợi thế

  1. Chỉ số biến đổi Fisher có thể xác định mức giá cực đoan và điểm chuyển đổi để xác định chính xác xu hướng
  2. Việc lọc biến động bằng cách kết hợp các chỉ số HL2 làm tăng tỷ lệ thắng
  3. Giao dịch ngược có thể được thiết lập để thích nghi với môi trường thị trường khác nhau
  4. Giao dịch tự động mà không cần đánh giá bằng tay làm giảm chi phí giao dịch

Phân tích rủi ro

  1. Chỉ số biến đổi Fisher có trễ và có thể bỏ lỡ các thay đổi giá ngắn hạn
  2. Rủi ro dừng lỗ cao trong xu hướng biến động
  3. Các thiết lập giao dịch ngược không đúng có thể dẫn đến các giao dịch sai lầm hệ thống
  4. Thiếu xác minh chu kỳ chéo, có một số rủi ro dương tính sai

Giải pháp rủi ro:

  1. Điều chỉnh các thông số phù hợp để rút ngắn thời gian trễ
  2. Tăng phạm vi dừng lỗ để kiểm soát lỗ giao dịch duy nhất
  3. Tối ưu hóa giao dịch ngược kết hợp với các chỉ số khác để lọc
  4. Tăng nhiều cơ chế xác minh xu hướng, mức giá, chu kỳ vv

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

  1. Kết hợp các chỉ số xu hướng để đảm bảo các xu hướng chính là phù hợp
  2. Tăng các chỉ số chu kỳ để cải thiện độ chính xác của phán đoán đảo ngược giá
  3. Kiểm tra nhiều khung thời gian để tránh kết quả dương tính sai
  4. Điều chỉnh động phạm vi dừng mất mát
  5. Tối ưu hóa các thông số để tối đa hóa tỷ lệ thắng và yếu tố lợi nhuận

Các tối ưu hóa trên có thể cải thiện hơn nữa tỷ lệ chiến thắng của chiến lược, khóa lợi nhuận, kiểm soát rủi ro và đạt được kết quả giao dịch ổn định và hiệu quả hơn.

Tóm lại

Chiến lược kiểm tra lại chỉ số biến đổi Fisher tích hợp chỉ số biến đổi Fisher để xác định các điểm đảo ngược giá và hướng xu hướng. Chiến lược này có phán đoán chính xác và mức độ tự động hóa cao. Thông qua tối ưu hóa tham số, kết quả giao dịch ổn định và hiệu quả có thể đạt được. Nhưng cũng có một số rủi ro như chậm trễ và dương tính sai.


/*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 = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v2.0 22/12/2016
// 	Market prices do not have a Gaussian probability density function
// 	as many traders think. Their probability curve is not bell-shaped.
// 	But trader can create a nearly Gaussian PDF for prices by normalizing
// 	them or creating a normalized indicator such as the relative strength
// 	index and applying the Fisher transform. Such a transformed output 
// 	creates the peak swings as relatively rare events.
// 	Fisher transform formula is: y = 0.5 * ln ((1+x)/(1-x))
// 	The sharp turning points of these peak swings clearly and unambiguously
// 	identify price reversals in a timely manner. 
//
//  For signal used zero. 
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Fisher Transform Indicator by Ehlers Backtest", shorttitle="Fisher Transform Indicator by Ehlers")
Length = input(10, minval=1)
reverse = input(false, title="Trade reverse")
hline(1, color=white)
xHL2 = hl2
xMaxH = highest(xHL2, Length)
xMinL = lowest(xHL2,Length)
nValue1 = 0.33 * 2 * ((xHL2 - xMinL) / (xMaxH - xMinL) - 0.5) + 0.67 * nz(nValue1[1])
nValue2 =   iff(nValue1 > .99,  .999,
	         iff(nValue1 < -.99, -.999, nValue1))
nFish = 0.5 * log((1 + nValue2) / (1 - nValue2)) + 0.5 * nz(nFish[1])
pos = iff(nFish > 0, 1,
	   iff(nFish < 0, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
// barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nFish, color=green, title="Fisher")
plot(nz(nFish[1]), color=red, title="Trigger")

Thêm nữa