
Chiến lược này là một chiến lược kết hợp hai yếu tố, được điều khiển bởi yếu tố chuyển đổi ngược và yếu tố kênh băng tần, thực hiện chồng lên nhiều yếu tố, có thể tạo ra lợi thế chiến lược trong các môi trường thị trường khác nhau.
Chiến lược này bao gồm hai chiến lược con:
123 Chiến lược đảo ngược: Khi giá đóng cửa sau hai ngày liên tiếp giảm, nếu giá đóng cửa hôm nay phá vỡ giá thấp nhất hai ngày liên tiếp trước đó, đồng thời vượt qua đường chậm trên đường nhanh của chỉ số ngẫu nhiên vào ngày 9, hãy làm nhiều; Khi giá đóng cửa sau hai ngày liên tiếp tăng, nếu giá đóng cửa hôm nay phá vỡ giá cao nhất hai ngày liên tiếp trước đó, đồng thời vượt qua đường chậm dưới đường nhanh của chỉ số ngẫu nhiên vào ngày 9, hãy làm trống.
Bộ lọc dải sóng: tính toán chỉ số dải sóng của giá trong một chu kỳ nhất định, làm nhiều khi chỉ số dải sóng lớn hơn một ngưỡng nhất định và làm trống khi chỉ số dải sóng nhỏ hơn một ngưỡng nhất định.
Tín hiệu kết hợp là: Nếu chiến lược đảo ngược 123 và chiến lược bộ lọc dải là đồng thời nhiều tín hiệu, hãy giữ nhiều vị trí; Nếu cả hai đều đồng thời có tín hiệu ngắn, hãy giữ vị trí ngắn; Nếu không, hãy xóa.
Chiến lược này kết hợp các yếu tố đảo ngược và yếu tố xu hướng để thực hiện giao dịch định lượng được điều khiển bởi nhiều yếu tố. Bằng cách xác minh hai yếu tố có thể làm giảm khả năng giao dịch sai, chiến lược có thể hoạt động tốt trong nhiều thị trường. Sau đó, có thể được tối ưu hóa hơn nữa bằng cách điều chỉnh tham số và thiết lập dừng lỗ, để tăng sự ổn định và lợi nhuận của chiến lược.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 21/05/2019
// This is combo strategies for get
// a cumulative signal. Result signal will return 1 if two strategies
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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 related article is copyrighted material from
// Stocks & Commodities Mar 2010
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// 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
Bandpass_Filter(Length, Delta, TriggerLevel) =>
xPrice = hl2
beta = cos(3.14 * (360 / Length) / 180)
gamma = 1 / cos(3.14 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
BP = 0.0
pos = 0.0
BP := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2])
pos := iff(BP > TriggerLevel, 1,
iff(BP <= TriggerLevel, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Bandpass Filter", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthBF = input(20, minval=1)
Delta = input(0.5)
TriggerLevel = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBandpass_Filter = Bandpass_Filter(LengthBF, Delta, TriggerLevel)
pos = iff(posReversal123 == 1 and posBandpass_Filter == 1 , 1,
iff(posReversal123 == -1 and posBandpass_Filter == -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 ? red: possig == 1 ? green : blue )