Dual Rate of Change Momentum Indicator Trading Strategy
This is a trading strategy based on the Dual Rate of Change Momentum Indicator (DRCMI). It generates trading signals by gauging market momentum across multiple timeframes.

Overview
This is a trading strategy based on the Dual Rate of Change Momentum Indicator (DRCMI). It generates trading signals by gauging market momentum across multiple timeframes.
Strategy Logic
The core of this strategy is the DRCMI, which is a weighted average of multiple Rate of Change (ROC) indicators across different periods. Specifically, it incorporates 6-period, 10-period, 15-period, and 20-period ROC. The 6-period and 10-period ROC have a weight of 1, while the 15-period ROC has a weight of 2, and the 20-period ROC has a weight of 3. Thus, longer-term ROC is given greater emphasis.
By combining ROC across timeframes, the DRCMI reflects both short-term and longer-term momentum. When it is positive, it indicates an uptrend in both the short and long run. When negative, it signals a downtrend. The intensity of the momentum is also captured in the amplitude of DRCMI fluctuations.
Trading signals are generated based on the cyclicality of DRCMI. A long position is initiated when DRCMI crosses above 0, while a short position is initiated when it crosses below 0.
Advantage Analysis
The main advantages of this strategy are:
- Integrates momentum across periods for more accurate trend identification.
- Better captures cyclicality compared to single timeframe ROC.
- Reasonable weighting methodology focuses on longer-term to filter noise.
- Simple to implement with just a single indicator for signals.
- Customizable lookback periods suit different products.
Risk Analysis
There are also some risks to consider:
- Sensitivity to parameters with multiple integrated timeframes.
- May overlook other factors by only considering momentum.
- Potential lag requires optimized entry and exit.
- Stop loss still necessary during high volatility.
To mitigate risks, stop losses should be utilized along with optimization of the DRCMI parameters and incorporation of additional technical indicators.
Optimization Directions
Some ways to improve the strategy:
- Optimize DRCMI parameters like periods and weights.
- Incorporate trend indicators to dynamically adjust parameters based on market regime.
- Implement dynamic stops to lock in profits.
- Consider intermarket relationships with correlation analysis to construct spreads.
Conclusion
This strategy generates trading signals by condensing momentum from multiple timeframes into the DRCMI indicator. It is simple yet effective in profiting from momentum swings. However, parameter tuning and stop loss implementation requires further optimization, and combining DRCMI with additional technical indicators can improve performance.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_1 | false | Trade reverse |
Source Pine Script
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 20/09/2017
// This indicator really is the KST indicator presented by Martin Pring.
// the KST indicator is a weighted summed rate of change oscillator that
// is designed to identify meaningful turns. Various smoothed rate of change
// indicators can be combined to form different measurements of cycles.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="MovROC (KST indicator)", shorttitle="MovROC (KST indicator)")
reverse = input(false, title="Trade reverse")
hline(0, color=purple, linestyle=line)
xROC6 = sma(roc(close, 6), 10)
xROC10 = sma(roc(close, 10), 10)
xROC15 = sma(roc(close, 15), 9)
xROC20 = sma(roc(close, 20), 15)
nRes = xROC6 + (2 * xROC10) + (3 * xROC15) + (4 * xROC20)
pos = iff(nRes > 0, 1,
iff(nRes < 0, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=blue, title="MovROC (KST indicator)")Published by ChaoZhang on the FMZ strategy square · last modified 2023-11-23. 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/Dual-Rate-of-Change-Momentum-Indicator-Trading-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
- ADX Momentum Trend StrategyPine Script · Momentum · 10m
- Adaptive Trend Following Strategy Based on Momentum OscillatorPine Script · Momentum · 1d
- Bollinger Bands Momentum Trend Following Quantitative StrategyPine Script · Momentum · 1d
- Confirmed SMA Crossover Momentum StrategyPine Script · Momentum · 1d
- Cross Momentum Trend Following Strategy SMA RSI Cross Momentum SystemPine Script · Momentum · 1h
- Dual Moving Average Momentum Trading Strategy Time Optimized Trend Following SystemPine Script · Momentum · 2m