Chiến lược chỉ số động lượng đảo ngược kép


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

Chiến lược chỉ số động lượng đảo ngược kép

Tổng quan

Chiến lược chỉ số động lượng xoay ngược kép là một chiến lược kết hợp chiến lược 123 xoay ngược và chiến lược chỉ số động lượng tương đối ((RMI)). Nó nhằm mục đích tăng độ chính xác của quyết định giao dịch bằng cách sử dụng tín hiệu kép.

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

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

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

    • Khi giá đóng cửa ngày hôm qua thấp hơn giá đóng cửa ngày hôm qua, giá đóng cửa ngày hôm nay cao hơn giá đóng cửa ngày hôm qua, và đường K chậm ngày 9 thấp hơn 50, hãy làm nhiều hơn
    • Khi giá đóng cửa hôm qua cao hơn giá đóng cửa hôm trước, giá đóng cửa hôm nay thấp hơn giá đóng cửa hôm trước và đường Fast K trên 50 ngày 9, hãy tháo lỗ
  2. Chiến lược chỉ số động lượng tương đối (RMI)

    • RMI là một biến thể của yếu tố động lực được thêm vào trên cơ sở RSI. Nó được tính bằng công thức: RMI = (SMA động lực trên) / (SMA động lực dưới) * 100
    • Khi RMI thấp hơn đường mua quá mức, bạn sẽ mua nhiều hơn; khi RMI cao hơn đường bán quá mức, bạn sẽ mua ít hơn

Chiến lược kết hợp này chỉ tạo ra tín hiệu giao dịch khi 123 đảo ngược và tín hiệu kép RMI được phát ra đồng bộ. Điều này có thể làm giảm hiệu quả cơ hội giao dịch sai.

Phân tích lợi thế chiến lược

Chiến lược này có những ưu điểm sau:

  1. Kết hợp hai chỉ số để tăng độ chính xác tín hiệu
  2. Sử dụng chiến lược đảo ngược phù hợp với tình trạng động đất
  3. Chỉ số RMI nhạy cảm, có thể nhận ra các điểm biến đổi trong xu hướng mạnh mẽ

Phân tích rủi ro chiến lược

Chiến lược này cũng có một số rủi ro:

  1. Bộ lọc kép sẽ bỏ lỡ một số cơ hội giao dịch
  2. Có thể có sự hiểu lầm về tín hiệu đảo ngược
  3. Thiết lập RMI không đúng sẽ ảnh hưởng đến hiệu quả

Những rủi ro này có thể được giảm bớt bằng cách điều chỉnh các tham số và tối ưu hóa cách tính toán các chỉ số.

Hướng tối ưu hóa chiến lược

Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:

  1. Kiểm tra các tổ hợp tham số khác nhau để tìm ra tham số tốt nhất
  2. Thử các kết hợp khác nhau của chỉ số đảo ngược như KDJ, MACD, v.v.
  3. Điều chỉnh công thức RMI để nhạy hơn
  4. Thêm hệ thống ngăn chặn để kiểm soát tổn thất đơn lẻ
  5. Kết hợp khối lượng giao dịch để tránh tín hiệu giả

Tóm tắt

Chiến lược chỉ số tỷ lệ đảo ngược kép thông qua lọc và tối ưu hóa tham số của tín hiệu kép có thể làm tăng hiệu quả độ chính xác của quyết định giao dịch và giảm tỷ lệ tín hiệu sai. Nó áp dụng cho các tình huống dao động, có thể khai thác cơ hội đảo ngược. Chiến lược này có thể tăng hiệu quả và rủi ro laps hơn nữa bằng cách điều chỉnh tham số và tối ưu hóa cách tính toán chỉ số.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/06/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 Relative Momentum Index (RMI) was developed by Roger Altman. Impressed 
// with the Relative Strength Index's sensitivity to the number of look-back 
// periods, yet frustrated with it's inconsistent oscillation between defined 
// overbought and oversold levels, Mr. Altman added a momentum component to the RSI.
// As mentioned, the RMI is a variation of the RSI indicator. Instead of counting 
// up and down days from close to close as the RSI does, the RMI counts up and down 
// days from the close relative to the close x-days ago where x is not necessarily 
// 1 as required by the RSI). So as the name of the indicator reflects, "momentum" is 
// substituted for "strength". 
//
// 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


RMI(Length,BuyZone, SellZone) =>
    pos = 0.0
    xMU = 0.0
    xMD = 0.0
    xPrice = close
    xMom = xPrice - xPrice[Length]
    xMU := iff(xMom >= 0, nz(xMU[1], 1) - (nz(xMU[1],1) / Length) + xMom, nz(xMU[1], 1))
    xMD := iff(xMom <= 0, nz(xMD[1], 1) - (nz(xMD[1],1) / Length) + abs(xMom), nz(xMD[1], 0))
    RM = xMU / xMD
    nRes = 100 * (RM / (1+RM))
    pos:= iff(nRes < BuyZone, 1,
    	   iff(nRes > SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Relative Momentum 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, "---- Relative Momentum Index ----")
LengthRMI = input(20, minval=1)
BuyZone = input(40, minval=1)
SellZone = input(70, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRMI = RMI(LengthRMI,BuyZone, SellZone)
pos = iff(posReversal123 == 1 and posRMI == 1 , 1,
	   iff(posReversal123 == -1 and posRMI == -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 )