
The Multi-Timeframe Quadruple-Factor Trend-Momentum Trading System is a comprehensive quantitative trading strategy that combines trend confirmation, price momentum, and multi-timeframe analysis. This strategy integrates the Hull Moving Average (HMA), Ichimoku Cloud, daily candle comparison, and a Hull-based MACD indicator to identify high-probability market entry points through multiple confirmation mechanisms. It aims to capture sustained trend movements while effectively filtering out false signals.
The core principle of this strategy is the coordinated action of four key components to confirm trading direction:
Hull Moving Average Crossover: Calculates the Hull Moving Average for the current period and the previous period. When the current HMA is greater than the previous HMA, it’s considered a bullish signal; otherwise, it’s bearish. The Hull Moving Average responds faster to price changes while maintaining smoothness, effectively reducing the lag commonly found in traditional moving averages.
Daily Candle Comparison: Through cross-timeframe analysis, compares the current daily price with the previous day’s price. When today’s price is higher than yesterday’s, it confirms upward momentum; otherwise, it confirms downward momentum. This component provides market direction confirmation from a higher timeframe.
Ichimoku Cloud Trend Confirmation: Uses the relative position of Senkou Span A and Senkou Span B from the Ichimoku Kinko Hyo to confirm market trends. When Senkou Span A is above Span B, it confirms a bullish trend; otherwise, it confirms a bearish trend.
Hull-Based MACD Momentum Indicator: Uses two Hull Moving Averages of different periods to calculate the MACD line, with another Hull Moving Average as the signal line. When the MACD line is above the signal line, it indicates upward momentum; otherwise, it indicates downward momentum.
Trading signals require all four conditions to be met simultaneously: - Long entry conditions: Bullish HMA cross + Upward daily momentum + Price above previous HMA + Bullish Ichimoku Cloud + MACD above signal line - Short entry conditions: The reverse combination of the above conditions
Multiple Confirmation Mechanism: The strategy requires confirmation from four different technical indicators, significantly reducing the possibility of false signals and improving the reliability of trading signals.
Multi-Timeframe Integration: By incorporating daily level price dynamics, the strategy can confirm market direction at a higher level, avoiding erroneous judgments during short-term fluctuations.
Balance of Response Speed and Filtering: The Hull Moving Average has faster response and less lag compared to traditional moving averages while maintaining good smoothing effects, achieving a balance between signal timeliness and noise filtering.
Dual Verification of Trend and Momentum: Combining Ichimoku Cloud’s trend confirmation with MACD’s momentum confirmation verifies both the direction and strength of the market, improving the success rate of trades.
Strong Adaptability: All components of the strategy have adjustable parameters that can be optimized for different market environments and trading instruments, providing strong adaptability.
Parameter Sensitivity: The strategy involves multiple indicator parameter settings, such as Hull Moving Average periods and Ichimoku line calculation periods. Different parameter combinations can lead to vastly different trading results, risking overfitting to historical data.
Lag Risk: Although the Hull Moving Average has less lag than traditional moving averages, any strategy based on technical indicators cannot completely avoid signal lag issues, potentially leading to less-than-ideal entry points.
Poor Performance in Ranging Markets: The strategy is primarily designed for trending markets and may generate frequent false signals in sideways or highly volatile market environments, leading to consecutive losses.
Multiple Conditions Restrict Trading Frequency: The requirement for all four conditions to be met simultaneously may result in relatively rare trading signals, potentially missing profitable opportunities in certain market environments.
Data Dependency in Cross-Timeframe Analysis: Daily data requests require more historical data support, potentially increasing the computational resource requirements and backtesting complexity.
Risk mitigation methods: - Optimize parameters for different market environments to find robust parameter combinations - Consider adding stop-loss mechanisms to control single-trade risk - Consider temporarily disabling the strategy or adding additional filtering conditions in sideways markets - Incorporate volatility indicators to adjust strategy sensitivity in high-volatility environments
Dynamic Parameter Adjustment Mechanism: Consider automatically adjusting Hull Moving Average and MACD parameters based on market volatility, using longer periods in high-volatility environments to reduce noise and shorter periods in low-volatility environments to increase sensitivity.
Add Stop-Loss and Take-Profit Mechanisms: The current strategy primarily focuses on entry signals. Adding dynamic stop-loss and take-profit mechanisms based on ATR (Average True Range) or Ichimoku Cloud components would improve the risk management system.
Add Volume Confirmation: Consider using volume indicators as additional confirmation factors, executing trading signals only when supported by volume, which can improve the accuracy of trend judgment.
Optimize Multi-Timeframe Structure: In addition to daily and current periods, consider adding intermediate-level timeframe analysis to build a more complete multi-timeframe confirmation system, such as adding 4-hour or weekly level trend confirmation.
Machine Learning Optimization: Utilize machine learning algorithms to automatically find optimal parameter combinations or predict and adjust strategy performance in different market environments based on historical pattern recognition.
Add Filtering Conditions: Consider adding filtering conditions based on market structure (such as support/resistance levels) or volatility cycles to avoid generating trading signals in unfavorable market environments.
These optimization directions aim to improve the strategy’s adaptability and stability in different market environments while maintaining the integrity and effectiveness of the core strategy logic.
The Multi-Timeframe Quadruple-Factor Trend-Momentum Trading System is a comprehensive quantitative strategy that pursues high-quality trading signals through the coordinated action of Hull Moving Average, daily price comparison, Ichimoku Cloud, and Hull-MACD. It confirms market trends and momentum at multiple levels, making it particularly suitable for medium to long-term trend-following trading. The multiple confirmation mechanism effectively filters out false signals, improving trading reliability.
Although the strategy faces certain challenges in parameter selection and market adaptability, with proper risk management and targeted optimization, its performance in different market environments can be further enhanced. In particular, improvements in dynamic parameter adjustment, stop-loss and take-profit mechanisms, and multi-timeframe structure optimization could help the strategy maintain high-quality signal characteristics while improving overall profitability stability and risk-adjusted returns.
The core value of this strategy lies in its strict requirements for trading signal quality. Through multi-level, multi-perspective market analysis, it provides a solid technical foundation for trading decisions, representing a refined quantitative trading method that pursues quality over quantity.
/*backtest
start: 2024-08-11 00:00:00
end: 2025-08-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Ichimoku + Daily-Candle_X + HULL-MA_X + MacD (v6)", shorttitle="٩(̾●̮̮̃̾•̃̾)۶", overlay=true,
initial_capital=10000, default_qty_type=strategy.percent_of_equity,
default_qty_value=100, commission_type=strategy.commission.percent,
commission_value=0.25, slippage=1, max_bars_back=2999)
// === INPUTS ===
hmaPeriod = input.int(14, minval=1, title="Hull MA Period")
resolution = input.timeframe("D", title="Daily Candle Resolution")
priceSource = input.source(open, title="Price Source")
// Ichimoku inputs
conversionPeriod = input.int(9, minval=1, title="Conversion Line Period")
basePeriod = input.int(26, minval=1, title="Base Line Period")
spanPeriod = input.int(52, minval=1, title="Lagging Span Period")
displacement = input.int(26, minval=1, title="Displacement")
// MACD inputs
macdFastLen = input.int(12, title="MACD Fast Length")
macdSlowLen = input.int(26, title="MACD Slow Length")
macdSignalLen = input.int(9, title="MACD Signal Length")
// === HULL MOVING AVERAGE ===
hmaNow = ta.hma(priceSource, hmaPeriod)
hmaPrev = ta.hma(priceSource[1], hmaPeriod)
hmaBull = hmaNow > hmaPrev
hmaBear = hmaNow < hmaPrev
// === DAILY CANDLE COMPARISON ===
dailyNow = request.security(syminfo.tickerid, resolution, priceSource)
dailyPrev = request.security(syminfo.tickerid, resolution, priceSource[1])
dailyBull = dailyNow > dailyPrev
dailyBear = dailyNow < dailyPrev
// === ICHIMOKU ===
donchian(len) =>
(ta.lowest(len) + ta.highest(len)) / 2
conversionLine = donchian(conversionPeriod)
baseLine = donchian(basePeriod)
leadLine1 = (conversionLine + baseLine) / 2
leadLine2 = donchian(spanPeriod)
// === CUSTOM MACD USING HULL ===
macdLine = ta.hma(priceSource, macdFastLen) - ta.hma(priceSource, macdSlowLen)
macdSignal = ta.hma(macdLine, macdSignalLen)
macdBull = macdLine > macdSignal
macdBear = macdLine < macdSignal
// === ENTRY CONDITIONS ===
longCondition = hmaBull and dailyBull and priceSource > hmaPrev and leadLine1 > leadLine2 and macdBull
shortCondition = hmaBear and dailyBear and priceSource < hmaPrev and leadLine1 < leadLine2 and macdBear
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// === OPTIONAL PLOTS ===
// Uncomment these if you want to see the indicators visually
// plot(hmaNow, color=color.green, title="HMA Now")
// plot(hmaPrev, color=color.red, title="HMA Prev")
// plot(conversionLine, color=color.blue, title="Conversion Line")
// plot(baseLine, color=color.red, title="Base Line")
// plot(priceSource, offset=-displacement, color=color.gray, title="Lagging Span")
// lead1 = plot(leadLine1, offset=displacement, color=color.green, title="Lead Line 1")
// lead2 = plot(leadLine2, offset=displacement, color=color.red, title="Lead Line 2")
// fill(lead1, lead2, color=leadLine1 > leadLine2 ? color.new(color.green, 80) : color.new(color.red, 80))