Strategy vault / Trend following
MACD Trend Following Strategy
This strategy is named the MACD Trend Following Strategy. It is a quantitative strategy that utilizes the MACD indicator to determine price trends and follows the trends to trade. The strategy aims to capture…

Overview
This strategy is named the MACD Trend Following Strategy. It is a quantitative strategy that utilizes the MACD indicator to determine price trends and follows the trends to trade. The strategy aims to capture mid-to-long-term trends and adjust positions in a timely manner when trend reversals occur.
Strategy Logic
The strategy uses the MACD indicator to determine price trends. The MACD is a breakout indicator formed by the fast EMA line (12-day) and the slow EMA line (26-day). The difference between these two lines forms the MACD histogram, and the 9-day EMA of the histogram is the MACD signal line. When the MACD line crosses above the signal line, it is a golden cross, indicating an upward trend. When the MACD line crosses below the signal line, it is a dead cross, indicating a downward trend.
The strategy first calculates the MACD line and signal line, then computes the difference delta between the two lines. When delta crosses above 0, a buy signal is generated. When delta crosses below 0, a sell signal is generated. Based on these two signals, the strategy adjusts positions accordingly. To filter out noise, the strategy also introduces an EMA line - valid trade signals are only generated when the price breaks through this EMA line.
Specifically, the strategy logic is:
- Calculate the MACD line, signal line and the difference delta
- Determine if delta crossing above or below 0 signifies a trend reversal
- Compute an EMA line to serve as a filter
- When delta crosses above 0 and price is above EMA, generate buy signal
- When delta crosses below 0 and price is below EMA, generate sell signal
With this design, the strategy is able to follow mid-to-long-term trends and quickly adjust positions when trends reverse. It avoids being misled by short-term market noises.
Advantages
The strategy has the following advantages:
- Use MACD to accurately detect trend reversal points for entry and exit timing
- Adopt EMA filter to avoid interference from short-term market noises
- Only follow mid-to-long-term trends, avoiding whipsaws in ranging markets
- Simple and clear logic, easy to understand and modify the code
- Flexibility in controlling trading frequency by adjusting parameters
- High capital utilization to fully track mid-to-long-term trends
Risks
There are some risks to be mindful of:
- MACD as a trend following indicator can generate false signals in choppy markets
- EMA filter may filter out some valid trading opportunities
- Improper parameter settings may lead to over- or under-trading
- Unable to respond to short-term market changes due to lagging nature
- May miss optimal timing at trend turning points due to lag
Solutions:
- Optimize parameters and adjust EMA filter to reduce false signals
- Incorporate other indicators for confirmation to uncover more trades
- Implement stop loss to control loss on single trades
- Shorten holding period to improve flexibility
Optimization
The strategy can be further optimized in the following ways:
- Add other indicators to form a combined system for higher accuracy
- Introduce profit taking and stop loss mechanisms for better risk control
- Incorporate volume indicators to avoid false breakouts
- Adapt parameters dynamically based on market conditions to improve robustness
- Refine entry and exit logic to improve timing
- Scale in positions to better follow trends and reduce risk
Significant improvement can be achieved through methods like indicator combos, adaptive parameters, stop loss/profit taking etc.
Conclusion
In summary, the MACD Trend Following Strategy utilizes the simple and effective MACD indicator to identify mid-to-long-term trends, and implements a clear trend following logic. It has the capacity to capture trends as well as reasonable risk control measures. With further optimizations, the strategy can become a very practical quant trading system. It suits investors seeking steady long-term gains over short-term profits.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_1 | true | Long |
| v_input_2 | false | Short |
| v_input_3 | false | Use EMA filter |
| v_input_4 | 5 | EMA filter period |
| v_input_5 | 12 | fastLength |
| v_input_6 | 26 | slowlength |
| v_input_7 | 9 | MACDLength |
Source Pine Script
/*backtest
start: 2022-11-14 00:00:00
end: 2023-10-27 05:20:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's MACD Strategy v1.0", shorttitle = "MACD str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
usefil = input(false, defval = false, title = "Use EMA filter")
lenfil = input(5, defval = 5, minval = 1, maxval = 50, title = "EMA filter period")
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
//Signals
ema = ema(close, lenfil)
trend = crossover(delta, 0) == true ? 1 : crossunder(delta, 0) == true ? -1 : trend[1]
up = trend == 1 and (low < ema or usefil == false) ? 1 : 0
dn = trend == -1 and (high > ema or usefil == false) ? 1 : 0
plot(ema, color = black, transp = 0)
if (up == 1)
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
if (dn == 1)
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
Published by ChaoZhang on the FMZ strategy square · last modified 2023-11-15. 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/MACD-Trend-Following-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
- Adaptive ATR and RSI Trend Following Strategy with Trailing Stop LossPine Script · Trend following · 1h
- Advanced Multi Indicator Multi Dimensional Trend Cross Quantitative StrategyPine Script · Trend following · 3h
- Bollinger Bands and RSI Trend Following StrategyPine Script · Trend following · 1h
- Crossover EMA Short term Trading StrategyPine Script · Trend following · 1h
- Dual ATR Channel Trend Following StrategyPine Script · Trend following · 15m
- Dual EMA Crossover Oscillation Tracking StrategyPine Script · Trend following · 5m