Chiến lược kết hợp đảo ngược xu hướng theo sau và chỉ báo dẫn đầu Ehlers


Ngày tạo: 2023-11-07 16:10:26 sửa đổi lần cuối: 2023-11-07 16:10:26
sao chép: 0 Số nhấp chuột: 472
1
tập trung vào
1166
Người theo dõi

Chiến lược kết hợp đảo ngược xu hướng theo sau và chỉ báo dẫn đầu Ehlers

Tổng quan

Chiến lược này là sự kết hợp của chiến lược theo dõi xu hướng và chiến lược chỉ báo tiên phong của Ells để có được tín hiệu giao dịch đáng tin cậy hơn. Chiến lược theo dõi xu hướng và chỉ báo tiên phong xác định điểm đảo ngược xu hướng, chiến lược chỉ báo tiên phong của Ells xác định điểm biến đổi theo chu kỳ.

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

Chiến lược đảo ngược xu hướng

Chiến lược này bắt nguồn từ Ulf Jensen’s How I Triple My Money in the Futures Market, trang 183. Nó thuộc loại chiến lược đảo ngược. Khi giá đóng cửa 2 ngày liên tiếp cao hơn giá đóng cửa ngày trước và đường Stochastic chậm 9 ngày thấp hơn 50, làm nhiều; Khi giá đóng cửa 2 ngày liên tiếp thấp hơn giá đóng cửa ngày trước và đường Stochastic nhanh 9 ngày cao hơn 50.

Chiến lược chỉ số tiên phong của Ellers

Chiến lược này sử dụng dữ liệu trong ngày để vẽ giá tổng hợp theo xu hướng một ngày (Detrended Synthetic Price, DSP) và chỉ số dẫn đầu của Ehlers trong ngày (Ehlers Leading Indicator, ELI). DSP có thể nắm bắt chu kỳ thống trị giá, phương pháp tính toán là 2 bước sóng Bathworth trừ đi 3 bước sóng.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược kết hợp này là kết hợp giữa phán đoán xu hướng đảo ngược và phán đoán xoay vòng định kỳ, tín hiệu giao dịch đáng tin cậy hơn. Chiến lược đảo ngược xu hướng có thể xác định điểm đảo ngược xu hướng để phá vỡ đường mòn lên xuống. Chỉ số tiên phong của Erles có thể chỉ ra trước mức thấp và cao theo chu kỳ.

Một lợi thế khác là khả năng điều chỉnh các tham số linh hoạt. Các tham số chỉ số chứng khoán trong chiến lược đảo ngược xu hướng có thể được điều chỉnh theo thị trường; Độ dài chu kỳ trong chỉ số dẫn đầu của Erles cũng có thể được điều chỉnh để phù hợp với các chu kỳ khác nhau.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược này là bỏ lỡ xu hướng persisting. Bởi vì chiến lược chờ đợi tín hiệu đảo ngược xuất hiện để tham gia, có thể bỏ lỡ giai đoạn xu hướng mạnh mẽ ban đầu. Ngoài ra, tín hiệu đảo ngược có thể là phá vỡ giả và có thể bị đặt.

Giải pháp là điều chỉnh các tham số, rút ngắn chu kỳ phán quyết đảo ngược, kịp thời bắt kịp xu hướng đảo ngược. Ngoài ra, có thể giới thiệu dừng lỗ để kiểm soát tổn thất.

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

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

  1. Tham gia chiến lược dừng lỗ để kiểm soát tổn thất đơn lẻ

  2. Tối ưu hóa tham số, điều chỉnh chu kỳ tín hiệu đảo ngược, thích ứng với môi trường thị trường khác nhau.

  3. Thêm bộ lọc cho các chỉ số khác, cải thiện chất lượng tín hiệu và giảm tín hiệu giả.

  4. Thêm mô-đun quản lý tiền để kiểm soát toàn bộ vị trí và rủi ro.

  5. Kiểm tra hiệu quả của các tham số của các giống khác nhau, tối ưu hóa những giống nào phù hợp.

  6. Thêm mô-đun học máy cho phép tham số tự điều chỉnh.

Tóm tắt

Chiến lược này kết hợp với phán đoán đảo ngược xu hướng và phán đoán chuyển đổi theo chu kỳ, có thể nắm bắt thời gian ra thị trường một cách đáng tin cậy hơn. Ưu điểm lớn nhất là chất lượng tín hiệu tốt, có thể điều chỉnh được. Rủi ro lớn nhất là bỏ lỡ xu hướng ban đầu, có thể được kiểm soát bằng cách điều chỉnh tham số, dừng lỗ.

Mã nguồn chiến lược
/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/11/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This Indicator plots a single
// Daily DSP (Detrended Synthetic Price) and a Daily ELI (Ehlers Leading
// Indicator) using intraday data.
// Detrended Synthetic Price is a function that is in phase with the dominant
// cycle of real price data. This one is computed by subtracting a 3 pole Butterworth
// filter from a 2 Pole Butterworth filter. Ehlers Leading Indicator gives an advanced
// indication of a cyclic turning point. It is computed by subtracting the simple
// moving average of the detrended synthetic price from the detrended synthetic price.
// Buy and Sell signals arise when the ELI indicator crosses over or under the detrended
// synthetic price.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

D_ELI(Length) =>
    pos = 0.0
    xHL2 = security(syminfo.tickerid, 'D', hl2)
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    xResultEMA = ema(xEMA1_EMA2, Length)
    nRes = xEMA1_EMA2 - xResultEMA
    pos:= iff(nRes > 0, 1,
	       iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & D_ELI (Ehlers Leading Indicator)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthELI = input(7, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_ELI = D_ELI(LengthELI)
pos = iff(posReversal123 == 1 and posD_ELI == 1 , 1,
	   iff(posReversal123 == -1 and posD_ELI == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )