Chiến lược theo dõi đảo ngược định lượng hai trình điều khiển

Tác giả:ChaoZhang, Ngày: 2024-02-18 10:03:14
Tags:

img

Tổng quan

Chiến lược theo dõi đảo ngược định lượng hai trình điều khiển kết hợp các chỉ số trung bình động đơn giản và các chỉ số ngẫu nhiên để đạt được một chiến lược giao dịch ngắn hạn hiệu quả và ổn định có thể nắm bắt sự đảo ngược thị trường nhanh chóng trong khi giảm chi phí cơ hội từ các tín hiệu bị thiếu.

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

Chiến lược bao gồm hai phần: 123 phần đảo ngược mô hình và phần chuyển động trung bình thích nghi. Phần đảo ngược mô hình 123 đánh giá liệu có cơ hội đảo ngược bằng cách tính toán mối quan hệ giá đóng giữa hai ngày giao dịch trước đó. Nếu giá đóng vào ngày trước thấp hơn giá đóng vào ngày trước thứ 2 và giá đóng vào ngày giao dịch hiện tại cao hơn giá đóng vào ngày trước, và đường ngẫu nhiên chậm thấp hơn 50, một tín hiệu mua được tạo ra. Nếu giá đóng vào ngày trước cao hơn giá đóng vào ngày trước thứ 2 và giá đóng vào ngày giao dịch hiện tại thấp hơn ngày trước, và đường nhanh hơn 50, một tín hiệu bán được tạo ra. Điều này có thể nắm bắt các cơ hội đảo ngược ngắn hạn. Phần khác là tín hiệu chuyển động trung bình, phản ứng nhanh chóng khi thị trường không hoạt động và phản ứng hiệu quả, có thể ngăn chặn tiếng ồn và các tín hiệu xu hướng. Khi cả hai vị trí được đóng và lọc, chúng cũng có thể phản ứng nhanh chóng.

Ưu điểm của Chiến lược

Lợi thế lớn nhất của chiến lược theo dõi đảo ngược định lượng hai trình điều khiển là nó kết hợp các mô hình đảo ngược và lọc xu hướng để có thể nắm bắt sự đảo ngược nhanh chóng trong khi tránh bị mắc kẹt trong thị trường sốc. Có hai nguồn thu nhập chính: Thứ nhất, việc xác định mô hình 123 có thể nhanh chóng theo dõi các cơ hội khi giá nhanh chóng đảo ngược hướng, điều mà nhiều chiến lược ổn định không thể làm. Thứ hai, việc áp dụng các đường trung bình động thích nghi đảm bảo rằng hướng giao dịch phù hợp với xu hướng chính, lọc hiệu quả tiếng ồn và giảm lỗ không cần thiết.

Rủi ro của chiến lược

Rủi ro chính của chiến lược này là việc thiết lập tham số không đúng có thể dẫn đến tần suất giao dịch quá cao hoặc khả năng nhận dạng tín hiệu không đủ. Nếu các tham số của mô hình 123 quá nhạy cảm, nó có thể dẫn đến giao dịch thường xuyên trong điều kiện thị trường biến động, dẫn đến nhiều lỗ đóng cửa hơn. Nếu các tham số trung bình động thích nghi được thiết lập quá chậm, các cơ hội đảo ngược có thể bị bỏ lỡ. Ngoài ra, theo đuổi mức cao mới và bán mức thấp trong thị trường xu hướng cũng sẽ dẫn đến biến động vốn lớn hơn.

Tối ưu hóa chiến lược

Chiến lược có thể được tối ưu hóa theo nhiều cách: Thứ nhất, điều chỉnh các thông số của mô hình 123 để xác định sự đảo ngược rõ ràng mà không quá nhạy cảm với việc tạo ra tín hiệu sai. Thứ hai, tối ưu hóa các thông số trung bình động thích nghi để tìm sự cân bằng tốt nhất giữa sự ổn định và độ nhạy. Thứ ba, các chiến lược dừng lỗ có thể được giới thiệu để kiểm soát các lỗ đơn lẻ. Thứ tư, các chỉ số tâm lý thị trường có thể được kết hợp để nâng cao chất lượng quyết định.

Tóm lại

Chiến lược theo dõi đảo ngược định lượng hai trình điều khiển tích hợp thành công hai phần không thể thiếu của giao dịch đảo ngược và lọc xu hướng, và các lợi thế kết hợp là đáng kể. Bằng cách liên tục tối ưu hóa cài đặt tham số và cải thiện cơ chế kiểm soát rủi ro và rủi ro, chiến lược này có tiềm năng trở thành một chiến lược giao dịch định lượng hiệu quả dễ kiếm lợi nhuận và có rủi ro có thể kiểm soát được.


/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 08/12/2020
// 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
// Everyone wants a short-term, fast trading trend that works without large
// losses. That combination does not exist. But it is possible to have fast
// trading trends in which one must get in or out of the market quickly, but
// these have the distinct disadvantage of being whipsawed by market noise
// when the market is volatile in a sideways trending market. During these
// periods, the trader is jumping in and out of positions with no profit-making
// trend in sight. In an attempt to overcome the problem of noise and still be
// able to get closer to the actual change of the trend, Kaufman developed an
// indicator that adapts to market movement. This indicator, an adaptive moving
// average (AMA), moves very slowly when markets are moving sideways but moves
// swiftly when the markets also move swiftly, change directions or break out of
// a trading range.
//
// 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

KAMA(Length) =>
    pos = 0.0
    nAMA = 0.0
    xPrice = close
    xvnoise = abs(xPrice - xPrice[1])
    nfastend = 0.666
    nslowend = 0.0645
    reverse = input(false, title="Trade reverse")
    nsignal = abs(xPrice - xPrice[Length])
    nnoise = sum(xvnoise, Length)
    nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
    nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
    nAMA := nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
    pos := iff(close[1] > nAMA, 1,
    	     iff(close[1] < nAMA, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Kaufman Moving Average Adaptive", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthKAMA = input(21, minval=2)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKAMA = KAMA(LengthKAMA)
pos = iff(posReversal123 == 1 and posKAMA == 1 , 1,
	   iff(posReversal123 == -1 and posKAMA == -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 )

Thêm nữa