Chiến lược theo dõi đảo ngược với cơ chế hai

Tác giả:ChaoZhang, Ngày: 2024-01-05 15:09:19
Tags:

img

Tổng quan

Chiến lược này kết hợp các điểm mạnh của các chỉ số cơ chế kép bằng cách sử dụng mô hình 123 để xác định các tín hiệu đảo ngược và được hỗ trợ bởi Chỉ số khối lượng giá để xác định các tín hiệu động lực, để nắm bắt xu hướng đảo ngược ngắn hạn.

Chiến lược logic

  1. Mô hình 123 cho tín hiệu đảo ngược

    • Được xây dựng với 9 ngày Stoch đường nhanh và đường chậm

    • Khi giá đóng giảm trong 2 ngày liên tiếp và tăng vào ngày thứ 3, và đường nhanh Stoch dưới 50, một tín hiệu mua được tạo ra

    • Khi giá đóng tăng trong 2 ngày liên tiếp và giảm vào ngày thứ 3, và đường nhanh Stoch trên 50, một tín hiệu bán được tạo ra

  2. Chỉ số giá khối lượng cho tín hiệu động lực

    • PVI đánh giá động lượng bằng cách so sánh thay đổi khối lượng giữa ngày trước và ngày hiện tại

    • Khi PVI vượt qua mức trung bình động trong N ngày, động lực tăng cường và một tín hiệu mua được tạo ra

    • Khi PVI vượt dưới đường trung bình động trong N ngày, động lượng giảm và một tín hiệu bán được tạo ra

  3. Kết hợp tín hiệu kép

    • Các tín hiệu giao dịch chỉ được tạo ra khi 123 tín hiệu đảo ngược và tín hiệu động lực PVI đồng ý

Tóm lại, chiến lược này tận dụng lợi thế của các chỉ số cơ chế kép để xác định hiệu quả các cơ hội đảo ngược giá khối lượng ngắn hạn.

Phân tích lợi thế

  1. Mô hình 123 bắt được các điểm đảo ngược ngắn hạn chính

  2. Động lực PVI đánh giá hành động phối hợp giá - khối lượng để tránh đột phá sai

  3. Parameter tối ưu hóa Stoch lọc ra hầu hết các tín hiệu tiếng ồn trong khu vực hỗn loạn

  4. Độ tin cậy tín hiệu kép cao hơn tín hiệu đơn

  5. Thiết kế trong ngày tránh rủi ro qua đêm phù hợp với giao dịch ngắn hạn

Phân tích rủi ro

  1. Rủi ro đảo ngược thất bại

    • 123 tín hiệu đảo ngược mô hình không phải lúc nào cũng thành công với rủi ro thất bại mô hình
  2. Rủi ro thất bại chỉ số

    • Cổ phiếu, PVI và các chỉ số khác có thể thất bại trong một số thị trường bất thường
  3. Rủi ro mất tín hiệu hai lần

    • Các tiêu chí tín hiệu kép tương đối nghiêm ngặt có thể bỏ lỡ một số cơ hội tín hiệu duy nhất
  4. Rủi ro tần suất giao dịch cao

    • Việc giám sát chặt chẽ quy mô vị trí và kiểm soát rủi ro là cần thiết cho chiến lược tần số cao

Hướng tối ưu hóa

  1. Không gian tối ưu hóa tham số lớn

    • Cửa sổ, chu kỳ của Stoch, PVI vv có không gian tối ưu hóa
  2. Có thể kết hợp các chiến lược dừng lỗ

    • Điện thoại di động dừng lỗ có thể đảm bảo tỷ lệ thắng
  3. Xem xét thêm các điều kiện bộ lọc

    • Các thử nghiệm có thể thêm trung bình động, bộ lọc biến động vv.
  4. Tối ưu hóa danh mục tín hiệu kép

    • Kết hợp thử nghiệm các chiến lược chỉ số kép hơn

Tóm lại

Chiến lược này tạo thành một hệ thống đảo ngược giá khối lượng ngắn hạn đáng tin cậy cao thông qua sự kết hợp của chỉ số Stoch và PVI. So với các chỉ số đơn lẻ, nó có tỷ lệ thắng cao hơn và kỳ vọng tích cực hơn. Tỷ lệ Sharpe có thể được cải thiện hơn nữa thông qua tối ưu hóa và kiểm soát rủi ro.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/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
// The theory behind the indexes is as follows: On days of increasing volume, 
// you can expect prices to increase, and on days of decreasing volume, you can 
// expect prices to decrease. This goes with the idea of the market being in-gear 
// and out-of-gear. Both PVI and NVI work in similar fashions: Both are a running 
// cumulative of values, which means you either keep adding or subtracting price 
// rate of change each day to the previous day`s sum. In the case of PVI, if today`s 
// volume is less than yesterday`s, don`t add anything; if today`s volume is greater, 
// then add today`s price rate of change. For NVI, add today`s price rate of change 
// only if today`s volume is less than yesterday`s.
//
// 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


PVI(EMA_Len) =>
    pos = 0.0
    xROC = roc(close, 1)
    nRes = 0.0
    nResEMA = 0.0
    nRes := iff(volume > volume[1], nz(nRes[1], 0) + xROC, nz(nRes[1], 0))
    nResEMA := ema(nRes, EMA_Len)
    pos := iff(nRes > nResEMA, 1,
        	 iff(nRes < nResEMA, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Positive Volume 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, "---- Positive Volume Index ----")
EMA_Len = input(255, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPVI = PVI(EMA_Len)
pos = iff(posReversal123 == 1 and posPVI == 1 , 1,
	   iff(posReversal123 == -1 and posPVI == -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