Chiến lược đột phá đảo ngược trung bình di chuyển kép

Tác giả:ChaoZhang, Ngày: 2023-12-18 10:24:08
Tags:

img

Tổng quan

Chiến lược Breakout đảo ngược trung bình di chuyển kép là một chiến lược kết hợp kết hợp cả Chiến lược đảo ngược 123 và Chiến lược chênh lệch giá và trung bình di chuyển. Ý tưởng chính của chiến lược này là tạo ra tín hiệu giao dịch chỉ khi các tín hiệu đảo ngược 123 phù hợp với các tín hiệu chênh lệch giá & MA.

Chiến lược logic

Chiến lược Breakout đảo ngược trung bình di chuyển kép bao gồm hai thành phần:

  1. 123 Chiến lược đảo ngược

    Chiến lược 123 Reversal tạo ra các tín hiệu giao dịch dựa trên hai ngày liên tiếp đảo ngược giá đóng (tức là đóng cao hơn theo sau đóng thấp hơn; hoặc đóng thấp hơn theo sau đóng cao hơn), kết hợp với đường K-Line Stochastic Oscillator 9 ngày ở dưới/trên một mức nhất định (bên định 50).

  2. Chiến lược chênh lệch giá và trung bình động

    Chiến lược chênh lệch giá & MA tính toán tỷ lệ phần trăm chênh lệch giữa giá và trung bình động của một khoảng thời gian nhất định (bất định 14). Nó tạo ra tín hiệu mua khi chênh lệch dưới ngưỡng (bất định 3%) và bán tín hiệu khi chênh lệch trên ngưỡng (bất định 0,54%).

Chiến lược Breakout đảo ngược trung bình di chuyển kép chỉ tạo ra các tín hiệu giao dịch thực tế khi các tín hiệu từ cả hai chiến lược ở trên liên kết theo cùng một hướng, tức là cả hai đều là tín hiệu mua hoặc cả hai đều là tín hiệu bán.

Phân tích lợi thế

Chiến lược Breakout đảo ngược trung bình di chuyển kép kết hợp các điểm mạnh của các chiến lược đảo ngược và theo xu hướng để tạo ra sự phối hợp.

123 Reversal chọn các tín hiệu đảo ngược để tận dụng các bước quay. Giá & MA Divergence theo dõi xu hướng dài hạn.

Hơn nữa, bằng cách yêu cầu các tín hiệu phù hợp từ cả hai chiến lược, số lượng giao dịch không hợp lệ có thể được giảm đáng kể, cải thiện tỷ lệ tín hiệu-tầm ồn.

Phân tích rủi ro

Trong khi khai thác các điểm mạnh của cả hai chiến lược, Chiến lược đảo ngược Breakout Trung bình Di chuyển kép cũng thừa hưởng các rủi ro liên quan đến mỗi chiến lược.

Đối với thành phần 123 Reversal, hai lần đảo ngược hàng ngày liên tiếp không đảm bảo một sự đảo ngược xu hướng thực sự. Chúng có thể là tín hiệu sai do giảm giá ngắn hạn. Ngoài ra, điều chỉnh tham số kém của Stochastic Oscillator có thể làm suy giảm chất lượng tín hiệu.

Đối với phần Price & MA Divergence, các thông số trung bình động không phù hợp có thể dẫn đến tín hiệu chậm hơn.

Tóm lại, những rủi ro lớn của chiến lược này đến từ việc điều chỉnh tham số kém và tạo tín hiệu sai.

Cơ hội gia tăng

Chiến lược phá vỡ trung bình chuyển động kép có thể được cải thiện theo các khía cạnh sau:

  1. Tối ưu hóa các thông số MA và dao động để có tín hiệu tốt hơn
  2. Thêm các chỉ số khác để lọc tín hiệu
  3. Kết hợp dừng lỗ và lấy lợi nhuận
  4. Thêm xác định xu hướng để tránh giao dịch không kịp thời
  5. Can thiệp thủ công và điều chỉnh tham số thích nghi

Với sự kết hợp của các phương pháp tăng cường khác nhau, sự ổn định chiến lược và lợi nhuận có thể được cải thiện hơn nữa.

Kết luận

Chiến lược Breakout đảo ngược trung bình di chuyển kép kết hợp các điểm mạnh của các chiến lược đảo ngược và theo xu hướng, tạo ra các giao dịch chỉ khi cả hai loại tín hiệu đều phù hợp. Nó nắm bắt các cơ hội đảo ngược ngắn hạn trong khi đi trên các xu hướng lớn hơn để tránh cạm bẫy. Cơ chế tín hiệu kép cũng cải thiện độ tin cậy. Với nhiều cơ hội nâng cao, đây là một chiến lược giao dịch đa năng và mạnh mẽ.


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/04/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
// Percent difference between price and MA
//
// 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


DBP_MA(Length,SellZone,BuyZone) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = abs(close - xSMA) * 100 / close
    pos:= iff(nRes < BuyZone, 1,
           iff(nRes > SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Difference between price and MA", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Difference between price and MA ----")
LengthDBP = input(14, minval=1)
SellZone = input(0.54, minval=0.01, step = 0.01)
BuyZone = input(0.03, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDBP_MA = DBP_MA(LengthDBP,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posDBP_MA == 1 , 1,
	   iff(posReversal123 == -1 and posDBP_MA == -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