
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.
Chiến lược này bao gồm hai phần:
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.
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.
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.
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ẻ.
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í.
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.
/*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 )