Strategy vault / Trend following
Intraday Moving Average Crossover Trading Strategy
This strategy utilizes the golden cross and death cross of Moving Averages (MA) to identify turning points in market trends and capitalize on short-term price fluctuations of stocks. It calculates two MAs with…

Overview
This strategy utilizes the golden cross and death cross of Moving Averages (MA) to identify turning points in market trends and capitalize on short-term price fluctuations of stocks. It calculates two MAs with different time periods, namely a shorter-period MA and a longer-period MA. When the shorter-period MA crosses above the longer-period MA, a buy signal is generated. When the shorter-period MA crosses below the longer-period MA, a sell signal is generated.
Strategy Logic
The core logic of this strategy lies in the crossover relationships between the shorter-period MA and longer-period MA. The shorter-period MA reflects recent price changes more swiftly, while the longer-period MA has better noise reduction capabilities to depict long-term price trends. When the shorter MA crosses above the longer MA, it indicates prices have started trending higher recently and may signal a short-term reversal, hence triggering a buy signal to capture subsequent upside. Conversely, when the shorter MA crosses below the longer MA, it signals recent downward price momentum and potential for a short-term reversal, thus generating a sell signal.
Specifically, this strategy applies the ta.sma function on the close prices to compute two MA lines: maShort (9 periods) and maLong (21 periods). It then uses the ta.crossover and ta.crossunder functions to determine if the shorter MA has crossed above or below the longer MA, in order to produce buy and sell signals accordingly. Stop loss and take profit logic is implemented at the end to lock in profits and manage risks.
Advantages
- Effectively identifies short-term trend reversal points using MA crossover concept
- Considers both recent and long-term price changes to improve signal quality
- Intuitively depicts price direction and momentum
- Simple to understand and implement, suitable for high-frequency short-term trading
- Flexible MA parameters catered to different trading instruments
Compared to single MA systems, this strategy synthesizes the value of both shorter-period and longer-period MAs, resulting in fewer false signals and higher probability of profitability. Meanwhile, MA crossover signals are clear and straightforward for operators to interpret and act upon efficiently.
Risks
- MA crossover signals may lag, thus missing optimal reversal timing
- Strictly following MA crosses may result in excessive trading frequency
- Poor MA period settings negatively impact signal quality
- Individual stock characteristics also affect MA crossover system efficacy
Mechanically chasing MA crossover signals without judging market conditions and stock traits may lead to low profitability or high transaction costs from overtrading. Additionally, MA signals themselves may lag behind actual trend turning points.
Enhancement Opportunities
- Optimize combination of short and long MA periods
- Incorporate other analytical tools to identify short-term and long-term trends
- Consider individual stock traits and adjust strategy parameters accordingly
- Integrate price volume indicators to spot authentic reversal signals
- Employ stop loss methods to rationally limit losses
For instance, other technical indicators like MACD, KDJ may be used to validate MA crossover signals and prevent misfires. MA parameters can also be tuned based on different trading instruments to enhance stability. Meanwhile, stop loss levels should be set appropriately to avoid oversized losses on individual trades. Comprehensively applying all such optimization techniques can substantially improve actual strategy performance building upon the simple MA crossover concept.
Conclusion
This strategy designs a straightforward short-term trading approach based on the MA crossover principle. By harmonizing the strengths of shorter-period MAs and longer-period MAs, it considers both recent price developments and long-term trends to produce high-quality trading signals. It suits active traders well-versed in using technical analysis tools. Further optimizations around aspects like MA periods can lead to strong excess returns.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_int_1 | 9 | Short MA Length |
| v_input_int_2 | 21 | Long MA Length |
| v_input_float_1 | true | Stop Loss % |
| v_input_float_2 | true | Take Profit % |
Source Pine Script
/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Intraday MA Crossover Strategy", overlay=true)
// Define MA lengths
maLengthShort = input.int(9, title="Short MA Length", minval=1)
maLengthLong = input.int(21, title="Long MA Length", minval=1)
// Calculate MAs
maShort = ta.sma(close, maLengthShort)
maLong = ta.sma(close, maLengthLong)
// Plot MAs on the chart
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")
// Generate Buy Signal (Golden Cross: Short MA crosses above Long MA)
buySignal = ta.crossover(maShort, maLong)
strategy.entry("Buy", strategy.long, when=buySignal)
// Generate Sell Signal (Death Cross: Short MA crosses below Long MA)
sellSignal = ta.crossunder(maShort, maLong)
strategy.entry("Sell", strategy.short, when=sellSignal)
// Set stop loss and take profit levels
stopLossPercent = input.float(1, title="Stop Loss %", minval=0.1, maxval=5)
takeProfitPercent = input.float(1, title="Take Profit %", minval=0.1, maxval=5)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100)
Published by ChaoZhang on the FMZ strategy square · last modified 2024-01-19. 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/Intraday-Moving-Average-Crossover-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 MA and EMA Long Only Trend Tracking StrategyPine Script · Trend following · 1d
- ATR and Moving Average Crossover Hybrid StrategyPine Script · Trend following · 1h
- Adaptive FVG Detection and MA Trend Trading Strategy with Dynamic ResistancePine Script · Trend following · 1d
- Adaptive Risk Management Strategy Based on Dynamic ATR and Moving Average CrossoverPine Script · Trend following · 2h
- Adaptive Trading Strategy Based on Stochastic RSI Dual Line CrossoverPine Script · Trend following · 4h
- Adaptive Volatility Based Trend Following Short Strategy with Time Delay and Stop Loss ProtectionPine Script · Trend following · 2m