Chiến lược này kết hợp nhiều chỉ số kỹ thuật như hệ thống đường trung bình, chỉ số RSI và chỉ số Stoch để đánh giá xu hướng giá và tình trạng quá mua quá bán, tạo ra tín hiệu giao dịch. Chiến lược này tập hợp các lợi thế của nhiều chỉ số để theo đuổi quyết định giao dịch ổn định và đáng tin cậy hơn.
Nguyên tắc chiến lược:
Tính toán đường trung bình EMA đa nhóm để xác định xu hướng đường dài trung bình của giá.
Tính toán RSI và Stoch để xác định xem đang quá mua hay quá bán.
Khi hệ thống đường trung bình phát ra nhiều tín hiệu, RSI không vượt quá giá, Stoch không vượt quá giá, hãy thực hiện nhiều thao tác.
Khi hệ thống đường trung bình phát tín hiệu giảm giá, RSI không vượt quá hoặc Stoch không vượt quá, hãy thực hiện hoạt động giảm giá.
Khi bất kỳ chỉ số nào phát ra tín hiệu đảo ngược, hãy thực hiện thao tác bằng phẳng.
Những lợi thế của chiến lược này:
Kiểm tra kết hợp nhiều chỉ số có thể làm giảm khả năng giao dịch sai.
Các chỉ số này có thể bổ sung cho nhau và giúp đánh giá thị trường.
Các quy tắc giao dịch rõ ràng, dễ dàng kiểm tra lại và thực hiện.
Rủi ro của chiến lược này:
Cần thận trọng đánh giá tính lặp lại của các chỉ số, tránh sự dư thừa.
Các tham số tối ưu hóa kết hợp đa chỉ số phức tạp hơn.
Việc tăng các chỉ số không nhất thiết làm tăng hiệu quả chiến lược.
Tóm lại, chiến lược kết hợp nhiều chỉ số này có thể cải thiện hiệu quả ra quyết định ở một mức độ nhất định, nhưng cần lưu ý đến sự khó khăn trong việc tối ưu hóa và vấn đề lặp lại của chỉ số, giữ cho chiến lược đơn giản và đáng tin cậy.
/*backtest
start: 2022-09-06 00:00:00
end: 2023-09-12 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// strategy(title='Combined Strategy', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=.0020, pyramiding=0, slippage=3, overlay=true)
//----------//
// MOMENTUM //
//----------//
ema8 = ta.ema(close, 5)
ema13 = ta.ema(close, 9)
ema21 = ta.ema(close, 13)
ema34 = ta.ema(close, 21)
ema55 = ta.ema(close, 34)
plot(ema8, color=color.new(color.red, 0), style=plot.style_line, title='5', linewidth=1)
plot(ema13, color=color.new(color.orange, 0), style=plot.style_line, title='9', linewidth=1)
plot(ema21, color=color.new(color.yellow, 0), style=plot.style_line, title='13', linewidth=1)
plot(ema34, color=color.new(color.aqua, 0), style=plot.style_line, title='21', linewidth=1)
plot(ema55, color=color.new(color.lime, 0), style=plot.style_line, title='34', linewidth=1)
longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55
exitLongEmaCondition = ema13 < ema55
shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55
exitShortEmaCondition = ema13 > ema55
// ---------- //
// OSCILLATORS //
// ----------- //
rsi = ta.rsi(close, 14)
longRsiCondition = rsi < 70 and rsi > 40
exitLongRsiCondition = rsi > 70
shortRsiCondition = rsi > 30 and rsi < 60
exitShortRsiCondition = rsi < 30
Stochastic
length = 14, smoothK = 3, smoothD = 3
kFast = ta.stoch(close, high, low, 14)
dSlow = ta.sma(kFast, smoothD)
longStochasticCondition = kFast < 80
exitLongStochasticCondition = kFast > 95
shortStochasticCondition = kFast > 20
exitShortStochasticCondition = kFast < 5
//----------//
// STRATEGY //
//----------//
longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0
exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0
if (longCondition)
strategy.entry("LONG", strategy.long)
if (exitLongCondition)
strategy.close("LONG")
shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0
exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0
if (shortCondition)
strategy.entry("SHORT", strategy.short)
if (exitShortCondition)
strategy.close("SHORT")