I've been working on a multi-timeframe momentum strategy focused on the ADXVMA for a few months now. It uses 4 Range bars for entries and 11 range bars for filters. No secrets, the code is below (keep it amongst the Elite brothers and sisters please).
#region Using declarations
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Data;
using NinjaTrader.Indicator;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Strategy;
#endregion
// This namespace holds all strategies and is required. Do not change it.
namespace NinjaTrader.Strategy
{
///
/// Enter the description of your strategy here
///
[Description("Momentum strategy using the ADXVMA Indicator in two time frames")]
public class ADXVMAStrat_031209 : Strategy
{
#region Variables
private int aDXVMAPeriod = 6; // Default setting for ADXVMAPeriod
private int target = 4; // Default setting for Target
private int trailStop = 8; // Default setting for TrailStop
private int aDXPeriod = 5; //Default setting for ADX Period
private double aDXThreshold = 30; //Default ADX Threshold
private int aTRTimeFrame = 5; //Default ATR Timeframe (minutes)
private double aTRThreshold = 1; //Default ATR Threshold
#endregion
///
/// This method is used to configure the strategy and is called once before any strategy method is called.
///
protected override void Initialize()
{
Add(PeriodType.Range, 11); //BarsArray[1]
Add(PeriodType.Minute, ATRTimeFrame); //BarsArray[2]
Add(ADX(ADXPeriod));
Add(ADXVMA(ADXVMAPeriod));
SetProfitTarget("Long 1a", CalculationMode.Ticks, Target);
SetProfitTarget("Short 1a", CalculationMode.Ticks, Target);
SetTrailStop(CalculationMode.Ticks, TrailStop);
EntriesPerDirection = 1;
EntryHandling = EntryHandling.UniqueEntries;
CalculateOnBarClose = true;
}
///
/// Called on each bar update event (incoming tick)
///
protected override void OnBarUpdate()
{
// GO LONG GO LONG GO LONG
if(BarsInProgress != 0)
return;