Chiến lược kết hợp dao động và dự đoán đảo ngược


Ngày tạo: 2023-10-10 10:39:44 sửa đổi lần cuối: 2023-10-10 10:39:44
sao chép: 1 Số nhấp chuột: 651
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này là sự kết hợp giữa chiến lược đảo ngược và chiến lược dao động để có được tín hiệu giao dịch đáng tin cậy hơn. Nó kết hợp chiến lược dự đoán đảo ngược và chiến lược dao động dự đoán Chande để thực hiện giao dịch khi cả hai chiến lược phát ra tín hiệu mua hoặc bán cùng một lúc.

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

  1. Chiến lược Phản hồi Phán đoán

    • Sử dụng chỉ số Stochastic oscillator để đánh giá quá mua quá bán

    • Hoạt động đảo ngược khi giá bị đảo ngược trong hai bar liên tiếp, và chỉ số Stochastic oscillator có tín hiệu quá mua hoặc quá bán

  2. Chande dự đoán chiến lược của rung động

    • Sử dụng phân tích hồi quy tuyến tính để dự đoán giá

    • Đường cong dao động bằng chênh lệch giữa giá đóng cửa và giá dự báo

    • Tín hiệu giao dịch được tạo ra khi có sự khác biệt rõ rệt giữa giá thực và giá dự báo

  3. Chiến lược Logic

    • Đồng thời tính toán các tín hiệu của chiến lược dự đoán đảo ngược và chiến lược dự đoán dao động của Chande

    • Chỉ khi các tín hiệu của hai chiến lược phù hợp, tức là cả hai đều là tín hiệu mua hoặc bán, thì tín hiệu giao dịch thực tế sẽ được tạo ra

    • Tăng độ tin cậy tín hiệu bằng cách kết hợp loại bỏ các tín hiệu giả có thể xuất hiện trong một chiến lược đơn lẻ

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

  1. Kết hợp nhiều chiến lược, đánh giá toàn diện thị trường, độ tin cậy cao hơn

  2. Loại bỏ các tín hiệu giả có thể xuất hiện trong chỉ số kỹ thuật đơn lẻ

  3. Chiến lược dự đoán đảo ngược có thể nắm bắt cơ hội đảo ngược ngắn hạn

  4. Chande dự đoán rằng dao động sẽ có thể xác định được xu hướng dài hạn chính xác

  5. Stochastic oscillator có thể điều chỉnh các tham số chỉ số, có khả năng thích ứng

  6. Kết hợp nhiều phương pháp phân tích để nắm bắt các cơ hội giao dịch khác nhau

Phân tích rủi ro

  1. Chiến lược kết hợp có thể làm tăng độ tin cậy nhưng giảm tần số phát sinh tín hiệu

  2. Cần tối ưu hóa các tham số chiến lược cùng một lúc, phức tạp hơn

  3. Không thể xác định được thời gian biến đổi, có nguy cơ mất mát

  4. Dự báo hồi quy tuyến tính không áp dụng cho thị trường có biến động giá mạnh

  5. Cần chú ý đến việc giá cổ phiếu có bị lệch khỏi dao động Stochastic hay không

  6. Dữ liệu không đầy đủ, hiệu quả của ổ cứng bị nghi ngờ

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

  1. Tối ưu hóa các tham số dao động Stochastic, rút ngắn K-line và D-line

  2. Điều chỉnh chu kỳ hồi quy tuyến tính, kiểm tra nhiều tham số chu kỳ hơn

  3. Tăng chiến lược dừng lỗ, giảm tổn thất đơn

  4. Chuyển đổi logic mở vị trí, chờ cho Stochastic Oscillator hoàn toàn đi vào khu vực mua bán quá mức

  5. Thêm phân tích đặc điểm thống kê cho các loại thương mại

  6. Kết hợp với nhiều chỉ số khác, như MACD, cung cấp nhiều phán đoán hơn

Tóm tắt

Chiến lược này sử dụng nhiều phương pháp phân tích tổng hợp để cải thiện chất lượng tín hiệu thông qua sự kết hợp, đồng thời tính đến cả hai khía cạnh phát hiện sự đảo ngược ngắn hạn và đánh giá xu hướng lớn, có thể nắm bắt cơ hội giao dịch toàn diện hơn. Tuy nhiên, cần chú ý đến hiệu quả thực tế và điều chỉnh các tham số thích hợp.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 08/08/2019
// 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 Chande Forecast Oscillator developed by Tushar Chande The Forecast 
// Oscillator plots the percentage difference between the closing price and 
// the n-period linear regression forecasted price. The oscillator is above 
// zero when the forecast price is greater than the closing price and less 
// than zero if it is below.
//
// 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

ChandeForecastOscillator(Length, Offset) =>
    pos = 0
    xLG = linreg(close, Length, Offset)
    xCFO = ((close -xLG) * 100) / close
    pos := iff(xCFO > 0, 1,
           iff(xCFO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Chande Forecast Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCFO = input(14, minval=1)
Offset = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posChandeForecastOscillator = ChandeForecastOscillator(LengthCFO, Offset)
pos = iff(posReversal123 == 1 and posChandeForecastOscillator == 1 , 1,
	   iff(posReversal123 == -1 and posChandeForecastOscillator == -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 )