top of page
Search

Dual Moving Average Strategy for NQ Futures: A Systematic Approach

Updated: Feb 24

Introduction

This article presents a simple, yet robust trading strategy developed for the Nasdaq-100 futures (NQ) market in early 2023, utilizing two distinct moving average systems. The strategy has demonstrated consistent performance since 2017, with particularly strong results during the past 2 years.


Strategy Overview

The system employs two independent long-only trading systems operating on 3-hour charts. Each system utilizes a unique combination of moving averages to identify favorable entry and exit points in trending markets.


Key Performance Metrics (2017-Present)

  • Total Net Profit: $425,000

  • Profit Factor: 2.03

  • Win Rate: 75%

  • Maximum Drawdown: $37,000

  • Live Trading Performance: Consistent with backtesting results (1.5 years)






Technical Framework

System Components

  1. Primary Trading System (Long1)

    • Utilizes two moving averages for signal generation

    • Implements price-based entry filters

    • Features dynamic exit conditions based on market behavior

  2. Secondary Trading System (Long2)

    • Employs three moving averages for enhanced signal confirmation

    • Includes sophisticated entry criteria based on price compression

    • Contains protective exit mechanisms

Risk Management

  • Each system operates independently to diversify entry points

  • Built-in position management rules prevent overlapping trades

  • Incorporates trailing stop mechanisms based on previous price action

  • Maximum drawdown control through systematic position sizing


Implementation Considerations

  1. Market Selection

    • Optimized for NQ futures

    • 3-hour timeframe provides balance between noise and trend capture

    • Suitable for swing trading approaches

  2. Trade Management

    • Clear entry and exit rules based on moving average crossovers

    • Price action confirmation required for trade execution

    • Systematic approach to position management

  3. Setup Requirements

    • TradeStation or MultiCharts

    • 3-hour NQ bars

    • 1000 max bars back


Free Code


Inputs:

// Long1 Settings

ma1_long1(276),

ma2_long1(11),

lowerClose1(true),

tradeLong1(true),


// Long2 Settings

ma1_long2(588),

ma2_long2(4),

ma3_long2(862),

lowerClose2(true),

tradeLong2(true);


Variables:

ma_long1(0),

ema_short1(0),

ma_long2(0),

ema_short2(0),

maA_long2(0),

buyCondition1(false),

sellCondition1(false),

buyCondition2(false),

sellCondition2(false);


// Calculate indicator values for Long1

ma_long1 = Average(Close, ma1_long1);

ema_short1 = XAverage(Close, ma2_long1);


// Calculate indicator values for Long2

ma_long2 = Average(Close, ma1_long2);

ema_short2 = XAverage(Close, ma2_long2);

maA_long2 = XAverage(Close, ma3_long2);


// Buy/sell conditions for Long1

buyCondition1 = Close > ma_long1 and Close < ema_short1 and MarketPosition = 0;

sellCondition1 = Close > ema_short1 and MarketPosition > 0 and (not lowerClose1 or Close < Low[1]);


// Buy/sell conditions for Long2

buyCondition2 = Close < ma_long2 and Close > maA_long2 and Close < ema_short2 and MarketPosition = 0;

sellCondition2 = Close > ema_short2 and MarketPosition > 0 and (not lowerClose2 or Close < Low[1]);


// Enter/exit positions for Long1

If tradeLong1 and buyCondition1 then

Buy ("Long1") next bar at market;

If tradeLong1 and sellCondition1 then

Sell ("Exit Long1") next bar at market;


// Enter/exit positions for Long2

If tradeLong2 and buyCondition2 then

Buy ("Long2") next bar at market;

If tradeLong2 and sellCondition2 then

Sell ("Exit Long2") next bar at market; You can also download the script here:


 
 
 

Recent Posts

See All
bottom of page