Chiến lược giao dịch của Ehlers dựa trên phép biến đổi Fisher


Ngày tạo: 2024-01-08 16:51:10 sửa đổi lần cuối: 2024-01-08 16:51:10
sao chép: 1 Số nhấp chuột: 1062
1
tập trung vào
1664
Người theo dõi

Chiến lược giao dịch của Ehlers dựa trên phép biến đổi Fisher

Tổng quan

Chiến lược này dựa trên chỉ số chuyển đổi Fisher được thiết kế bởi chuyên gia phân tích kỹ thuật John Ehlers, có thể tự động xác định điểm đảo ngược xu hướng giá, giao dịch tự động ngắn và dài. Ưu điểm lớn nhất của nó là tính chính xác và kịp thời của việc xác định sự đảo ngược giá.

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

Chiến lược này sử dụng công thức chuyển đổi Fischer để tiêu chuẩn hóa giá, tạo ra một chuỗi giá có phân bố Gaussian gần như. Công thức chuyển đổi Fischer là: y = 0.5 * ln (((1+x) / ((1-x))). Bằng cách chuyển đổi này, giá trị cực đoan có thể được chuyển đổi thành các sự kiện tương đối hiếm hơn.

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

  1. Tính trung bình là HL2.
  2. Tính giá xMaxH và giá xMinL trong chu kỳ Length;
  3. Tính toán giá tiêu chuẩn nValue1=(xHL2 - xMinL) / (xMaxH - xMinL) - 0.5;
  4. xử lý nValue1 để tạo ra nValue2 và tránh lấy cực;
  5. Áp dụng công thức chuyển đổi Fisher cho nValue2 để có được chỉ số chuyển đổi Fisher nFish;
  6. So sánh nFish với giá trị của kỳ trước đó, để xác định xem có chuyển đổi hay không và đặt hướng giao dịch pos;
  7. Các tín hiệu giao dịch được phát ra dựa trên hướng đặt hàng của POS.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là tính chính xác và kịp thời của tín hiệu giao dịch của nó. Do chuỗi giá được tạo ra bởi chuyển đổi Fischer gần như phù hợp với phân phối Gaussian, khi giá bị đảo ngược, chỉ số chuyển đổi Fischer có thể xác định nhanh chóng và phản ứng thích hợp. Điều này đảm bảo nắm bắt cơ hội đảo ngược kịp thời. Ngoài ra, chỉ số chuyển đổi Fischer của Ehlers đã được chứng minh lâu dài và chính xác của tín hiệu đảo ngược cũng 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á sau khi chuyển đổi Fischer không nhất thiết phải hoàn toàn phù hợp với phân bố Gaussian hợp lý. Khi thị trường có biến động bất thường, chẳng hạn như phân rã, nhảy vọt, v.v., nó có thể dẫn đến tín hiệu chuyển đổi Fischer gửi đi tín hiệu sai. Trong thời điểm này, nếu vẫn giao dịch máy móc, có thể gây thiệt hại lớn hơn.

Để giảm nguy cơ này, bạn có thể xem xét lọc tín hiệu giao dịch kết hợp với các chỉ số khác để tránh giao dịch khi thị trường bất thường. Hoặc bạn có thể điều chỉnh các tham số thích hợp, giảm tần suất giao dịch và quy mô lỗ đơn.

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

Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tối ưu hóa các tham số Length để tìm ra sự kết hợp tốt nhất trong các điều kiện thị trường khác nhau;
  2. Tăng các cơ chế ngăn chặn thiệt hại, hạn chế tổn thất đơn lẻ;
  3. Tăng bộ lọc giao dịch để tránh các giao dịch sai lệch trong thị trường bất thường;
  4. Kết hợp các chỉ số khác với chiến lược kết hợp để cải thiện độ chính xác của tín hiệu.

Tóm tắt

Chiến lược này dựa trên chỉ số chuyển đổi Fisher được thiết kế bởi Ehlers, có thể xác định một cách nhanh chóng và chính xác các điểm đảo ngược giá, do đó nắm bắt cơ hội giao dịch kịp thời. Ưu điểm lớn nhất của nó là chính xác và kịp thời của tín hiệu giao dịch.

Mã nguồn chiến lược
/*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")