Overview
This is a trend-following trading strategy that combines the T3 Tilson moving average, Inverse Fisher Transform (IFT) of RSI, and ATR volatility indicator. The strategy creates a high-quality, low-noise trading system through the synergistic action of three powerful indicators. T3 Tilson serves as the main trend indicator, reacting smoothly to market direction changes while reducing noise; the Inverse Fisher Transform of RSI acts as a momentum filter, enhancing signal precision; and the ATR filter avoids entries during low volatility (sideways) periods, ensuring trades are only executed when market activity is sufficiently high.
Strategy Principles
The core logic of this strategy is based on the combination of three indicators:
T3 Tilson Moving Average: An improved moving average developed by Tim Tilson, combining six exponential moving averages (EMAs). The code calculates T3 Tilson through the following steps:
- First calculating a series of nested EMAs: e1 through e6
- Then applying specific weight coefficients (c1 through c4) to combine these EMAs
- The resulting T3 Tilson curve is both smooth and responsive to price changes
Inverse Fisher Transform of RSI:
- First calculating the standard RSI (Relative Strength Index)
- Then normalizing RSI-50 (multiplying by 0.1)
- Finally applying the Inverse Fisher Transform formula, compressing values between -1 and +1
- This transformation makes momentum signals clearer and reduces false signals
ATR Filter:
- Calculating the Average True Range (ATR) to measure market volatility
- Setting a minimum threshold to ensure trading only when the market has sufficient activity
Entry conditions are combined as follows:
- Long Entry: T3 Tilson rising (current value greater than previous value) + IFT(RSI) greater than 0 (positive momentum) + ATR greater than threshold (sufficient volatility)
- Short Entry: T3 Tilson falling (current value less than previous value) + IFT(RSI) less than 0 (negative momentum) + ATR greater than threshold (sufficient volatility)
Strategy Advantages
Through deep analysis of the code, this strategy demonstrates the following significant advantages:
Noise Filtering: The T3 Tilson moving average significantly reduces price noise compared to ordinary moving averages, avoiding many false signals. It maintains smoothness while not being excessively lagging.
Multiple Confirmation Mechanism: The strategy requires the coordinated confirmation of three different indicators to trigger a trading signal, greatly improving signal quality. Trend direction (T3 Tilson), momentum state (IFT RSI), and volatility condition (ATR) must all be satisfied simultaneously.
Strong Adaptability: Multiple parameters in the code (such as t3Length, t3VFactor, rsiLength, etc.) can be adjusted according to different markets and timeframes, giving the strategy strong adaptability.
Clear Market State Identification: Through IFT(RSI) and ATR, the strategy can identify whether the market is in a clear trend or a low-volatility sideways phase, trading only under favorable conditions.
Risk Consistency: The strategy uses a fixed quantity of 1 unit, ensuring consistency in risk assessment and simplifying risk management.
High Profit Factor: According to the code comments, this strategy demonstrates a profit factor above 3 on index futures, which is an important indicator of trading strategy quality.
Strategy Risks
Despite being well-designed, this strategy still has the following potential risks:
Parameter Sensitivity: Multiple indicator parameters (such as T3 length, RSI length, ATR threshold, etc.) significantly impact strategy performance. Inappropriate parameter settings may lead to over-optimization or poor performance under different market conditions.
Trend Reversal Risk: Although T3 Tilson responds faster than simple moving averages, there may still be some lag during sudden market reversals, leading to losses during the initial phase of trend reversals.
Lack of Stop-Loss Mechanism: There are no explicit stop-loss or take-profit settings in the code, which may lead to expanded losses in adverse market conditions. The solution is to add appropriate stop-loss/take-profit logic.
Market Adaptation Issues: The code comments mention that the strategy may need modification for high-volatility markets like Bitcoin and Ethereum, indicating that the strategy is not a "one-size-fits-all" solution and needs adjustment according to market characteristics.
Low Win Rate Risk: The comments mention a win rate of only about 32% on XAUUSD, and while the risk-reward ratio is favorable, a low win rate may lead to consecutive losses, putting pressure on money management and trader psychology.
Volatility Dependence: Relying on the ATR threshold may miss opportunities in markets where volatility patterns suddenly change, or result in false entries during misleading volatility.
Strategy Optimization Directions
Based on deep analysis of the code, the strategy can be optimized in the following directions:
Dynamic Stop-Loss/Take-Profit: Add dynamic stop-loss and take-profit mechanisms based on ATR or other volatility indicators to adapt to different market conditions and protect profits. For example, set stop-loss at entry point minus N times ATR, and take-profit at entry point plus M times ATR.
Dynamic Position Management: Replace the fixed 1-unit trading quantity with dynamic position calculation based on account size, volatility, and risk parameters to optimize capital efficiency and risk control.
Multi-Timeframe Analysis: Introduce multi-timeframe confirmation, such as verifying the main trend direction in a larger timeframe and seeking entry points in a smaller timeframe, improving entry precision.
T3 Tilson Angle Filter: Calculate the angle or slope of T3 Tilson and only enter when the trend is strong enough (angle steep enough), further reducing false signals in weak trends.
Market-Specific Parameter Optimization: Create specific parameter sets for different trading instruments to adapt to the unique characteristics of various markets, as mentioned in the code comments about adjusting parameters for cryptocurrency markets.
Add Trading Time Filter: Add trading time filters to avoid low liquidity periods or known high-volatility but directionless market opening/closing periods.
Condition Weighting System: Implement a condition weighting system to adjust entry decisions based on the strength of various indicator signals, rather than simple boolean condition combinations, potentially improving strategy sensitivity.
Summary
This trading strategy combining T3 Tilson, Inverse Fisher Transform of RSI, and ATR represents a balanced and effective trend-following approach. The strategy significantly reduces noise through multiple filtering mechanisms and improves signal quality through coordinated confirmation of trend, momentum, and volatility. Its advantages lie in clear signals, fewer false signals, and strong adaptability, making it particularly suitable for markets such as index futures.
However, like any strategy, it has limitations and room for improvement in areas such as parameter sensitivity, trend reversal risk, and lack of stop-loss mechanisms. By adding dynamic stop-loss/take-profit, optimizing position management, implementing multi-timeframe analysis, and other enhancements, the strategy's robustness and profitability can be further improved.
Overall, this is a well-designed "master version" strategy that, as stated in the code comments, provides a "clean, unoptimized, and stable core engine" that can serve as a foundation for building and testing enhanced versions. Whether professional traders or trading strategy researchers, anyone can start from this framework and make personalized adjustments and optimizations according to their own needs and market characteristics.
Strategy source code
/*backtest
start: 2024-07-06 00:00:00
end: 2025-07-05 10:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy("VDN1 - T3 Tilson + IFT + ATR", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// === INPUTS ===
t3Length = input.int(8, title="T3 Tilson Length")
t3VFactor = input.float(0.7, title="T3 Volume Factor", step=0.1)
rsiLength = input.int(14, title="RSI Length")
atrLength = input.int(14, title="ATR Length")
atrThreshold = input.float(0.5, title="Min ATR Threshold", step=0.1)
// === T3 Tilson Calculation ===
e1 = ta.ema(close, t3Length)
e2 = ta.ema(e1, t3Length)
e3 = ta.ema(e2, t3Length)
e4 = ta.ema(e3, t3Length)
e5 = ta.ema(e4, t3Length)
e6 = ta.ema(e5, t3Length)
c1 = -t3VFactor * t3VFactor * t3VFactor
c2 = 3 * t3VFactor * t3VFactor + 3 * t3VFactor * t3VFactor * t3VFactor
c3 = -6 * t3VFactor * t3VFactor - 3 * t3VFactor - 3 * t3VFactor * t3VFactor * t3VFactor
c4 = 1 + 3 * t3VFactor + t3VFactor * t3VFactor * t3VFactor + 3 * t3VFactor * t3VFactor
t3Tilson = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
// === IFT RSI ===
rsi = ta.rsi(close, rsiLength)
value = 0.1 * (rsi - 50)
expValue = (math.exp(2 * value) - 1) / (math.exp(2 * value) + 1)
ift = expValue
// === ATR ===
atr = ta.atr(atrLength)
// === Conditions ===
longCond = t3Tilson > t3Tilson[1] and ift > 0 and atr > atrThreshold
shortCond = t3Tilson < t3Tilson[1] and ift < 0 and atr > atrThreshold
// === Entries ===
if (longCond)
strategy.entry("Long", strategy.long, qty=1)
if (shortCond)
strategy.entry("Short", strategy.short, qty=1)
// === Drawings ===
plot(t3Tilson, title="T3 Tilson", color=color.orange)
hline(0, 'Zero Line', color=color.gray)
plot(ift, title="IFT RSI", color=color.new(color.blue, 0))
plot(atr, title="ATR", color=color.new(color.red, 0))
Strategy parameters
The original address: Multi-Indicator Trend Following Strategy with Momentum and Volatility Filters
Top comments (1)
This strategy is like the Swiss Army knife of trend following — momentum, volatility, multiple indicators… I half expected it to brew me a coffee too! ☕ Seriously though, love how balanced the filtering is. Might have to give this a spin before my next “buy high, panic sell” moment. Thanks for sharing!