Bidirectional MACD Momentum and EMA Trend Trading Strategy

MACD EMA TP/SL BACKTEST ROI
Created on: 2025-02-20 15:58:38 Modified on: 2025-02-20 15:58:38
Copy: 4 Number of hits: 353
avatar of ianzeng123 ianzeng123
2
Follow
319
Followers

 Bidirectional MACD Momentum and EMA Trend Trading Strategy  Bidirectional MACD Momentum and EMA Trend Trading Strategy

Overview

This strategy is a bidirectional trading system that combines MACD momentum indicator with EMA trend analysis. It primarily bases entry decisions on MACD crossover signals and price position relative to EMA(200). The strategy employs a 2:1 risk-reward ratio, can operate on a 5-minute timeframe, and supports flexible parameter adjustment.

Strategy Principles

The core logic is based on the following key conditions: 1. Long Entry Conditions: - Price above EMA(200) - MACD line crosses signal line from below - MACD value below zero line 2. Short Entry Conditions: - Price below EMA(200) - MACD line crosses signal line from above - MACD value above zero line 3. Risk management uses preset stop-loss and take-profit ratios, defaulting to 1:2

Strategy Advantages

  1. Clear and simple logic, easy to understand and implement
  2. Combines trend and momentum indicators for more reliable trading signals
  3. Features flexible parameter settings for optimization across different market conditions
  4. Supports bidirectional trading to capture market opportunities
  5. Built-in risk management mechanism helps protect capital

Strategy Risks

  1. May generate frequent false signals in ranging markets
  2. Fixed stop-loss and take-profit ratios might not suit all market conditions
  3. Sensitive to changes in market volatility
  4. Frequent trading may result in high commission costs
  5. Might miss some opportunities in fast-moving markets

Strategy Optimization Directions

  1. Introduce volatility indicators for dynamic adjustment of stop-loss and take-profit levels
  2. Add volume confirmation signals to improve entry quality
  3. Implement market environment filters to avoid trading under unfavorable conditions
  4. Develop dynamic parameter optimization system
  5. Add time filters to avoid trading during low liquidity periods

Summary

This is a well-designed strategy system that provides relatively reliable trading signals through the combination of technical indicators. While there are some potential risks, the strategy shows good practical application potential through proper optimization and risk management. It is recommended to conduct thorough backtesting before live trading and adjust parameters according to specific market conditions.

Strategy source code
/*backtest
start: 2025-02-12 00:00:00
end: 2025-02-19 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © @DieBartDie

//@version=5
strategy("Strategy with MACD and EMA", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Editable parameters
ema_length = input.int(200, title="EMA Length")
tp_ratio = input.float(2.0, title="Take Profit Ratio (%)") // Take Profit ratio
sl_ratio = input.float(1.0, title="Stop Loss Ratio (%)")   // Stop Loss ratio

// MACD configuration
fast_length = input.int(12, title="MACD Fast Length")
slow_length = input.int(26, title="MACD Slow Length")
signal_length = input.int(9, title="MACD Signal Length")

// Operation type configuration
operation_type = input.string("Long & Short", title="Operation Type", options=["Long", "Short", "Long & Short"])

// Indicators
ema_200 = ta.ema(close, ema_length)
[macd, signal, _] = ta.macd(close, fast_length, slow_length, signal_length)

// Conditions for LONG entries
price_above_ema = close > ema_200
macd_above_signal = ta.crossover(macd, signal) // MACD crosses above the signal line
macd_below_zero = macd < 0
long_condition = price_above_ema and macd_above_signal and macd_below_zero

// Conditions for SHORT entries
price_below_ema = close < ema_200
macd_below_signal = ta.crossunder(macd, signal) // MACD crosses below the signal line
macd_above_zero = macd > 0
short_condition = price_below_ema and macd_below_signal and macd_above_zero

// Calculate Stop Loss and Take Profit
stop_loss_long = close * (1 - sl_ratio / 100)
take_profit_long = close * (1 + tp_ratio / 100)
stop_loss_short = close * (1 + sl_ratio / 100)
take_profit_short = close * (1 - tp_ratio / 100)

// Execute LONG position if conditions are met
if (operation_type == "Long" or operation_type == "Long & Short") and long_condition
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss_long, limit=take_profit_long)

// Execute SHORT position if conditions are met
if (operation_type == "Short" or operation_type == "Long & Short") and short_condition
    strategy.entry("Short", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Short", stop=stop_loss_short, limit=take_profit_short)

// Plot the EMA
plot(ema_200, color=color.orange, linewidth=2, title="EMA 200")