Quadratic Momentum Double Indicators Timing Strategy
This strategy fuses the SuperTrend indicator with Elliott Wave theory to build a robust technical trading tool. It employs multi-level trend analysis to provide a more comprehensive market perspective that can early…

Overview
This strategy fuses the SuperTrend indicator with Elliott Wave theory to build a robust technical trading tool. It employs multi-level trend analysis to provide a more comprehensive market perspective that can early capture potential trend reversals and significant price moves.
Strategy Principle
The core idea lies in its multi-tiered approach:
- Use 4 SuperTrend indicators, each with different ATR lengths and multipliers, to judge the trend from short to long term
- Pinpoint robust long and short signals through indicator convergence
- Refer to Elliott Wave's pattern recognition method to identify similar market behaviors to confirm trade signals
Thus, it utilizes multiple indicators and adds pattern recognition to make the strategy more robust.
Advantage Analysis
- Multi-indicator design provides comprehensive judgment
- Wave theory inspiration increases stability through pattern recognition
- Real-time direction adjustment adapts to market changes
- Configurable parameters suit different products and time frames
Risk Analysis
- Parameter setting relies on experience, requiring tuning to determine optimal parameter combinations
- Multi-indicator design is complex, increasing computational load
- Cannot completely avoid incorrect signal generation
Parameters can be optimized to gradually determine the optimum; cloud computing can improve computational performance; stop losses can control risk.
Optimization Directions
Optimizations can be made in several aspects:
- Add adaptive parameter adjustment module to dynamically tune parameters based on market conditions
- Incorporate machine learning models to aid in judging signal reliability
- Combine sentiment indicators, news events etc. to determine market regimes
- Support multi-product parameter templates to reduce testing workload
This will make strategy parameters more intelligent, judgments more accurate, and practical application more convenient.
Summary
The strategy comprehensively considers both trend and pattern dimensions, ensuring judgment robustness while increasing flexibility. Multi-indicators and parameter settings ensure full market applicability. With further incorporation of intelligent and automated methods, strategy practicality can be greatly enhanced. It provides valuable inspiration and reference for the advancement of technical trading.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_string_1 | 0 | Select Trading Direction: Both | Short | Long |
| v_input_1 | 7 | ATR Length for SuperTrend 1 |
| v_input_2 | 4 | Multiplier for SuperTrend 1 |
| v_input_3 | 14 | ATR Length for SuperTrend 2 |
| v_input_4 | 3.618 | Multiplier for SuperTrend 2 |
| v_input_5 | 21 | ATR Length for SuperTrend 3 |
| v_input_6 | 3.5 | Multiplier for SuperTrend 3 |
| v_input_7 | 28 | ATR Length for SuperTrend 3 |
| v_input_8 | 3.382 | Multiplier for SuperTrend 3 |
Source Pine Script
/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Elliott's Quadratic Momentum - Strategy [presentTrading]",shorttitle = "EQM Strategy [presentTrading]", overlay=true )
// Inputs for selecting trading direction
tradingDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"])
// SuperTrend Function
supertrend(src, atrLength, multiplier) =>
atr = ta.atr(atrLength)
up = hl2 - (multiplier * atr)
dn = hl2 + (multiplier * atr)
trend = 1
trend := nz(trend[1], 1)
up := src > nz(up[1], 0) and src[1] > nz(up[1], 0) ? math.max(up, nz(up[1], 0)) : up
dn := src < nz(dn[1], 0) and src[1] < nz(dn[1], 0) ? math.min(dn, nz(dn[1], 0)) : dn
trend := src > nz(dn[1], 0) ? 1 : src < nz(up[1], 0)? -1 : nz(trend[1], 1)
[up, dn, trend]
// Inputs for SuperTrend settings
atrLength1 = input(7, title="ATR Length for SuperTrend 1")
multiplier1 = input(4.0, title="Multiplier for SuperTrend 1")
atrLength2 = input(14, title="ATR Length for SuperTrend 2")
multiplier2 = input(3.618, title="Multiplier for SuperTrend 2")
atrLength3 = input(21, title="ATR Length for SuperTrend 3")
multiplier3 = input(3.5, title="Multiplier for SuperTrend 3")
atrLength4 = input(28, title="ATR Length for SuperTrend 3")
multiplier4 = input(3.382, title="Multiplier for SuperTrend 3")
// Calculate SuperTrend
[up1, dn1, trend1] = supertrend(close, atrLength1, multiplier1)
[up2, dn2, trend2] = supertrend(close, atrLength2, multiplier2)
[up3, dn3, trend3] = supertrend(close, atrLength3, multiplier3)
[up4, dn4, trend4] = supertrend(close, atrLength4, multiplier4)
// Entry Conditions based on SuperTrend and Elliott Wave-like patterns
longCondition = trend1 == 1 and trend2 == 1 and trend3 == 1 and trend4 == 1
shortCondition = trend1 == -1 and trend2 == -1 and trend3 == -1 and trend4 == - 1
// Strategy Entry logic based on selected trading direction
if tradingDirection == "Long" or tradingDirection == "Both"
if longCondition
strategy.entry("Long", strategy.long)
// [Any additional logic for long entry]
if tradingDirection == "Short" or tradingDirection == "Both"
if shortCondition
strategy.entry("Short", strategy.short)
// [Any additional logic for short entry]
// Exit conditions - Define your own exit strategy
// Example: Exit when any SuperTrend flips
if trend1 != trend1[1] or trend2 != trend2[1] or trend3 != trend3[1] or trend4 != trend4[1]
strategy.close_all()
// Function to apply gradient effect
gradientColor(baseColor, length, currentBar) =>
var color res = color.new(baseColor, 100)
if currentBar <= length
res := color.new(baseColor, int(100 * currentBar / length))
res
// Apply gradient effect
color1 = gradientColor(color.blue, atrLength1, bar_index % atrLength1)
color4 = gradientColor(color.blue, atrLength4, bar_index % atrLength3)
// Plot SuperTrend with gradient for upward trend
plot1Up = plot(trend1 == 1 ? up1 : na, color=color1, linewidth=1, title="SuperTrend 1 Up")
plot4Up = plot(trend4 == 1 ? up4 : na, color=color4, linewidth=1, title="SuperTrend 3 Up")
// Plot SuperTrend with gradient for downward trend
plot1Down = plot(trend1 == -1 ? dn1 : na, color=color1, linewidth=1, title="SuperTrend 1 Down")
plot4Down = plot(trend4 == -1 ? dn4 : na, color=color4, linewidth=1, title="SuperTrend 3 Down")
// Filling the area between the first and third SuperTrend lines for upward trend
fill(plot1Up, plot4Up, color=color.new(color.green, 80), title="SuperTrend Upward Band")
// Filling the area between the first and third SuperTrend lines for downward trend
fill(plot1Down, plot4Down, color=color.new(color.red, 80), title="SuperTrend Downward Band")
Published by ChaoZhang on the FMZ strategy square · last modified 2024-02-04. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.
Build this with AgenKit
A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Quadratic-Momentum-Double-Indicators-Timing-Strategy.md- npx agenkit install engineering-kit in your project
- Paste the command into your agent and approve each phase
- Get tests, backtest, risk controls and a paper-trading switch
Understand it first
Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.
Related specs
- Advanced Multi Indicator Trend Following and Momentum Quantitative Trading StrategyPine Script · Momentum · 1h
- Momentum Trend Following SuperTrend and Stochastic Crossover StrategyPine Script · Momentum · 2d
- Moving Average Candle Regression StrategyPine Script · Momentum · 15m
- Multi Indicator Trend Momentum Crossover Quantitative StrategyPine Script · Momentum · 1d
- Vishal Adaptive Multi Indicator Trading StrategyPine Script · Momentum · 2d
- Adaptive Momentum Trading Strategy with SMA Crossover and SuperTrendPine Script · Momentum · 2h