Dynamic Momentum Oscillator Trading Strategy
The Dynamic Momentum Oscillator Trading Strategy is based on the Dynamo indicator proposed by E. Marshall Wall in an article published in Futures magazine in July 1996. It normalizes a standard oscillator to…

Overview
The Dynamic Momentum Oscillator Trading Strategy is based on the Dynamo indicator proposed by E. Marshall Wall in an article published in Futures magazine in July 1996. It normalizes a standard oscillator to eliminate the impact of trends.
Strategy Logic
The strategy first calculates a 10-day Stochastic Oscillator, then calculates its 10-day simple moving average, and further calculates a 20-day moving average based on that. This forms the foundation for the Dynamo calculation.
The strategy then calculates the highest and lowest values of the oscillator and computes the midpoint. It takes the difference between the 20-day average and the original oscillator and subtracts that difference from the midpoint to form a normalized oscillator value. It goes long when this normalized value is above 77 and goes short when it's below 23.
Advantage Analysis
The main advantages of this strategy are:
By utilizing the Dynamo indicator, it eliminates the impact of trends and generates more reliable trading signals.
By combining overbought/oversold areas, it can produce relatively accurate signals at turning points.
The rules are simple and clear, easy to implement.
Risk Analysis
The main risks of this strategy are:
At market shocks, the probability of wrong signals from the indicator will be higher. Stop loss can be used to control the risk.
In oscillating markets, frequent false signals may occur. Parameters can be adjusted to filter out some noise.
High trading frequency may lead to considerable trading costs that eat into profits.
Optimization Directions
The strategy can be optimized in the following aspects:
Test data from different markets to find the optimal contract and parameter combinations.
Add filters to judge the strength of the trend before signals to avoid being trapped in oscillating markets.
Incorporate stop loss mechanisms. Exit trades when prices breach certain thresholds in unfavorable directions.
Develop more complex trading systems based on this strategy by combining signals from multiple other indicators.
Summary
The Dynamic Momentum Oscillator Trading Strategy generates relatively accurate trading signals by eliminating trend impact and using overbought/oversold areas. The strategy is simple and easy to implement but also has some risks. Further improvements to stability and profitability can be achieved by optimizing parameters and rules.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_1 | 10 | OscLen |
| v_input_2 | 20 | MALen |
| v_input_3 | 77 | HiBand |
| v_input_4 | 23 | LowBand |
| v_input_5 | false | Trade reverse |
Source Pine Script
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 10/04/2017
// In July 1996 Futures magazine, E. Marshall Wall introduces the
// Dynamic Momentum Oscillator (Dynamo). Please refer to this article
// for interpretation.
// The Dynamo oscillator is a normalizing function which adjusts the
// values of a standard oscillator for trendiness by taking the difference
// between the value of the oscillator and a moving average of the oscillator
// and then subtracting that value from the oscillator midpoint.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading
////////////////////////////////////////////////////////////
strategy(title="Dynamo", shorttitle="Dynamo")
OscLen = input(10, minval=1)
MALen = input(20, minval=1)
HiBand = input(77, minval=1)
LowBand = input(23)
reverse = input(false, title="Trade reverse")
hline(HiBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
xOscK = stoch(close, high, low, OscLen)
xOscAvg = sma(xOscK, OscLen)
xMAVal = sma(xOscAvg, MALen)
maxNum = 9999999
LowestSoFar = iff(xOscAvg < nz(LowestSoFar[1], maxNum), xOscAvg, nz(LowestSoFar[1], maxNum))
HighestSoFar = iff(xOscAvg > nz(HighestSoFar[1]), xOscAvg, nz(HighestSoFar[1]))
MidPnt = (LowestSoFar + HighestSoFar) / 2
nRes = MidPnt - (xMAVal - xOscAvg)
pos = iff(nRes > HiBand, 1,
iff(nRes < LowBand, -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="Dynamo")Published by ChaoZhang on the FMZ strategy square · last modified 2024-01-22. 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/Dynamic-Momentum-Oscillator-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
- Momentum Trend Following SuperTrend and Stochastic Crossover StrategyPine Script · Momentum · 2d
- MoonFlag MACD Momentum StochRSI Trading StrategyPine Script · Momentum · 1d
- Multi EMA Trend Momentum Trading Strategy with Risk Management SystemPine Script · Momentum · 1h
- Multi Indicator Probability Threshold Momentum Trend Trading StrategyPine Script · Momentum · 1d
- Multi factor Adaptive Momentum Tracking StrategyPine Script · Momentum · 3m
- Pivot and Momentum StrategyPine Script · Momentum · 1d