0bps

Strategy vault / Trend following

Multi Moving Average Trend Following Trading Strategy

This strategy is a trend following system based on multiple moving averages. It utilizes three Simple Moving Averages (SMA) with different periods (50, 100, 200) to capture trending opportunities through crossover…

Author
ChaoZhang
Complexity
Starter · 52 lines
Parameters
0
Backtest bar
1d · swing
Tested on
BTC/USDT · futures

IMG

Overview

This strategy is a trend following system based on multiple moving averages. It utilizes three Simple Moving Averages (SMA) with different periods (50, 100, 200) to capture trending opportunities through crossover signals between the fast and medium MAs, combined with trend confirmation from the slow MA. The strategy design aligns with classic trend following principles, enhancing signal reliability through multi-timeframe moving average combinations.

Strategy Principles

The core logic is based on the following key elements:

  1. Three SMAs with different periods: Fast (50), Medium (100), and Slow (200)
  2. Entry signal conditions:
    • Long entry: Fast MA crosses above Medium MA with price above Slow MA
    • Short entry: Fast MA crosses below Medium MA with price below Slow MA
  3. Exit signal generation:
    • Long exit: Fast MA crosses below Medium MA
    • Short exit: Fast MA crosses above Medium MA
  4. Slow MA serves as a trend filter to improve trading signal quality

Strategy Advantages

  1. Strong system stability: Triple MA cross-verification effectively filters false signals
  2. Comprehensive risk control: Trend confirmation through Slow MA reduces counter-trend trading probability
  3. Wide adaptability: Applicable to different timeframes and market conditions
  4. Clear operational rules: Entry and exit signals are well-defined and easy to execute
  5. Good visualization: Trade signals are intuitive through color coding and graphical annotations

Strategy Risks

  1. Lag risk: Moving averages are inherently lagging indicators, may miss early trend moves
  2. Ineffective in ranging markets: May generate frequent false signals during consolidation phases
  3. Capital efficiency risk: Entry points may be far from trend inception, affecting capital utilization
  4. Stop-loss control: Lacks explicit stop-loss mechanisms, requires additional risk control measures

Optimization Directions

  1. Incorporate volatility indicators: Integrate ATR for optimizing entry timing and position sizing
  2. Add trend strength filtering: Include ADX for improving trading signal quality
  3. Enhance stop-loss mechanism: Design dynamic stops based on volatility to protect profits
  4. Optimize parameter adaptability: Dynamically adjust MA parameters based on market cycles
  5. Add volume confirmation: Incorporate volume indicators to enhance signal reliability

Summary

This strategy represents a classic trend following system that ensures signal reliability and effective trend capture through multiple moving averages. While it has inherent lag, proper optimization and risk management can make it a robust trading system. Its core strengths lie in system stability and operational clarity, making it suitable as a foundation for medium to long-term trend trading.

Source Pine Script

/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("MA Cross Strategy", overlay=true)

// Input untuk periode Moving Average dan warna label
fastLength = input.int(50, minval=1, title="Fast MA Length")
mediumLength = input.int(100, minval=1, title="Medium MA Length")
slowLength = input.int(200, minval=1, title="Slow MA Length")
longLabelColor = input.color(color.green, "Long Label Color")
shortLabelColor = input.color(color.red, "Short Label Color")

// Hitung Moving Average
fastMA = ta.sma(close, fastLength)
mediumMA = ta.sma(close, mediumLength)
slowMA = ta.sma(close, slowLength)

// Kondisi untuk buy dan sell
longCondition = ta.crossover(fastMA, mediumMA) and close >= slowMA
shortCondition = ta.crossunder(fastMA, mediumMA) and close <= slowMA

// Plot Moving Average
plot(fastMA, color=color.green, linewidth=1, title="Fast MA")
plot(mediumMA, color=color.orange, linewidth=1, title="Medium MA")
plot(slowMA, color=color.red, linewidth=2, title="Slow MA")

// Plot penanda crossover dengan warna dinamis
plot(ta.cross(fastMA, mediumMA) and (longCondition or shortCondition) ? mediumMA : na, 
     color=longCondition ? color.green : color.red, 
     style=plot.style_circles, linewidth=4, title="Crossover")
     
// Plot label saat kondisi entry terpenuhi
plotshape(longCondition, title="Long", location=location.belowbar, style=shape.labelup, size=size.normal, color=color.green, textcolor=color.white, text="Long")
plotshape(shortCondition, title="Short", location=location.abovebar, style=shape.labeldown, size=size.normal, color=color.red, textcolor=color.white, text="Short")

// Strategi
if longCondition
    strategy.entry("Long", strategy.long)
if shortCondition
    strategy.entry("Short", strategy.short)

// Exit strategy (berdasarkan crossover MA)
if ta.crossunder(fastMA, mediumMA) and strategy.position_size > 0
    strategy.close("Long")
if ta.crossover(fastMA, mediumMA) and strategy.position_size < 0
    strategy.close("Short")

Published by ChaoZhang on the FMZ strategy square · last modified 2024-12-20. 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.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Multi-Moving-Average-Trend-Following-Trading-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. 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

esc

Try , , or .

↑↓ move↵ open