0bps

Strategy vault / Trend following

Moving Average Crossover Quantitative Strategy

This strategy generates entry and exit signals by calculating the EMA exponential moving average and the MACD indicator and combining the crossover signals of both. It goes long when the price crosses above the EMA…

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

IMG

Overview

This strategy generates entry and exit signals by calculating the EMA exponential moving average and the MACD indicator and combining the crossover signals of both. It goes long when the price crosses above the EMA line and the MACD line crosses above the signal line, and goes short when the price crosses below the EMA line and the MACD line crosses below the signal line.

Strategy Logic

This strategy uses the EMA exponential moving average to determine the current trend direction. At the same time, it uses the moving average crossover of the MACD indicator to generate trading signals. Only when the price breaks through the EMA line will the MACD golden cross and death cross signals be considered. This avoids false signals.

The strategy is mainly based on the advantages of moving average trading strategies and MACD trading strategies. The moving average can judge the trend direction quite well. The fast and slow line crossovers of the MACD exponential moving average can indicate buy and sell points. Using both in combination can improve the accuracy of the signals.

Advantage Analysis

This strategy combines the EMA and MACD dual indicators to effectively filter out some false signals and improve signal quality. At the same time, the EMA judges the major trend and the MACD judges specific entry and exit points. The two complement each other and can achieve good returns.

In addition, this strategy only considers the MACD signal when the price breaks through the EMA line, avoiding wrong trades in choppy markets. This also enhances the stability of the strategy.

Risk Analysis

The main risk of this strategy lies in parameter settings. If the parameters of EMA and MACD are set improperly, signals may be missed or false signals may be generated. In addition, if the market trend reverses, the strategy will incur some losses.

To reduce risks, parameters should be adjusted appropriately to match the current market cycle of EMA and MACD. At the same time, it is recommended to use stop loss to control single loss. When the market enters a bottoming process or touches support, trading should be suspended to avoid sustained losses.

Optimization Directions

The following aspects of the strategy can be optimized:

  1. Dynamically optimize parameters to adjust EMA and MACD parameters according to real-time market conditions and cycles to ensure parameter validity

  2. Add other indicators in combination, such as BOLL channels or KD indicators, to enrich strategy signals

  3. Use machine learning methods to automatically optimize strategy parameters and adjust parameters based on backtest results

  4. When breaking through the EMA line, judge the strength of the direction to avoid false breakouts

  5. Add profit taking and stop loss strategies to lock in profits and cut losses

Summary

The moving average crossover quantitative strategy combines dual EMA and MACD indicators to effectively generate high quality signals. Optimizing parameter settings, adding stop loss/profit taking, adding other indicators, etc. can further enhance the stability and profitability of the strategy. This effective and simple strategy has great reference and application value for quantitative traders.

Parameters

NameDefaultWhat it controls
v_input_112Fast Length
v_input_226Slow Length
v_input_39MACD Length
v_input_413EMA Length

Source Pine Script

/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("LONERTESTV2", overlay=true)

// Input definitions
fastLength = input(12, title="Fast Length")
slowlength = input(26, title="Slow Length")
MACDLength = input(9, title="MACD Length")
emaLength = input(13, title="EMA Length")
//smaLength = input(200, title="SMA Length")

// SMA Indicator - Are we in a Bull or Bear market according to 200 SMA?
//SMA = ta.ema(close, smaLength)

// EMA Indicator - Are we in a rally or not?
EMA = ta.ema(close, emaLength)

// MACD Indicator - Is the MACD bullish or bearish?
MACD = ta.ema(close, fastLength) // - ta.ema(close, slowlength)
aMACD = ta.ema(MACD, MACDLength)
delta = MACD - aMACD

// Set Buy/Sell conditions
buy_entry = close > EMA and delta > 5 ? true : close > EMA and delta > -5
sell_entry = close < EMA and delta < -5 ? true : close < EMA and delta < 5

if buy_entry
    strategy.entry(id='EL', direction=strategy.long)

if sell_entry
    strategy.entry(id='ES', direction=strategy.short)

// strategy.entry("Buy", strategy.long)
// strategy.entry("Sell", strategy.short)

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

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/Moving-Average-Crossover-Quantitative-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