Chiến lược kết hợp chỉ báo dao động hồi phục đảo ngược


Ngày tạo: 2023-11-02 16:43:41 sửa đổi lần cuối: 2023-11-02 16:43:41
sao chép: 1 Số nhấp chuột: 727
1
tập trung vào
1621
Người theo dõi

Chiến lược kết hợp chỉ báo dao động hồi phục đảo ngược

Tổng quan

Chiến lược này là một chiến lược kết hợp sử dụng chiến lược đảo ngược và chiến lược chỉ số dao động hồi sinh để có được tín hiệu giao dịch đáng tin cậy hơn.

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

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

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

Chiến lược đảo ngược đến từ Ulf Jensen’s How I Doubled My Money in the Futures Market, trang 183. Chiến lược này thuộc loại đảo ngược, logic cụ thể là:

  • Khi giá đóng cửa cao hơn giá đóng cửa ngày trước, hai ngày liên tiếp, và chỉ số Stoch chậm 9 ngày dưới 50.

  • Khi giá đóng cửa thấp hơn giá đóng cửa ngày trước, hai ngày liên tiếp, và chỉ số Stoch nhanh trên 50 vào ngày 9, hãy tham gia vào thị trường ngoại hối.

  1. Chiến lược khôi phục chỉ số dao động

Chỉ số hồi sinh dao động bằng cách tính toán chênh lệch của biến động nhỏ nhất trong thị trường, giá trị của nó thường dao động từ -1 đến 1.

Khi chỉ số đạt giá trị cao hơn, làm nhiều hơn; khi chỉ số đạt giá trị thấp hơn, làm trống. Chỉ số này phù hợp cho giao dịch trong ngày.

Cuối cùng, khi hai tín hiệu chiến lược đồng hướng, thì giao dịch theo hướng liên quan.

Phân tích lợi thế

  • Kết hợp với chiến lược đảo ngược và chiến lược xu hướng, bạn có thể lọc ra một số tín hiệu giả và tăng độ tin cậy của tín hiệu giao dịch.

  • Chiến lược đảo ngược có thể nắm bắt cơ hội đảo ngược ngắn hạn; chiến lược chỉ số dao động hồi sinh có thể nắm bắt xu hướng đường dài.

  • Stoch chỉ số tham số được tối ưu hóa tốt hơn, có thể hiệu quả lọc các tín hiệu sai của thị trường chấn động.

  • Các chỉ số hồi sinh dao động nhạy cảm hơn với sự biến động nhỏ của thị trường, có thể bắt kịp một sự thay đổi xu hướng.

Rủi ro và giải pháp

  • Chiến lược đảo ngược dễ bị nuốt chửng bởi một xu hướng lớn, có thể điều chỉnh các tham số phù hợp hoặc được sử dụng với các chiến lược xu hướng.

  • Chiến lược chỉ số dễ tạo ra quá nhiều tín hiệu giao dịch, có thể điều chỉnh các tham số phù hợp, hoặc được sử dụng với các chỉ số lọc khác.

  • Hai tín hiệu chiến lược có thể gây ra xung đột không nhất quán, và các tham số có thể được điều chỉnh dựa trên dữ liệu khảo sát lịch sử để tối ưu hóa sự phối hợp giữa hai.

  • Có thể giới thiệu chiến lược dừng lỗ để kiểm soát tổn thất đơn lẻ.

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

  • Kiểm tra các kết hợp các tham số đảo ngược khác nhau để tìm tham số tối ưu.

  • Kiểm tra các tham số khác nhau của chỉ số hồi sinh để tìm ra tham số tối ưu.

  • Thử các phương pháp tối ưu hóa tham số chỉ số khác nhau, chẳng hạn như thuật toán di truyền, rừng ngẫu nhiên.

  • Thêm các chỉ số phụ trợ để lọc thêm các tín hiệu.

  • Thêm mô hình học máy để tăng độ chính xác tín hiệu.

  • Tham gia vào các cơ chế quản lý rủi ro, chẳng hạn như dừng lỗ, quản lý vị trí.

Tóm tắt

Chiến lược này có thể cải thiện chất lượng tín hiệu giao dịch, có hiệu quả tốt hơn trong phản hồi bằng cách kết hợp chiến lược đảo ngược và chiến lược chỉ số dao động hồi sinh, sử dụng lợi thế của hai loại chiến lược khác nhau. Bằng cách tối ưu hóa tham số, thêm các chỉ số khác và quản lý rủi ro, chiến lược này có khả năng đạt được hiệu quả tốt hơn trên cơ sở. Nói chung, đây là một chiến lược rất sáng tạo, đáng để nghiên cứu và áp dụng thêm.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/10/2020
// 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 value of Fractal Chaos Oscillator is calculated as the difference between 
// the most subtle movements of the market. In general, its value moves between 
// -1.000 and 1.000. The higher the value of the Fractal Chaos Oscillator, the 
// more one can say that it follows a certain trend – an increase in prices trend, 
// or a decrease in prices trend.
//
//   Being an indicator expressed in a numeric value, traders say that this is an 
// indicator that puts a value on the trendiness of the markets. When the FCO reaches 
// a high value, they initiate the “buy” operation, contrarily when the FCO reaches a 
// low value, they signal the “sell” action. This is an excellent indicator to use in 
// intra-day trading.
//
// 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

fractalUp(pattern) =>
    p = high[pattern+1]
    okl = 1
    okr = 1
    res = 0.0
	for i = pattern to 1
		okl := iff(high[i] < high[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(high[i] < high[i-1] and okr == 1, 1, 0)
	res := iff(okl == 1 and okr == 1, p, res[1])
    res

fractalDn(pattern) =>
    p = low[pattern+1]
    okl = 1
    okr = 1
    res = 0.0
	for i = pattern to 1
		okl := iff(low[i] > low[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(low[i] > low[i-1] and okr == 1, 1, 0)
	res := iff(okl == 1 and okr == 1, p, res[1])
    res

FCO(Pattern) =>
    pos = 0.0
    xUpper = fractalUp(Pattern) 
    xLower = fractalDn(Pattern)
    xRes = iff(xUpper != xUpper[1], 1, 
             iff(xLower != xLower[1], -1, 0))
    pos := iff(xRes == 1, 1,
             iff(xRes == -1, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Fractal Chaos Oscillator", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Pattern = input(1, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFCO = FCO(Pattern)
pos = iff(posReversal123 == 1 and posFCO == 1 , 1,
	   iff(posReversal123 == -1 and posFCO == -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 )