
The Triple Filter Momentum Trend Capture System is a rule-based trend and momentum trading strategy that integrates three unique technical models (Advanced Sentiment Oscillator ASO, SSL Channel, and Momentum Breakout Indicator MBI) into a comprehensive engine. This strategy is designed for traders who prefer well-filtered entry points, reduced noise interference, and clear trading structure. This composite approach ensures signal reliability by requiring consistency across three independent indicators and uses ATR (Average True Range) to dynamically set take-profit and stop-loss levels, enabling adaptive risk management.
The core logic of this strategy is based on the synergistic interaction of three main technical indicators:
Advanced Sentiment Oscillator (ASO): Measures the dominance of bullish versus bearish forces in the market. ASO calculates market sentiment through custom formulas that blend intrabar pressure with group-range dynamics. This indicator has three calculation modes, allowing flexible emphasis on different market aspects. ASO generates crossover signals, which are a key confirmation element in the strategy.
SSL Channel: This is a classic trend-following method based on moving averages of highs and lows. It helps filter out false signals and align trades with the broader market direction. When the SSL upper line is above the lower line, it indicates a bullish trend, and vice versa.
Momentum Breakout Indicator (MBI): Looks for price breakouts above or below recent extremes. It acts as the final trigger mechanism after other filters are aligned. MBI works by checking if the price has broken out above or below the highest/lowest levels over a specific period (default 12).
Trading signals are generated only when the following conditions are met: - A fresh ASO/SSL trend agreement occurs - An MBI breakout happens in the same direction - A recent ASO crossover (bullish or bearish) confirms the signal
Specifically, the long entry condition is: MBI is positive (indicating an upward breakout), ASO is bullish (ASO Bulls > ASO Bears), ASO has just made a bullish crossover, and SSL is in a bullish state. The short entry conditions are the opposite. Once a trade is triggered, the system sets dynamic take-profit and stop-loss levels using ATR multiples, allowing risk management to adapt to market volatility.
Multiple Confirmation Mechanism: By requiring consistency across three independent indicators, the strategy significantly reduces false signals and improves trade quality. This “triple filter” approach ensures that only strong trend signals trigger trades.
Adaptive Risk Management: The strategy uses ATR to calculate take-profit and stop-loss levels, allowing it to automatically adjust to market volatility. This ensures consistent risk exposure across different market conditions.
Flexible Parameter Settings: The strategy allows users to adjust parameters for each component, including ASO period and calculation method, SSL moving average period, MBI breakout lookback period, and ATR-related settings, enabling optimization for different market environments and personal risk preferences.
Clear Trading Structure: The strategy has well-defined and easy-to-understand rules, providing traders with clear entry and exit conditions and reducing the need for subjective judgment.
No Overlapping Trades: The strategy is designed not to open new trades until the current one is closed, which helps manage risk and prevents overtrading.
Combination of Trend and Momentum: By combining trend-following (SSL) and momentum breakout (MBI) indicators, the strategy can capture trends while confirming momentum, which typically leads to more reliable trading signals.
Solution: Consider adjusting the parameters of individual indicators to adapt to different market environments, or possibly relaxing certain conditions in highly volatile markets.
Solution: Conduct comprehensive backtesting and parameter optimization to find the best parameter combinations for specific markets and timeframes. Consider using walk-forward testing to evaluate the impact of parameter changes on performance.
Solution: Consider adding trend strength filters or volatility adjustment mechanisms that modify strategy behavior under extreme market conditions. Also, implement more aggressive stop-loss mechanisms to mitigate potential large drawdowns.
Solution: Include slippage simulation in backtesting and use limit orders rather than market orders in live trading. Consider adding additional safety margins in the strategy to account for execution risks.
Solution: Consider incorporating fundamental filters or market sentiment indicators to complement technical signals. For example, add volatility conditions to avoid trading when market volatility is excessive.
Dynamic Parameter Adjustment: Implement a mechanism to automatically adjust strategy parameters based on market conditions such as volatility or trend strength. For example, ATR multiples could be increased in high-volatility environments and decreased in low-volatility environments. This would better adapt to different market states and improve strategy robustness.
Add Market Environment Filters: Introduce additional filters to identify the current market environment (such as trending, ranging, or random) and adjust strategy behavior accordingly. For instance, stricter entry conditions might be needed in ranging markets, while certain conditions could be relaxed in strong trending markets.
Partial Position Management: Implement a more sophisticated position management system that allows for partial entries and exits based on signal strength, market volatility, or other factors. This can help mitigate the risks of an “all-or-nothing” trading approach and provide more nuanced risk control.
Time Filter Optimization: Enhance the existing backtesting time filter functionality to include intraday time filtering or time filtering under specific market conditions. Certain markets may exhibit more pronounced trending characteristics during specific time periods, and optimizing the strategy for these periods could improve overall performance.
Indicator Improvements: Consider improvements or replacements for existing indicators. For example, adaptive moving averages could be used instead of simple moving averages in the SSL, or alternative calculation methods for ASO could be explored to better capture market sentiment changes.
Machine Learning Enhancement: Introduce machine learning algorithms to optimize parameter selection or predict which market conditions the strategy might perform best in. This can help the system learn from historical data and adapt to future market changes.
Take-Profit/Stop-Loss Optimization: Implement more sophisticated take-profit strategies, such as trailing take-profits or dynamic take-profits based on support/resistance levels. Similarly, consider intelligent stop-loss mechanisms based on market structure, rather than relying solely on ATR multiples.
The Triple Filter Momentum Trend Capture System is a comprehensive trading strategy that provides a strictly filtered trend-following approach by integrating ASO sentiment indicators, SSL trend channels, and MBI momentum breakout indicators. The main strengths of the strategy lie in its multiple confirmation mechanism and adaptive risk management system, which help reduce false signals and adapt to different market volatility conditions.
While there are potential risks such as over-filtering and parameter sensitivity, these issues can be effectively mitigated through appropriate parameter optimization and additional risk management techniques. Future optimization directions may include dynamic parameter adjustment, market environment filtering, and more sophisticated position management systems, all of which have the potential to further enhance the strategy’s performance and robustness.
Overall, this triple filter approach offers a valuable tool for traders seeking clear structure and reliable trading signals. By combining sentiment analysis, trend identification, and momentum confirmation, the strategy can identify high-probability trading opportunities across various market conditions while maintaining prudent risk management. For traders willing to invest time in parameter optimization and strategy adjustments, this approach can be a powerful component of their trading system.
/*backtest
start: 2024-06-16 00:00:00
end: 2025-06-14 08:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Darkoexe
//@version=5
strategy("PMZ's Triple Filter Trend Strategy {Darkoexe}", overlay=true, initial_capital=10000, pyramiding=2, margin_long=50, margin_short=50)
length=input.int(10,"ASO Period?",minval=1,maxval=100)
mode=input.int(0,"ASO Calculation Method:",minval=0,maxval=2)
intrarange=high-low
grouplow=ta.lowest(low,length)
grouphigh=ta.highest(high,length)
groupopen=open[length-1]
grouprange=grouphigh-grouplow
K1=intrarange==0 ? 1 : intrarange
K2=grouprange==0 ? 1 : grouprange
intrabarbulls=((((close-low)+(high-open))/2)*100)/K1
groupbulls=((((close-grouplow)+(grouphigh-groupopen))/2)*100)/K2
intrabarbears=((((high-close)+(open-low))/2)*100)/K1
groupbears=((((grouphigh-close)+(groupopen-grouplow))/2)*100)/K2
TempBufferBulls= mode==0 ? (intrabarbulls+groupbulls)/2 : mode==1 ? intrabarbulls : groupbulls
TempBufferBears= mode==0 ? (intrabarbears+groupbears)/2 : mode==1 ? intrabarbears : groupbears
ASOBulls=ta.sma(TempBufferBulls,length)
ASOBears=ta.sma(TempBufferBears,length)
//ASO
// Modification
var cross = false
var isASObull = ASOBulls>ASOBears ? true : false
if(ASOBulls>ASOBears and isASObull == false)
isASObull := true
cross := true
else if(ASOBulls<ASOBears and isASObull == true)
isASObull := false
cross := true
else
cross := false
//SSL
len=input.int(title="SSL Period", defval=10)
smaHigh=ta.sma(high, len)
smaLow=ta.sma(low, len)
float Hlv = na
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh: smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh
//Modification
var isSSLbull = sslUp>sslDown ? true: false
if(sslUp>sslDown)
isSSLbull := true
else if(sslUp<sslDown)
isSSLbull := false
//MBI
per = input(12,title="MBI Period")
H = ta.highest(hl2,per)
hi = H[1]
L = ta.lowest(hl2,per)
lo = L[1]
cl = close
ind = cl>hi? 1 : cl<lo? -1 : 0
//Modification
var longCondition = false
var shortCondition = false
if(ind>0 and isASObull==true and cross==true and isSSLbull==true)
longCondition := true
else if(ind<0 and isASObull==false and cross==true and isSSLbull==false)
shortCondition := true
// Define strategy parameters
// risk_percent = input(2, title="Risk Percentage")
targetATR = input(1, title="Take Profit ATR ratio")
stopLossATR = input(1.5, title="Stop loss ATR ratio")
atrPeriod = input(14, title="ATR period")
ATR = ta.atr(atrPeriod)
// Calculate take profit level based on the reward ratio
take_profit_price = longCondition? close + (targetATR*ATR): shortCondition? close - (targetATR*ATR): 0
stop_loss_price = longCondition? close - (stopLossATR*ATR): shortCondition? close + (stopLossATR*ATR): 0
if (longCondition and strategy.opentrades == 0)
// take_profit_price = close + targetATR*ATR
// stop_loss_price = close - (stopLossATR*ATR)
strategy.entry("My Long Entry Id", strategy.long)
strategy.exit("Exit", from_entry="My Long Entry Id", stop=stop_loss_price, limit=take_profit_price)
longCondition := false
else if (shortCondition and strategy.opentrades == 0)
// take_profit_price = close - targetATR*ATR
// stop_loss_price = close + (stopLossATR*ATR)
strategy.entry("My Short Entry Id", strategy.short)
strategy.exit("Exit", from_entry="My Short Entry Id", stop=stop_loss_price, limit=take_profit_price)
shortCondition := false