Ehlers Fisher chuyển đổi chiến lược giao dịch

Tác giả:ChaoZhang, Ngày: 2024-01-08 16:51:10
Tags:

img

Tổng quan

Chiến lược này dựa trên chỉ số Fisher Transform được thiết kế bởi chuyên gia phân tích kỹ thuật John Ehlers để tự động xác định các điểm đảo ngược xu hướng giá cho giao dịch dài / ngắn.

Chiến lược logic

Chiến lược này sử dụng công thức biến đổi Fisher để tiêu chuẩn hóa giá và tạo ra một chuỗi giá phân bố gần Gauss. Công thức biến đổi Fisher là: y = 0.5 * ln ((((1 + x) / ((1-x)). Thông qua biến đổi này, giá cực đoan được chuyển đổi thành các sự kiện tương đối hiếm. Khi giá biến đổi Fisher mới nhất cao hơn / thấp hơn so với giai đoạn trước, nó chỉ ra một sự đảo ngược giá có thể xảy ra. Chiến lược tạo ra các tín hiệu giao dịch dựa trên các bước ngoặt của chỉ số này.

Cụ thể, các bước chiến lược là như sau:

  1. Tính toán giá trung bình HL2;
  2. Tính toán giá cao nhất xMaxH và giá thấp nhất xMinL trong khoảng thời gian Length;
  3. Tính toán giá chuẩn nValue1=(xHL2 - xMinL) / (xMaxH - xMinL) - 0,5;
  4. Lượt nValue1 để có được nValue2, ngăn ngừa cực đoan;
  5. Áp dụng công thức biến đổi Fisher trên nValue2 để có được chỉ số Fisher nFish;
  6. So sánh nFish với giá trị trước để xác định xem có quay không, và đặt hướng giao dịch pos;
  7. Thiết lập vị trí dài / ngắn dựa trên POS để tạo ra tín hiệu giao dịch.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là độ chính xác và kịp thời của các tín hiệu giao dịch. Bởi vì chuỗi giá biến đổi Fisher gần như phân bố Gauss, sự đảo ngược giá có thể được xác định và phản ứng nhanh chóng bởi chỉ số Fisher. Điều này đảm bảo nắm bắt kịp thời các cơ hội đảo ngược. Ngoài ra, biến đổi Ehlers Fisher cũng đã được xác nhận rộng rãi cho các tín hiệu đảo ngược rất đáng tin cậy.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược này là chuỗi giá biến đổi của Fisher có thể không hoàn toàn phù hợp với phân bố Gauss lý thuyết. Sự biến động thị trường bất thường như khoảng cách có thể khiến chỉ số Fisher tạo ra các tín hiệu không chính xác. Giao dịch mù quáng trên các tín hiệu đó có thể dẫn đến tổn thất lớn.

Để giảm thiểu rủi ro này, chúng ta có thể xem xét kết hợp các chỉ số khác để lọc tín hiệu, tránh giao dịch trong thị trường bất thường.

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

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

  1. Tối ưu hóa tham số Length để tìm kết hợp tốt nhất cho các điều kiện thị trường khác nhau;
  2. Thêm các cơ chế dừng lỗ để hạn chế downside;
  3. Thêm các bộ lọc giao dịch để tránh giao dịch không chính xác trên thị trường bất thường;
  4. Kết hợp với các chỉ số khác để cải thiện độ chính xác tín hiệu.

Kết luận

Chiến lược này tận dụng chỉ số biến đổi Ehlers Fisher để nhanh chóng và chính xác xác xác định các điểm đảo ngược giá cho các mục nhập giao dịch kịp thời. Sức mạnh lớn nhất của nó nằm ở độ chính xác và kịp thời của các tín hiệu giao dịch.


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

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/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. 
//
// 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")
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 > nz(nFish[1]), 1,
	   iff(nFish < nz(nFish[1]), -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