---
title: MACD Chris Moody Strategy
slug: macd-chris-moody-strategy-5-filters-that-transform-cm-macd-into-a-pro-trading-system
date: 2025-11-26
modified: 2026-04-07
author: PickMyTrade
excerpt: ""
meta_description: "Discover how the CM MACD ADX Enhanced Strategy transforms ChrisMoody’s legendary MACD indicator into a fully automated, filter-based trading system with ADX, SuperTrend, Volume, Histogram Strength, and ATR stops. See performance results across TSLA, NVDA, AMZN, and PLTR."
focus_keyword: MACD Chris Moody Strategy
canonical_url: "https://blog.pickmytrade.trade/macd-chris-moody-strategy-5-filters-that-transform-cm-macd-into-a-pro-trading-system/"
og_title: MACD Chris Moody Strategy
og_description: "Discover how the CM MACD ADX Enhanced Strategy transforms ChrisMoody’s legendary MACD indicator into a fully automated, filter-based trading system with ADX, SuperTrend, Volume, Histogram Strength, and ATR stops. See performance results across TSLA, NVDA, AMZN, and PLTR."
og_image: "https://blog.pickmytrade.trade/wp-content/uploads/2025/11/20251126_2321_Fintech-Trading-Dashboard_simple_compose_01kb0mh2yfemrbg7dexbcbnykp-1024x683.avif"
schema_type: Article
categories:
  - AI and Machine Learning
  - algorithm trading
  - Trading
tags:
  - chris moody indicator
  - chris moody strategy
  - TradingView
reading_time: 14
word_count: 3444
robots: "index, follow"
lang: en-US
---

# MACD Chris Moody Strategy: 5 Filters That Transform CM MACD Into a Pro Trading System

## **Introduction** {#introduction}

If you’ve spent any time on TradingView, you’ve definitely encountered ChrisMoody’s “CM_MacD_Ult_MTF” indicator – one of the most viewed MACD indicators on the platform with over 1.7 million views. ChrisMoody’s innovative 4-color histogram and multi-timeframe features have helped millions of traders worldwide.

Table of Contents

1. [Introduction](https://blog.pickmytrade.trade/#introduction)
2. [From Indicator to Strategy: What We Added](https://blog.pickmytrade.trade/#from-indicator-to-strategy-what-we-added)
3. [ChrisMoody’s Original Indicator Provides:](https://blog.pickmytrade.trade/#chrismoodys-original-indicator-provides)
4. [Our Enhanced Strategy Version Includes:](https://blog.pickmytrade.trade/#our-enhanced-strategy-version-includes)
5. [Understanding Profit Factor: The Key Metric](https://blog.pickmytrade.trade/#understanding-profit-factor-the-key-metric)
6. [What is Profit Factor?](https://blog.pickmytrade.trade/#what-is-profit-factor)
7. [Backtest Results: Real Performance Across Markets](https://blog.pickmytrade.trade/#backtest-results-real-performance-across-markets)
8. [Stocks – 1 Hour Timeframe](https://blog.pickmytrade.trade/#stocks-1-hour-timeframe)
9. [Stocks – 4 Hour Timeframe](https://blog.pickmytrade.trade/#stocks-4-hour-timeframe)
10. [Key Takeaways from the Results](https://blog.pickmytrade.trade/#key-takeaways-from-the-results)
11. [1. ADX Filter is the Game-Changer](https://blog.pickmytrade.trade/#1-adx-filter-is-the-game-changer)
12. [2. Lower Win Rate, Higher Profitability](https://blog.pickmytrade.trade/#2-lower-win-rate-higher-profitability)
13. [3. Higher Timeframes = Better Risk/Reward](https://blog.pickmytrade.trade/#3-higher-timeframes-better-risk-reward)
14. [4. Consistent Across Growth &amp; Tech Stocks](https://blog.pickmytrade.trade/#4-consistent-across-growth-tech-stocks)
15. [5. Controlled Drawdowns](https://blog.pickmytrade.trade/#5-controlled-drawdowns)
16. [6. Best Performers](https://blog.pickmytrade.trade/#6-best-performers)
17. [How the Strategy Works](https://blog.pickmytrade.trade/#how-the-strategy-works)
18. [Core Components:](https://blog.pickmytrade.trade/#core-components)
19. [Entry Rules:](https://blog.pickmytrade.trade/#entry-rules)
20. [Exit Rules:](https://blog.pickmytrade.trade/#exit-rules)
21. [Position Management:](https://blog.pickmytrade.trade/#position-management)
22. [Indicator vs Strategy: Why This Matters](https://blog.pickmytrade.trade/#indicator-vs-strategy-why-this-matters)
23. [Using ChrisMoody’s Indicator (Manual Trading):](https://blog.pickmytrade.trade/#using-chrismoodys-indicator-manual-trading)
24. [Using Our Enhanced Strategy (Automated):](https://blog.pickmytrade.trade/#using-our-enhanced-strategy-automated)
25. [Why the ADX Filter Makes Such a Difference](https://blog.pickmytrade.trade/#why-the-adx-filter-makes-such-a-difference)
26. [Real-World Performance Analysis](https://blog.pickmytrade.trade/#real-world-performance-analysis)
27. [TSLA: The Momentum King](https://blog.pickmytrade.trade/#tsla-the-momentum-king)
28. [NVDA: The Steady Climber](https://blog.pickmytrade.trade/#nvda-the-steady-climber)
29. [PLTR &amp; AMZN: Different Profiles](https://blog.pickmytrade.trade/#pltr-amzn-different-profiles)
30. [Multi-Timeframe Analysis](https://blog.pickmytrade.trade/#multi-timeframe-analysis)
31. [Access the Strategy](https://blog.pickmytrade.trade/#access-the-strategy)
32. [Automate Your Trading with PickMyTrade](https://blog.pickmytrade.trade/#automate-your-trading-with-pickmytrade)
33. [Automate Your TradingView Strategies](https://blog.pickmytrade.trade/#automate-your-tradingview-strategies)
34. [Optimization Tips for Tech Stocks](https://blog.pickmytrade.trade/#optimization-tips-for-tech-stocks)
35. [For High Volatility Stocks (TSLA, PLTR)](https://blog.pickmytrade.trade/#for-high-volatility-stocks-tsla-pltr)
36. [For Steady Growth Stocks (NVDA, AMZN)](https://blog.pickmytrade.trade/#for-steady-growth-stocks-nvda-amzn)
37. [General Guidelines](https://blog.pickmytrade.trade/#general-guidelines)
38. [Final Thoughts](https://blog.pickmytrade.trade/#final-thoughts)
39. [Remember:](https://blog.pickmytrade.trade/#remember)
40. [Ready to Take Your Trading to the Next Level?](https://blog.pickmytrade.trade/#ready-to-take-your-trading-to-the-next-level)
41. [You may also like:](https://blog.pickmytrade.trade/#you-may-also-like)

At PickMyTrade, we took ChrisMoody’s excellent indicator and transformed it into a complete, automated trading strategy with five professional-grade filters. The difference? An indicator shows you information, but a strategy generates actual buy and sell signals with automated position management and risk controls.

In this post, we’ll show you the real performance data from our enhanced strategy version, tested across popular tech stocks on multiple timeframes.

## **From Indicator to Strategy: What We Added** {#from-indicator-to-strategy-what-we-added}

### **ChrisMoody’s Original Indicator Provides:** {#chrismoodys-original-indicator-provides}

- Multi-timeframe MACD analysis
- 4-color histogram showing momentum direction and strength
- Visual MACD/Signal line crossover dots
- Color-coded lines for quick reference
- Manual trading decisions based on visual cues

### **Our Enhanced Strategy Version Includes:** {#our-enhanced-strategy-version-includes}

- All the core MACD logic from ChrisMoody’s indicator
- **ADX Trend Strength Filter** to avoid choppy markets (ADX &gt; 25)
- **SuperTrend Filter** for trend direction confirmation
- **Volume Confirmation Filter** to ensure institutional participation
- **Histogram Strength Filter** to eliminate weak signals
- **ATR-Based Dynamic Stops** that adapt to volatility
- **Trailing Stop System** to lock in profits
- Automated entry and exit signals
- Position management (auto-closes opposite positions)
- Backtestable performance metrics
- Ready for automation via TradingView alerts

The key enhancements are the five filters working together. By only taking MACD signals when ADX confirms a strong trend, SuperTrend agrees on direction, volume supports the move, and histogram shows conviction, we’ve dramatically improved win quality and reduced drawdown.

## **Understanding Profit Factor: The Key Metric** {#understanding-profit-factor-the-key-metric}

Before diving into the results, let’s talk about one of the most important performance metrics: **Profit Factor**.

### **What is Profit Factor?** {#what-is-profit-factor}

Profit factor is the ratio of gross profit to gross loss. In simple terms, it tells you how much money you make for every dollar you lose.

**Profit Factor = Gross Profit / Gross Loss**

For example:

- A profit factor of 1.5 means for every $1 you risk, you make $1.50
- A profit factor of 2.0 means for every $1 you risk, you make $2.00
- A profit factor above 1.0 indicates a profitable strategy
- A profit factor above 1.5 is generally considered good
- A profit factor above 2.0 is excellent

This metric is crucial because it shows the strategy’s efficiency in generating profits relative to losses, regardless of win rate.

## **Backtest Results: Real Performance Across Markets** {#backtest-results-real-performance-across-markets}

We’ve tested our enhanced CM MACD + ADX Strategy on popular tech stocks across different timeframes. Here’s what the data shows:

### **Stocks – 1 Hour Timeframe** {#stocks-1-hour-timeframe}

**TSLA (1h)**

![TSLA (1h)](https://blog.pickmytrade.trade/wp-content/uploads/2025/11/tsla-1hr-1-1024x497.avif)

Show Image

- **Total P&amp;L:** +$33,437.60 (+334.38%)
- **Max Drawdown:** $7,461.76 (34.92%)
- **Total Trades:** 331
- **Win Rate:** 38.67%
- **Profit Factor:** 1.45

Exceptional performance with over 334% return and controlled 35% drawdown

**NVDA (1h)**

![NVDA (1h)](https://blog.pickmytrade.trade/wp-content/uploads/2025/11/nvidia-1hr-2-1024x483.avif)

Show Image

- **Total P&amp;L:** +$15,303.68 (+153.04%)
- **Max Drawdown:** $4,977.58 (32.24%)
- **Total Trades:** 369
- **Win Rate:** 39.02%
- **Profit Factor:** 1.285

Strong 153% return with excellent risk management

**AMZN (1h)**

![AMZN (1h)](https://blog.pickmytrade.trade/wp-content/uploads/2025/11/amzn-1hr-chart-1-1024x464.avif)

Show Image

- **Total P&amp;L:** +$3,384.62 (+33.85%)
- **Max Drawdown:** $3,947.03 (38.85%)
- **Total Trades:** 370
- **Win Rate:** 39.19%
- **Profit Factor:** 1.11

Consistent performance with nearly 40% win rate

**PLTR (1h)**

![PLTR (1h)](https://blog.pickmytrade.trade/wp-content/uploads/2025/11/pltr-1hr-2-1024x487.avif)

Show Image

- **Total P&amp;L:** +$6,799.15 (+67.99%)
- **Max Drawdown:** $8,931.59 (35.78%)
- **Total Trades:** 138
- **Win Rate:** 33.33%
- **Profit Factor:** 1.192

Nearly 68% return demonstrating effectiveness on volatile growth stocks

### **Stocks – 4 Hour Timeframe** {#stocks-4-hour-timeframe}

**TSLA (4h)**

![TSLA (4h)](https://blog.pickmytrade.trade/wp-content/uploads/2025/11/tsla-4hr-2-1024x485.avif)

Show Image

- **Total P&amp;L:** +$25,873.20 (+258.73%)
- **Max Drawdown:** $9,917.56 (43.81%)
- **Total Trades:** 116
- **Win Rate:** 31.03%
- **Profit Factor:** 1.843

Outstanding 258% return with impressive 1.843 profit factor – making $1.84 for every $1 risked

**NVDA (4h)**

![NVDA (4h)](https://blog.pickmytrade.trade/wp-content/uploads/2025/11/nvda-4hr-2-1024x491.avif)

Show Image

- **Total P&amp;L:** +$11,316.15 (+113.16%)
- **Max Drawdown:** $13,684.27 (52.64%)
- **Total Trades:** 200
- **Win Rate:** 30.50%
- **Profit Factor:** 1.185

Over 113% return capturing NVDA’s strong trends

**PLTR (4h)**

![PLTR (4h)](https://blog.pickmytrade.trade/wp-content/uploads/2025/11/pltr-4hr-2-1024x482.avif)

Show Image

- **Total P&amp;L:** +$3,677.49 (+36.77%)
- **Max Drawdown:** $5,617.65 (29.72%)
- **Total Trades:** 34
- **Win Rate:** 17.65%
- **Profit Factor:** 1.33

Lower frequency trading with fewer but higher quality signals

## **Key Takeaways from the Results** {#key-takeaways-from-the-results}

### **1. ADX Filter is the Game-Changer** {#1-adx-filter-is-the-game-changer}

The ADX trend strength filter consistently improved results across all stocks by keeping the strategy out of choppy, sideways conditions where MACD traditionally struggles. This single filter eliminates low-probability trades during consolidation periods.

### **2. Lower Win Rate, Higher Profitability** {#2-lower-win-rate-higher-profitability}

Notice the strategy maintains strong profitability with win rates between 17-39%. This proves that with proper risk management, ATR-based stops, and high profit factors (1.11-1.843), you don’t need a 50%+ win rate to generate substantial returns.

### **3. Higher Timeframes = Better Risk/Reward** {#3-higher-timeframes-better-risk-reward}

The 4-hour timeframe generally produces superior profit factors compared to 1-hour charts:

- **TSLA 4h:** Profit Factor 1.843 vs 1h: 1.45
- Fewer trades but larger, more sustained moves
- Better filters out market noise

### **4. Consistent Across Growth &amp; Tech Stocks** {#4-consistent-across-growth-tech-stocks}

The strategy shows positive returns across TSLA, NVDA, AMZN, and PLTR – demonstrating versatility across different volatility profiles and trading ranges.

### **5. Controlled Drawdowns** {#5-controlled-drawdowns}

Maximum drawdowns remain manageable (29-52%), with most 1-hour timeframe tests staying under 40%. The ATR-based stops adapt to volatility, preventing catastrophic losses.

### **6. Best Performers** {#6-best-performers}

- **TSLA (1h):** 334% return – Best absolute performance
- **TSLA (4h):** Profit Factor 1.843 – Best risk/reward efficiency
- **NVDA (1h):** 153% return with 39% win rate – Most consistent

## **How the Strategy Works** {#how-the-strategy-works}

### **Core Components:** {#core-components}

**MACD Foundation (ChrisMoody’s Original):**

- Fast EMA (12) – Slow EMA (26) = MACD Line
- Signal Line = 9-period SMA of MACD
- Histogram = MACD – Signal
- 4-color histogram showing momentum strength and direction

**Our Five Enhancement Filters:**

1. **SuperTrend Filter:** Confirms trend direction (green = bullish, red = bearish)
2. **ADX Filter:** Ensures strong trending market (ADX &gt; 25 required)
3. **Volume Filter:** Requires 1.2x average volume for entries
4. **Histogram Strength Filter:** Filters weak crosses (minimum 0.5 strength)
5. **ATR-Based Stops:** Dynamic stop loss and trailing stop system

### **Entry Rules:** {#entry-rules}

**Long Entry (ALL Must Be True):**

- MACD crosses above Signal Line
- SuperTrend is bullish (green background)
- ADX &gt; 25 (strong trend confirmed)
- Volume &gt; 1.2x average
- Histogram strength &gt; 0.5

**Short Entry (ALL Must Be True):**

- MACD crosses below Signal Line
- SuperTrend is bearish (red background)
- ADX &gt; 25 (strong trend confirmed)
- Volume &gt; 1.2x average
- Histogram strength &gt; 0.5

### **Exit Rules:** {#exit-rules}

- Opposite MACD cross (configurable)
- SuperTrend reversal (configurable)
- ATR-based stop loss (2.0x ATR from entry)
- ATR-based trailing stop (1.5x ATR, locks in profits)
- Optional fixed take profit

### **Position Management:** {#position-management}

- Automatically closes opposite positions before entering new trades
- No overlapping long and short positions
- Dynamic position sizing based on account equity

This combination filters out the low-quality MACD signals that often result in losses, focusing only on high-probability momentum moves with multiple confirmations.

## **Indicator vs Strategy: Why This Matters** {#indicator-vs-strategy-why-this-matters}

### **Using ChrisMoody’s Indicator (Manual Trading):** {#using-chrismoodys-indicator-manual-trading}

- You see the signals visually
- You decide when to enter/exit based on MACD crosses
- Emotional decisions can impact results
- Difficult to backtest systematically
- Requires constant chart monitoring
- No automated risk management
- Easy to miss key signals during work hours

### **Using Our Enhanced Strategy (Automated):** {#using-our-enhanced-strategy-automated}

- Automatic buy/sell signals with precise entry points
- Five professional filters working together
- Systematic position management
- Remove emotional decision-making
- Complete backtest data to evaluate performance
- ATR-based stops adapt to volatility automatically
- Trailing stops lock in profits
- Can be fully automated with alerts
- Trade while you sleep or work

## **Why the ADX Filter Makes Such a Difference** {#why-the-adx-filter-makes-such-a-difference}

Traditional MACD strategies often struggle in choppy, sideways markets because MACD generates crossover signals even when there’s no clear trend. This leads to whipsaw losses.

Our ADX filter solves this problem:

**When ADX  25 (Trending Market):**

- Strategy takes MACD signals
- Trend is strong enough to follow through
- Higher probability of capturing sustained moves

Looking at the charts, you can see the green/red ADX background clearly shows when the strategy is active versus sitting out choppy periods.

## **Real-World Performance Analysis** {#real-world-performance-analysis}

### **TSLA: The Momentum King** {#tsla-the-momentum-king}

Tesla’s volatility makes it perfect for this strategy:

- **1h timeframe:** 334% return with 331 trades – captures intraday momentum
- **4h timeframe:** 258% return with 116 trades – rides multi-day trends
- Profit factors of 1.45-1.843 show excellent risk management
- Higher frequency (1h) = more trades, lower PF
- Lower frequency (4h) = fewer trades, higher PF

### **NVDA: The Steady Climber** {#nvda-the-steady-climber}

NVIDIA’s consistent trends reward patient trading:

- **1h timeframe:** 153% return with high trade frequency (369 trades)
- **4h timeframe:** 113% return with 200 trades
- Win rates near 30-39% – proof that you don’t need 50%+ to profit
- Drawdowns well-controlled despite high volatility

### **PLTR &amp; AMZN: Different Profiles** {#pltr-amzn-different-profiles}

- **PLTR:** Lower trade count (34-138) on different timeframes shows selectivity
- **AMZN:** Highest trade frequency (370 trades) with steady 34% return
- Both demonstrate strategy adapts to different stock behaviors

## **Multi-Timeframe Analysis** {#multi-timeframe-analysis}

ChrisMoody’s original indicator includes multi-timeframe capability, and we’ve preserved this powerful feature in the strategy version.

**How It Works:**

- You can analyze MACD on a higher timeframe while trading on your current chart
- Example: Trade on 15-minute chart but use 1-hour MACD signals
- Filters out noise from lower timeframes
- Captures stronger, more reliable trends

**Recommended Combinations:**

- Trading 5min → Use 15min MACD
- Trading 15min → Use 1H MACD
- Trading 1H → Use 4H MACD
- Trading 4H → Use Daily MACD

## **Access the Strategy** {#access-the-strategy}

Ready to use this strategy yourself?

**Get the enhanced strategy on TradingView:**

```
//@version=6
// Original Indicator: "CM_MacD_Ult_MTF" by ChrisMoody (April 10, 2014)
// Strategy Conversion &amp; Enhancement by PickMyTrade Team
// Enhanced with ADX, ATR Stops, Volume Filter, Histogram Strength Filter, and Trailing Stop
// Optimized for reduced drawdown and improved win rate

strategy("CM MACD MTF + ADX Enhanced Strategy [PickMyTrade]", 
         shorttitle="MACD_ADX", 
         overlay=false, 
         initial_capital=10000, 
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         commission_type=strategy.commission.percent, 
         commission_value=0.1)

// ============================================================================
// INPUTS
// ============================================================================
// Timeframe Settings
useCurrentRes = input.bool(true, title="Use Current Chart Resolution?", group="Timeframe")
resCustom = input.timeframe("60", title="Use Different Timeframe? Uncheck Box Above", group="Timeframe")

// MACD Parameters
fastLength = input.int(12, minval=1, title="Fast Length", group="MACD Settings")
slowLength = input.int(26, minval=1, title="Slow Length", group="MACD Settings")
signalLength = input.int(9, minval=1, title="Signal Length", group="MACD Settings")
source = input.source(close, title="Source", group="MACD Settings")
minHistStrength = input.float(0.5, title="Minimum Histogram Strength", minval=0, step=0.1, group="MACD Settings", tooltip="Filters weak signals - higher value = fewer trades but stronger signals")

// SuperTrend Parameters
useSuperTrend = input.bool(true, title="Use SuperTrend Filter?", group="SuperTrend Filter")
atrPeriod = input.int(10, title="ATR Period", minval=1, group="SuperTrend Filter")
atrMultiplier = input.float(3.0, title="ATR Multiplier", minval=0.1, step=0.1, group="SuperTrend Filter")

// ADX Trend Strength Filter
useADX = input.bool(true, title="Use ADX Filter?", group="Trend Strength Filter", tooltip="Avoid choppy markets - significantly improves win rate")
adxLength = input.int(14, title="ADX Length", minval=1, group="Trend Strength Filter")
adxThreshold = input.float(25.0, title="ADX Threshold", minval=10, step=1, group="Trend Strength Filter", tooltip="Higher = stronger trend required (25-30 recommended)")

// Volume Filter
useVolumeFilter = input.bool(true, title="Use Volume Filter?", group="Volume Filter", tooltip="Only trade on above-average volume")
volumeMALength = input.int(20, title="Volume MA Length", minval=1, group="Volume Filter")
volumeMultiplier = input.float(1.2, title="Volume Multiplier", minval=0.5, step=0.1, group="Volume Filter", tooltip="Volume must be X times the average")

// Display Settings
smd = input.bool(true, title="Show MACD &amp; Signal Line?", group="Display")
sd = input.bool(true, title="Show Dots at Crossovers?", group="Display")
sh = input.bool(true, title="Show Histogram?", group="Display")
macd_colorChange = input.bool(true, title="Change MACD Line Color on Signal Cross?", group="Display")
hist_colorChange = input.bool(true, title="MACD Histogram 4 Colors?", group="Display")

// Strategy Settings
allowShorts = input.bool(false, title="Allow Short Positions?", group="Strategy Settings")
trendFilter = input.bool(false, title="Only Trade in Trend Direction (MACD &gt; 0 for Long)?", group="Strategy Settings")
exitOnOpposite = input.bool(true, title="Exit on Opposite Signal?", group="Strategy Settings")
exitOnSTReversal = input.bool(false, title="Exit on SuperTrend Reversal?", group="Strategy Settings")

// Risk Management - ATR-Based Stops
useATRStop = input.bool(true, title="Use ATR Stop Loss?", group="Risk Management", tooltip="Dynamic stop based on volatility")
atrStopMultiplier = input.float(2.0, title="ATR Stop Multiplier", minval=0.5, step=0.5, group="Risk Management", tooltip="2.0-3.0 recommended for swing trades")
atrStopLength = input.int(14, title="ATR Stop Length", minval=1, group="Risk Management")

// Risk Management - Fixed Percentage Stops (backup)
useFixedSL = input.bool(false, title="Use Fixed % Stop Loss?", group="Risk Management")
slPercent = input.float(2.0, title="Fixed Stop Loss %", minval=0.1, step=0.1, group="Risk Management")

// Take Profit
useTP = input.bool(false, title="Use Take Profit?", group="Risk Management")
tpPercent = input.float(4.0, title="Take Profit %", minval=0.1, step=0.1, group="Risk Management")

// Trailing Stop
useTrailing = input.bool(true, title="Use Trailing Stop?", group="Risk Management", tooltip="Locks in profits as price moves favorably")
trailATRMultiplier = input.float(1.5, title="Trailing Stop ATR Multiplier", minval=0.5, step=0.5, group="Risk Management", tooltip="Lower = tighter trailing stop")

// ============================================================================
// SUPERTREND CALCULATION
// ============================================================================
[supertrend, direction] = ta.supertrend(atrMultiplier, atrPeriod)

// SuperTrend Direction
// direction == -1 means bullish (green), direction == 1 means bearish (red)
isBullishTrend = direction == -1
isBearishTrend = direction == 1

// ============================================================================
// ADX CALCULATION
// ============================================================================
[diPlus, diMinus, adx] = ta.dmi(adxLength, adxLength)
strongTrend = adx &gt; adxThreshold

// ============================================================================
// VOLUME FILTER CALCULATION
// ============================================================================
volMA = ta.sma(volume, volumeMALength)
goodVolume = volume &gt; (volMA * volumeMultiplier)

// ============================================================================
// ATR CALCULATION (for stops)
// ============================================================================
atr = ta.atr(atrStopLength)

// ============================================================================
// MACD CALCULATION
// ============================================================================
res = useCurrentRes ? timeframe.period : resCustom

fastMA = ta.ema(source, fastLength)
slowMA = ta.ema(source, slowLength)

macd = fastMA - slowMA
signal = ta.sma(macd, signalLength)
hist = macd - signal

// Multi-timeframe MACD
outMacD = request.security(syminfo.tickerid, res, macd, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
outSignal = request.security(syminfo.tickerid, res, signal, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
outHist = request.security(syminfo.tickerid, res, hist, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)

// ============================================================================
// HISTOGRAM COLOR LOGIC
// ============================================================================
histA_IsUp = outHist &gt; outHist[1] and outHist &gt; 0
histA_IsDown = outHist  0
histB_IsDown = outHist &lt; outHist[1] and outHist  outHist[1] and outHist = outSignal
macd_IsBelow = outMacD  minHistStrength

// ============================================================================
// PLOTTING
// ============================================================================
plot(smd ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
plot(smd ? outSignal : na, title="Signal Line", color=signal_color, linewidth=2)
plot(sh ? outHist : na, title="Histogram", color=plot_color, style=plot.style_histogram, linewidth=4)
plotshape(sd and macdCross ? outSignal : na, title="Cross", style=shape.circle, location=location.absolute, color=macd_color, size=size.small)
hline(0, '0 Line', linestyle=hline.style_solid, linewidth=2, color=color.white)

// Plot ADX for reference (in separate pane would be ideal, but showing value)
plot(useADX ? adx : na, title="ADX", color=color.new(color.orange, 0), linewidth=2)
hline(adxThreshold, "ADX Threshold", color=color.new(color.orange, 50), linestyle=hline.style_dashed)

// ============================================================================
// STRATEGY LOGIC
// ============================================================================
// Trend Filter Conditions
longTrendOK = not trendFilter or outMacD &gt; 0
shortTrendOK = not trendFilter or outMacD  0
    strategy.close("Long", comment="Exit Long")
    
if (shortExitCondition or shortSTExit) and strategy.position_size  0
    // ATR-based Stop Loss
    if useATRStop
        stopPrice = strategy.position_avg_price - (atr * atrStopMultiplier)
        strategy.exit("ATR SL Long", "Long", stop=stopPrice)
    
    // Fixed % Stop Loss (backup)
    if useFixedSL and not useATRStop
        strategy.exit("SL Long", "Long", stop=strategy.position_avg_price * (1 - slPercent/100))
    
    // Take Profit
    if useTP
        strategy.exit("TP Long", "Long", limit=strategy.position_avg_price * (1 + tpPercent/100))
    
    // Trailing Stop
    if useTrailing
        trailOffset = atr * trailATRMultiplier
        strategy.exit("Trail Long", "Long", trail_price=close - trailOffset, trail_offset=trailOffset)

// Short Position Management        
if strategy.position_size &lt; 0
    // ATR-based Stop Loss
    if useATRStop
        stopPrice = strategy.position_avg_price + (atr * atrStopMultiplier)
        strategy.exit(&quot;ATR SL Short&quot;, &quot;Short&quot;, stop=stopPrice)
    
    // Fixed % Stop Loss (backup)
    if useFixedSL and not useATRStop
        strategy.exit(&quot;SL Short&quot;, &quot;Short&quot;, stop=strategy.position_avg_price * (1 + slPercent/100))
    
    // Take Profit
    if useTP
        strategy.exit(&quot;TP Short&quot;, &quot;Short&quot;, limit=strategy.position_avg_price * (1 - tpPercent/100))
    
    // Trailing Stop
    if useTrailing
        trailOffset = atr * trailATRMultiplier
        strategy.exit(&quot;Trail Short&quot;, &quot;Short&quot;, trail_price=close + trailOffset, trail_offset=trailOffset)

// ============================================================================
// VISUAL SIGNALS
// ============================================================================
bgcolor(longCondition ? color.new(color.green, 90) : shortCondition ? color.new(color.red, 90) : na, title=&quot;Entry Background&quot;)

// SuperTrend visual indicator in MACD pane
stColor = isBullishTrend ? color.new(color.green, 80) : color.new(color.red, 80)
bgcolor(useSuperTrend ? stColor : na, title=&quot;SuperTrend Background&quot;)

// ADX strength indicator
adxColor = strongTrend ? color.new(color.orange, 90) : color.new(color.gray, 95)
bgcolor(useADX ? adxColor : na, title=&quot;ADX Strength Background&quot;)
```

**Original indicator by ChrisMoody:** [CM_MacD_Ult_MTF](https://www.tradingview.com/v/OQx7vju0/)

## **Automate Your Trading with PickMyTrade** {#automate-your-trading-with-pickmytrade}

![Automate Your Trading with PickMyTrade](https://blog.pickmytrade.trade/wp-content/uploads/2025/11/20251126_2233_Automate-Your-Trading_simple_compose_01kb0hs7p8ea4b96z8j879t25v-1024x683.avif)

Backtesting is just the beginning. The real power comes from automation.

### **Automate Your TradingView Strategies** {#automate-your-tradingview-strategies}

**For Stock, Crypto, Futures, and Options:** Visit **[pickmytrade.io](https://pickmytrade.io)** to automate your trading across multiple brokers:

- Rithmic
- TradeStation
- TradeLocker
- Interactive Brokers
- ProjectX

**For Tradovate Users:** Visit **[pickmytrade.trade](https://pickmytrade.trade)** for seamless Tradovate broker integration

Transform your TradingView strategies into fully automated trading systems with real-time execution. No more manual order entry, no more missed signals, no more emotional decisions.

**Features:**

- Real-time alert-to-order execution
- No coding required
- Multi-strategy management
- Position sizing controls
- Risk management automation
- 24/7 execution capability
- Paper trading mode
- Detailed execution logs

## **Optimization Tips for Tech Stocks** {#optimization-tips-for-tech-stocks}

### **For High Volatility Stocks (TSLA, PLTR)** {#for-high-volatility-stocks-tsla-pltr}

- **Timeframe:** 1H-4H recommended
- **MACD:** 12/26/9 (default works well)
- **SuperTrend:** ATR 10, Multiplier 2.5-3.0
- **ADX Threshold:** 25 (filters choppy periods)
- **ATR Stop:** 2.0-2.5x (gives room for volatility)

### **For Steady Growth Stocks (NVDA, AMZN)** {#for-steady-growth-stocks-nvda-amzn}

- **Timeframe:** 4H-Daily for swing trades
- **MACD:** 12/26/9
- **SuperTrend:** ATR 10, Multiplier 3.0
- **ADX Threshold:** 25
- **ATR Stop:** 2.0x (tighter stops work better)

### **General Guidelines** {#general-guidelines}

- Start with 4H timeframe for lower trade frequency
- Use 1H timeframe if you can monitor positions actively
- Always enable all 5 filters initially
- Adjust histogram strength (0.3-0.8) based on desired trade frequency

## **Final Thoughts** {#final-thoughts}

We’ve taken one of TradingView’s most legendary indicators and converted it into a fully automated, professionally optimized trading strategy. The results speak for themselves – with profit factors ranging from 1.11 to 1.843 and returns ranging from 34% to 334% across multiple timeframes.

The addition of five professional-grade filters (ADX, SuperTrend, Volume, Histogram Strength, and ATR Stops) has transformed ChrisMoody’s excellent indicator into a robust trading system that:

- Avoids choppy markets (ADX filter)
- Confirms trend direction (SuperTrend filter)
- Ensures institutional participation (Volume filter)
- Eliminates weak signals (Histogram strength filter)
- Adapts to volatility (ATR-based stops)

**Credits:**

- **Original Indicator:** ChrisMoody – “[CM_MacD_Ult_MTF](https://www.tradingview.com/v/OQx7vju0/)” (April 10, 2014)
- **Strategy Enhancement:** PickMyTrade Team

Special thanks to ChrisMoody for creating one of the most comprehensive and visually intuitive MACD indicators on TradingView. His innovative 4-color histogram system has helped millions of traders, and we’re honored to build upon his excellent work.

### **Remember:** {#remember}

- Backtest results are historical and don’t guarantee future performance
- Always practice proper risk management (1-2% per trade)
- Test the strategy on a demo account before going live
- Start with all filters enabled (conservative approach)
- Consider using automation to eliminate emotional trading decisions
- ADX filter is your best friend – don’t disable it
- Higher timeframes generally produce better risk/reward ratios

The combination of a robust strategy, multiple confirmation filters, and automated execution gives you the best chance at consistent trading success.

## **Ready to Take Your Trading to the Next Level?** {#ready-to-take-your-trading-to-the-next-level}

Download the strategy from TradingView and explore automation options at PickMyTrade.

**Disclaimer:** Trading involves substantial risk of loss. Past performance does not guarantee future results. The backtest results shown are based on historical data and may not reflect actual trading conditions including slippage, commissions, and market impact. Always trade responsibly, use proper risk management, and never risk more than you can afford to lose. This content is for educational purposes only and is not financial advice. Test thoroughly on paper/demo accounts before live trading.

### **You may also like:** {#you-may-also-like}

- [Squeeze Momentum Strategy: Converting LazyBear’s Popular Indicator into a Profitable Trading System](https://blog.pickmytrade.trade/squeeze-momentum-strategy/)
- [Evaluating Strategy Viability with Sharpe Ratio](https://blog.pickmytrade.io/evaluating-strategy-viability-sharpe-ratio/)

For AI tools &amp; developers:[View Markdown →](https://blog.pickmytrade.trade/macd-chris-moody-strategy-5-filters-that-transform-cm-macd-into-a-pro-trading-system.md)