Chiến lược đảo ngược động lượng theo dõi hai yếu tố


Ngày tạo: 2024-01-18 11:33:40 sửa đổi lần cuối: 2024-01-18 11:33:40
sao chép: 0 Số nhấp chuột: 571
1
tập trung vào
1617
Người theo dõi

Chiến lược đảo ngược động lượng theo dõi hai yếu tố

Tổng quan

Chiến lược này kết hợp các yếu tố biến động giá cổ phiếu và yếu tố động lực để xây dựng mô hình hai yếu tố với mục đích nắm bắt các cơ hội biến động ngắn hạn và duy trì trung hạn của thị trường. Chiến lược này sử dụng hình thức 123 để xác định tín hiệu biến động giá gần đây, sau đó kết hợp với chỉ số RSI Laguerre để xác định xu hướng đường dài trung bình, cuối cùng kết hợp hiệu quả tín hiệu hai yếu tố.

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

Chiến lược này bao gồm hai phần:

  1. 123 Chế độ biến đổi

Phần này phát hiện ra tín hiệu đảo ngược ngắn hạn của giá bằng cách đánh giá sự thay đổi của giá đóng cửa hai ngày trước. Cụ thể, nếu giá đóng cửa một ngày trước thấp hơn hai ngày trước và giá đóng cửa hôm nay cao hơn ngày trước, thì tín hiệu tăng lên có thể được đánh giá là một sự đảo ngược giá. Chỉ số Stoch được sử dụng để đánh giá phụ trợ.

  1. RSI dựa trên bộ lọc Ragel

Phần này xây dựng một chỉ số RSI nhạy cảm hơn. Chỉ số RSI truyền thống ít nhạy cảm với sự thay đổi giá, trong khi bộ lọc Ragel có thể xây dựng chỉ số với ít dữ liệu lịch sử hơn, do đó tăng độ nhạy cảm với sự thay đổi giá. Chỉ số RSI mới được sử dụng để đánh giá xu hướng đường dài giữa.

Cuối cùng, chiến lược sẽ kết hợp cả hai tín hiệu, đảm bảo xu hướng lớn không bị đảo ngược trong một thời gian ngắn, và do đó nắm bắt cơ hội phục hồi.

Lợi thế chiến lược

Ưu điểm lớn nhất của chiến lược này là kết hợp thành công các yếu tố đảo ngược và yếu tố xu hướng. Các yếu tố đảo ngược có thể nắm bắt cơ hội phục hồi giá sau khi điều chỉnh ngắn hạn, trong khi các yếu tố xu hướng đảm bảo không có sự thay đổi trong hướng mua / bán.

Ngoài ra, việc bổ sung chỉ số RSI của Ragel cũng làm tăng tính nhạy cảm của mô hình đối với sự thay đổi giá, đặc biệt quan trọng đối với giao dịch tần số cao.

Phân tích rủi ro

Rủi ro chính đối với chiến lược này là tín hiệu của hai yếu tố có thể bị phân biệt. Đặc biệt là trong thời gian thị trường biến động điều chỉnh, trong khi giá ngắn hạn thường xuyên đảo ngược, xu hướng đường dài trung bình cũng có thể bị thay đổi. Khi đó, có rất nhiều khả năng hai tín hiệu sẽ bị kết hợp sai hoặc bị trì hoãn. Điều này sẽ khiến chiến lược tạo ra tín hiệu sai, và do đó bỏ lỡ thời gian đầu tư tốt nhất hoặc gây ra tổn thất không cần thiết.

Ngoài ra, lựa chọn tham số không phù hợp cũng có thể dẫn đến hiệu suất chiến lược kém. Các tham số chỉ số kỹ thuật tương ứng với yếu tố đảo ngược và yếu tố xu hướng cần được điều chỉnh và thử nghiệm, và sự kết hợp tham số không phù hợp cũng có thể làm giảm hiệu quả của chiến lược.

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

Đường hướng tối ưu hóa tiếp theo của chiến lược này chủ yếu tập trung vào việc lọc tín hiệu và lựa chọn tham số. Bạn có thể xem xét thêm các điều kiện lọc, đóng vai trò khi tín hiệu hai yếu tố bị phân biệt, đảm bảo chỉ mở cửa trong trường hợp có độ chắc chắn cao. Điều này có thể làm giảm đáng kể tỷ lệ tín hiệu sai.

Trên lựa chọn tham số, bạn có thể thử nghiệm các phương pháp học máy và thí nghiệm khoa học, thử nghiệm hệ thống cho các tổ hợp tham số để tìm tham số tối ưu. Điều này đòi hỏi hỗ trợ năng lượng tính toán cao, nhưng có thể cải thiện đáng kể sự ổn định của chiến lược.

Tóm tắt

Chiến lược này đã kết hợp thành công các yếu tố đảo ngược và yếu tố xu hướng để nắm bắt cơ hội phục hồi ngắn hạn và duy trì trung hạn thông qua mô hình hai yếu tố. Bộ lọc RSI Ragel được thêm vào cũng làm tăng khả năng nhạy cảm của mô hình đối với sự thay đổi giá.

Mã nguồn chiến lược
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/01/2021
// 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 is RSI indicator which is more sesitive to price changes. 
// It is based upon a modern math tool - Laguerre transform filter.
// With help of Laguerre filter one becomes able to create superior 
// indicators using very short data lengths as well. The use of shorter 
// data lengths means you can make the indicators more responsive to 
// changes in the price.
//
// 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

LB_RSI(gamma,BuyBand,SellBand) =>
    pos = 0.0
    xL0 = 0.0
    xL1 = 0.0
    xL2 = 0.0
    xL3 = 0.0
    xL0 := (1-gamma) * close + gamma * nz(xL0[1], 1)
    xL1 := - gamma * xL0 + nz(xL0[1], 1) + gamma * nz(xL1[1], 1)
    xL2 := - gamma * xL1 + nz(xL1[1], 1) + gamma * nz(xL2[1], 1)
    xL3 := - gamma * xL2 + nz(xL2[1], 1) + gamma * nz(xL3[1], 1)
    CU = (xL0 >= xL1 ? xL0 - xL1 : 0) + (xL1 >= xL2 ? xL1 - xL2 : 0)  + (xL2 >= xL3 ? xL2 - xL3 : 0)
    CD = (xL0 >= xL1 ? 0 : xL1 - xL0) + (xL1 >= xL2 ? 0 : xL2 - xL1)  + (xL2 >= xL3 ? 0 : xL3 - xL2)
    nRes = iff(CU + CD != 0, CU / (CU + CD), 0)
    pos := iff(nRes > BuyBand, 1,
    	     iff(nRes < SellBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Laguerre-based RSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
gamma = input(0.5, minval=-0.1, maxval = 0.9)
BuyBand = input(0.8, step = 0.01)
SellBand = input(0.2, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posLB_RSI = LB_RSI(gamma,BuyBand,SellBand)
pos = iff(posReversal123 == 1 and posLB_RSI == 1 , 1,
	   iff(posReversal123 == -1 and posLB_RSI == -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 )