Chiến lược theo dõi đảo ngược định lượng hai hướng


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

Chiến lược theo dõi đảo ngược định lượng hai hướng

Tổng quan

Chiến lược theo dõi đảo ngược định lượng hai chiều bằng cách kết hợp sử dụng chỉ số trung bình di chuyển đơn giản và chỉ số ngẫu nhiên, tạo ra một chiến lược giao dịch đường ngắn hiệu quả và ổn định có thể nắm bắt được sự đảo ngược nhanh chóng của thị trường đồng thời giảm chi phí cơ hội do tín hiệu bị bỏ lỡ.

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

Chiến lược này bao gồm hai phần: phần 123 hình dạng đảo ngược và phần chuyển động trung bình thích ứng. Phần 123 hình dạng đảo ngược đánh giá cơ hội đảo ngược bằng cách tính toán mối quan hệ giá đóng cửa của hai ngày giao dịch trước. Nếu giá đóng cửa vào ngày hôm trước thấp hơn giá đóng cửa vào ngày hôm nay cao hơn giá đóng cửa vào ngày hôm trước và đường chậm ngẫu nhiên thấp hơn 50, tín hiệu mua sẽ được tạo ra. Nếu giá đóng cửa vào ngày hôm trước cao hơn giá đóng cửa vào ngày hôm nay cao hơn giá đóng cửa vào ngày hôm trước và đường nhanh cao hơn 50, tín hiệu bán sẽ được tạo ra.

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

Ưu điểm lớn nhất của chiến lược theo dõi đảo ngược định lượng hai ống là sự kết hợp sử dụng hình thức đảo ngược và lọc xu hướng, cho phép nó vừa có thể nắm bắt được sự đảo ngược nhanh chóng vừa có thể tránh bị mắc kẹt trong thị trường bất ổn. Nguồn lợi nhuận chủ yếu là hai: đầu tiên, nhận dạng hình thức 123 cho phép theo dõi cơ hội điều chỉnh giá nhanh chóng trong thời gian, điều mà nhiều chiến lược cân bằng không thể làm được. Thứ hai, ứng dụng đường trung bình di chuyển thích nghi đảm bảo sự đồng nhất giữa hướng giao dịch và xu hướng chủ đạo, lọc hiệu quả tiếng ồn và giảm tổn thất không cần thiết.

Rủi ro chiến lược

Rủi ro chính của chiến lược này là cài đặt 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 đầy đủ. Nếu cài đặt tham số hình dạng 123 quá nhạy cảm, có thể dẫn đến giao dịch thường xuyên trong tình huống biến động, tạo ra nhiều lỗ cân bằng. Nếu thích nghi với tham số trung bình di chuyển quá chậm, có thể bỏ lỡ cơ hội đảo ngược. Ngoài ra, theo đuổi giảm giá cao trong tình huố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 này có thể được tối ưu hóa từ một số khía cạnh: thứ nhất, điều chỉnh các tham số của 123 hình dạng để nó có thể nhận ra sự đảo ngược rõ ràng nhưng không quá nhạy cảm để tạo ra tín hiệu sai. Thứ hai, tối ưu hóa các tham số thích nghi với đường trung bình di chuyển để tìm sự cân bằng tối ưu giữa bình thường và nhạy cảm.

Tóm tắt

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

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