Chiến lược đảo ngược và chỉ số khối lượng kết hợp hai yếu tố

Tác giả:ChaoZhang, Ngày: 2023-12-26 12:20:57
Tags:

img

Tổng quan

Chiến lược này là một chiến lược giao dịch đảo ngược kết hợp dựa trên mô hình hai yếu tố. Nó tích hợp mô hình đảo ngược 123 và các yếu tố Chỉ số khối lượng để đạt được hiệu ứng tích lũy cho các tín hiệu chiến lược. Nó sẽ chỉ đi dài hoặc ngắn khi cả hai yếu tố phát ra tín hiệu mua hoặc bán đồng thời.

Chiến lược logic

123 Nguyên nhân đảo ngược

Điều này hoạt động dựa trên mô hình giá 123. Khi mối quan hệ giá đóng trong hai ngày qua là low-high và chỉ số Stoch dưới 50, nó báo hiệu một sự đảo ngược đáy và đi dài. Khi mối quan hệ giá đóng là high-low và Stoch trên 50, nó báo hiệu một sự đảo ngược trên và đi ngắn.

Nhân tố chỉ số khối lượng

Nhân tố này đánh giá sự đảo ngược xu hướng dựa trên sự mở rộng hoặc co lại của phạm vi biến động giá. Khi phạm vi mở rộng, chỉ số tăng và khi phạm vi thu hẹp, chỉ số giảm. Nó tạo ra tín hiệu bán khi chỉ số vượt qua ngưỡng và tín hiệu mua khi vượt qua ngưỡng.

Chiến lược chỉ mở các vị trí khi hai yếu tố phát ra tín hiệu theo cùng một hướng, đạt được giao dịch có lợi nhuận trong khi tránh các tín hiệu sai từ một yếu tố duy nhất.

Phân tích lợi thế

  • Mô hình hai yếu tố kết hợp mô hình giá và chỉ số biến động để tăng độ chính xác tín hiệu
  • 123 mô hình nắm bắt các cực điểm địa phương, Chỉ số khối lượng nắm bắt các điểm đảo ngược xu hướng toàn cầu, điểm mạnh bổ sung
  • Chỉ nhận tín hiệu khi hai yếu tố đồng ý tránh tín hiệu sai và tăng sự ổn định

Phân tích rủi ro

  • Có khả năng cho cả hai yếu tố phát ra tín hiệu sai đồng thời, gây ra tổn thất
  • Tỷ lệ thất bại của sự đảo ngược tồn tại, cần thiết để thiết lập dừng lỗ để kiểm soát giảm
  • Chế độ điều chỉnh tham số không đúng có thể dẫn đến quá tải

Các rủi ro có thể được giảm thiểu thông qua việc mở rộng tập huấn, dừng lỗ nghiêm ngặt, lọc đa yếu tố v.v.

Hướng dẫn tối ưu hóa

  • Kiểm tra nhiều kết hợp chỉ số giá và biến động hơn
  • Thêm mô hình ML để đánh giá chất lượng tín hiệu và vị trí kích thước động
  • Bao gồm khối lượng, Bollinger Bands vv để khám phá thêm alpha
  • Sử dụng tối ưu hóa bước đi về phía trước cho độ bền

Kết luận

Chiến lược này kết hợp hai yếu tố, mô hình giá và chỉ số biến động, để chỉ nhận tín hiệu khi chúng đồng ý, tránh tín hiệu sai từ một yếu tố duy nhất và cải thiện sự ổn định. Nhưng rủi ro vẫn còn cho các tín hiệu sai đồng thời. Chúng ta có thể tăng thêm hiệu suất và lợi nhuận điều chỉnh rủi ro bằng cách mở rộng bộ dữ liệu, đặt dừng lỗ, tối ưu hóa sự kết hợp các yếu tố và hơn thế nữa.


/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/02/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
// The Mass Index was designed to identify trend reversals by measuring 
// the narrowing and widening of the range between the high and low prices. 
// As this range widens, the Mass Index increases; as the range narrows 
// the Mass Index decreases.
// The Mass Index was developed by Donald Dorsey. 
//
// 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


MASS(Length1,Length2,Trigger) =>
    pos = 0.0
    xPrice = high - low
    xEMA = ema(xPrice, Length1)
    xSmoothXAvg = ema(xEMA, Length1)
    nRes = sum(iff(xSmoothXAvg != 0, xEMA / xSmoothXAvg, 0), Length2)
    pos := iff(nRes > Trigger, -1,
	         iff(nRes < Trigger, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & MASS Index", 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, "---- MASS Index ----")
Length1 = input(9, minval=1)
Length2 = input(25, minval=1)
Trigger = input(26.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMASS = MASS(Length1,Length2,Trigger)
pos = iff(posReversal123 == 1 and posMASS == 1 , 1,
	   iff(posReversal123 == -1 and posMASS == -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