0bps

Strategy vault / Breakout

Long Entry on EMA Cross with Risk Management Strategy

This strategy is a long entry strategy based on the crossover of the Exponential Moving Average (EMA). It enters a long position when the price crosses above the EMA and exits when the price crosses below the EMA…

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

IMG

Overview

This strategy is a long entry strategy based on the crossover of the Exponential Moving Average (EMA). It enters a long position when the price crosses above the EMA and exits when the price crosses below the EMA. The strategy also incorporates stop loss (SL), target profit (TP), and trailing stop loss (TSL) as additional risk management measures to control potential downside risks and lock in profits.

Strategy Principle

  1. Calculate the EMA for a specified period (e.g., 20).
  2. When the price crosses above the EMA, execute a long entry.
  3. Set the stop loss price at a certain percentage (e.g., 1%) below the entry price.
  4. Set the target profit price at a certain percentage (e.g., 2%) above the entry price.
  5. Set the trailing stop loss price at a certain percentage (e.g., 0.5%) below the current price and move it up as the price increases.
  6. Exit the position when the price crosses below the EMA or when the stop loss, target profit, or trailing stop loss price is hit.

Strategy Advantages

  1. Simplicity: The strategy is based on the widely used EMA technical indicator, making it easy to understand and implement.
  2. Trend Following: By entering positions when the price breaks above the EMA, the strategy can capture potential trending opportunities.
  3. Risk Management: Built-in risk control measures such as stop loss, target profit, and trailing stop loss help control downside risks and lock in profits.
  4. Adaptability: Parameters such as the EMA period, stop loss percentage, target profit percentage, and trailing stop loss percentage can be flexibly adjusted based on different markets and trading styles.

Strategy Risks

  1. False Breakouts: The price may quickly reverse after breaking above the EMA, leading to false signals and potential losses.
  2. Lag: As a lagging indicator, the EMA may only signal after a trend has already begun, missing out on early entry opportunities.
  3. Choppy Markets: In choppy market conditions, frequent EMA crossovers may lead to overtrading and potential losses.
  4. Parameter Sensitivity: Inappropriate parameter settings (e.g., EMA period or percentages) may result in poor strategy performance.

Strategy Optimization Directions

  1. Combining with Other Indicators: Consider combining EMA with other technical indicators (e.g., RSI, MACD) to improve signal reliability and filter out false signals.
  2. Dynamic Stop Loss and Profit Targets: Adjust stop loss and profit targets dynamically based on market volatility or price levels, rather than using fixed percentages.
  3. Trend Confirmation: After an EMA crossover, wait for further evidence of trend establishment (e.g., higher highs or higher lows) to reduce the risk of false breakouts.
  4. Multiple Timeframe Analysis: Observe EMA crossovers on different timeframes (e.g., daily, 4-hour) to seek confirmation of trend consistency across multiple timeframes.

Summary

This strategy provides a simple yet effective approach to trading based on EMA crossovers, following potential trends that break above the EMA while employing risk control measures such as stop loss, target profit, and trailing stop loss. However, the strategy is subject to risks such as false breakouts, lagging signals, poor performance in choppy markets, and parameter sensitivity. Optimization considerations include combining with other indicators, dynamic stop loss and profit target settings, trend confirmation, and multiple timeframe analysis. Proper adjustments should be made based on specific markets and trading styles. It is essential to thoroughly test and optimize the strategy in backtesting and demo environments before deploying it in a real account.

Parameters

NameDefaultWhat it controls
v_input_120EMA Length
v_input_2trueStop Loss %
v_input_32Target %
v_input_40.5Trailing Stop Loss %

Source Pine Script

/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Long Entry on EMA Cross with Risk Management", overlay=true)

// Parameters
emaLength = input(20, title="EMA Length")
stopLossPercent = input(1, title="Stop Loss %")
targetPercent = input(2, title="Target %")
trailingStopLossPercent = input(0.5, title="Trailing Stop Loss %")

// Calculate EMA
ema = ema(close, emaLength)

// Long Entry Condition
longCondition = crossover(close, ema)

// Exit Condition
exitCondition = crossunder(close, ema)

// Stop Loss, Target Profit, Trailing Stop Loss
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent / 100)
targetProfitLevel = strategy.position_avg_price * (1 + targetPercent / 100)
trailingStopLossLevel = close * (1 - trailingStopLossPercent / 100)
trailingStopLossLevel := max(trailingStopLossLevel, nz(trailingStopLossLevel[1]))

// Submit Long Order
strategy.entry("Long", strategy.long, when=longCondition)

// Submit Exit Orders
strategy.exit("Exit", "Long", stop=stopLossLevel, limit=targetProfitLevel, trail_offset=trailingStopLossLevel, when=exitCondition)

// Plot EMA
plot(ema, color=color.blue, linewidth=2)

// Plot Stop Loss, Target Profit, and Trailing Stop Loss Levels
plot(stopLossLevel, title="Stop Loss", color=color.red, linewidth=2)
plot(targetProfitLevel, title="Target Profit", color=color.green, linewidth=2)
plot(trailingStopLossLevel, title="Trailing Stop Loss", color=color.orange, linewidth=2)

Published by ChaoZhang on the FMZ strategy square · last modified 2024-04-29. 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/Long-Entry-on-EMA-Cross-with-Risk-Management-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