
Chiến lược này là một hệ thống phát sinh tín hiệu giao dịch dựa trên phân tích đồng bộ của nhiều chỉ số kỹ thuật. Chiến lược này tích hợp bốn chỉ số kỹ thuật cổ điển là chỉ số tương đối mạnh yếu (RSI), Bollinger Bands (BB), Intra-Day Movement Index (IMI) và MFI để tạo ra giao dịch đáng tin cậy hơn bằng cách xác minh chéo giữa các chỉ số. Chiến lược tín hiệu được thiết kế đặc biệt phù hợp với chu kỳ 4 giờ và được phân chia thành hai cấp tín hiệu thông thường và tín hiệu mạnh mẽ dựa trên cường độ tín hiệu.
Lý luận cốt lõi của chiến lược là xác nhận tín hiệu giao dịch thông qua sự phối hợp hợp của nhiều chỉ số. Cụ thể:
Chiến lược này xây dựng một hệ thống phát sinh tín hiệu giao dịch tương đối đáng tin cậy thông qua phân tích phối hợp của nhiều chỉ số kỹ thuật cổ điển. Chiến lược được thiết kế để tập trung vào tính thực tế và khả năng bảo trì, đồng thời dành đầy đủ không gian để tối ưu hóa. Bằng cách thực hiện các tham số thích hợp và hướng tối ưu hóa, chiến lược có thể đạt được hiệu suất ổn định trong giao dịch thực tế.
/*backtest
start: 2024-12-10 00:00:00
end: 2025-02-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Clear Buy/Sell Signals with RSI, Bollinger Bands, IMI, and MFI", overlay=true)
// Input parameters
rsiLength = input.int(14, title="RSI Length")
bbLength = input.int(20, title="Bollinger Bands Length")
bbStdDev = input.float(2.0, title="Bollinger Bands Std Dev")
imiLength = input.int(14, title="IMI Length")
mfiLength = input.int(14, title="MFI Length")
// RSI Calculation
rsi = ta.rsi(close, rsiLength)
// Bollinger Bands Calculation
[bbUpper, bbMiddle, bbLower] = ta.bb(close, bbLength, bbStdDev)
// Intraday Momentum Index (IMI) Calculation
upSum = math.sum(close > open ? close - open : 0, imiLength)
downSum = math.sum(close < open ? open - close : 0, imiLength)
imi = (upSum / (upSum + downSum)) * 100
// Money Flow Index (MFI) Calculation
typicalPrice = (high + low + close) / 3
mfi = ta.mfi(typicalPrice, mfiLength)
// Buy/Sell Conditions
buyCondition = rsi < 30 and close < bbLower and imi < 30 and mfi < 20
sellCondition = rsi > 70 and close > bbUpper and imi > 70 and mfi > 80
// Strong Buy/Sell Conditions
strongBuyCondition = rsi < 20 and close < bbLower and imi < 20 and mfi < 10
strongSellCondition = rsi > 80 and close > bbUpper and imi > 80 and mfi > 90
// Plot Buy/Sell Signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
// Plot Strong Buy/Sell Signals
plotshape(series=strongBuyCondition, title="Strong Buy Signal", location=location.belowbar, color=color.lime, style=shape.labelup, text="STRONG BUY", size=size.normal)
plotshape(series=strongSellCondition, title="Strong Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="STRONG SELL", size=size.normal)
// Strategy Logic (for Backtesting)
if (buyCondition or strongBuyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition or strongSellCondition)
strategy.entry("Sell", strategy.short)