Chiến lược này là sự kết hợp của hai chiến lược giao dịch định lượng nhằm tạo ra tín hiệu giao dịch chính xác và đáng tin cậy hơn. Chiến lược đầu tiên dựa trên sự đảo ngược giá, chiến lược thứ hai dựa trên phân tích khối lượng giao dịch.
Chiến lược này bao gồm hai phần:
Sử dụng chỉ số STO để đánh giá tín hiệu đảo ngược. Khi giá đóng cửa tăng lên hai ngày và đường chậm STO thấp hơn 50, hãy làm nhiều; Khi giá đóng cửa giảm hai ngày và đường nhanh STO cao hơn 50.
Tính toán quan hệ giá trị khối lượng giao dịch trong một chu kỳ nhất định, đánh giá hướng đa không, và xử lý trơn bằng phẳng.
Hai phần của chiến lược là nhiều thì làm nhiều, và không thì làm không.
Tín hiệu kết hợp có thể cải thiện chất lượng tín hiệu, trong đó bất kỳ chiến lược nào sẽ làm giảm đáng kể khả năng phát hiện tín hiệu giả.
Các biện pháp sau đây có thể làm giảm nguy cơ:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Điều chỉnh các tham số như giá trị K, giá trị D để tìm sự kết hợp tốt nhất
Tham gia các chỉ số hỗ trợ như MACD, BOLL
Kiểm tra các tham số khác nhau của chu kỳ để có được phán đoán ổn định hơn
Ví dụ, khi biến dạng xảy ra, chúng ta sẽ quay trở lại.
Các thành phần khác nhau không nhất thiết phải được thử nghiệm riêng biệt
Chiến lược này có thể cải thiện hiệu quả của chiến lược bằng cách kết hợp hai loại chiến lược khác nhau, đảo ngược và giao dịch, xác minh lẫn nhau, có thể nâng cao chất lượng và độ chính xác của tín hiệu. Nhưng cũng cần chú ý đến tối ưu hóa tham số, chỉ số kỹ thuật hỗ trợ để cải thiện hiệu quả của chiến lược. Chúng ta có thể có được chiến lược kết hợp thực sự ổn định và đáng tin cậy bằng cách liên tục kiểm tra kết quả trả lại, điều chỉnh quy tắc tham số và kiểm tra trong thực tế.
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 21/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
// This is another version of FVE indicator that we have posted earlier
// in this forum.
// This version has an important enhancement to the previous one that`s
// especially useful with intraday minute charts.
// Due to the volatility had not been taken into account to avoid the extra
// complication in the formula, the previous formula has some drawbacks:
// The main drawback is that the constant cutoff coefficient will overestimate
// price changes in minute charts and underestimate corresponding changes in
// weekly or monthly charts.
// And now the indicator uses adaptive cutoff coefficient which will adjust to
// all time frames automatically.
//
// 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
FVI(Samples,Perma,Cintra,Cinter) =>
pos = 0
xhl2 = hl2
xhlc3 = hlc3
xClose = close
xIntra = log(high) - log(low)
xInter = log(xhlc3) - log(xhlc3[1])
xStDevIntra = stdev(sma(xIntra, Samples) , Samples)
xStDevInter = stdev(sma(xInter, Samples) , Samples)
xVolume = volume
TP = xhlc3
TP1 = xhlc3[1]
Intra = xIntra
Vintra = xStDevIntra
Inter = xInter
Vinter = xStDevInter
CutOff = Cintra * Vintra + Cinter * Vinter
MF = xClose - xhl2 + TP - TP1
FveFactor = iff(MF > CutOff * xClose, 1,
iff(MF < -1 * CutOff * xClose, -1, 0))
xVolumePlusMinus = xVolume * FveFactor
Fvesum = sum(xVolumePlusMinus, Samples)
VolSum = sum(xVolume, Samples)
xFVE = (Fvesum / VolSum) * 100
xEMAFVE = ema(xFVE, Perma)
pos :=iff(xFVE > xEMAFVE, 1,
iff(xFVE < xEMAFVE, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Volatility Finite Volume Elements", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Samples = input(22, minval=1)
Perma = input(40, minval=1)
Cintra = input(0.1)
Cinter = input(0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFVI = FVI(Samples,Perma,Cintra,Cinter)
pos = iff(posReversal123 == 1 and posFVI == 1 , 1,
iff(posReversal123 == -1 and posFVI == -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 )