26/02/2010 00:30:12
 Tom Leeson Administrator Posts: 661
|
#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 { /// <summary> /// Enter the description of your strategy here /// </summary> [Description("MicroTrends MT2 Lite - Moving Average Crossover Strategy - double or triple - choose from many different Moving Averages - EMA = 0,HMA = 1,KAMA = 2,MAMA = 3,MT_TEMA = 4,MT_TSMA = 5,SMA = 6,TMA = 7,TEMA = 8,VMA = 9,ZeroLag_EMA = 10,ZeroLag_EMA2 = 11,TripleZeroLag_EMA = 12,TripleZeroLag_EMA2 = 13,UMA = 14,VOLMA = 15,ZeroLagHATEMA=16,ZeroLagTEMA=17,WMA=18")] public class MT2Lite : Strategy { #region Variables
private int mA1Period = 13; // Default setting for MA1Period private int mA2Period = 34; // Default setting for MA2Period private int mA3Period = 89; // Default setting for MA3Period private int crossoverType = 0; // Default setting for CrossoverType
private NinjaTrader.Indicator.MATypes mA1Type = 0; private NinjaTrader.Indicator.MATypes mA2Type = 0; private NinjaTrader.Indicator.MATypes mA3Type = 0;
private int xLookBack=1; private int signalCandleBars=1;
private bool voice=false;
#endregion /// <summary> /// This method is used to configure the strategy and is called once before any strategy method is called. /// </summary> protected override void Initialize() { CalculateOnBarClose = true; MicroTrendsMACrossover(this.CrossoverType,this.MA1Period,this.MA1Type,this.MA2Period,this.mA2Type,this.MA3Period,this.MA3Type,this.SignalCandleBars,this.XLookBack).Name="MA_X"; MicroTrendsMACrossover(this.CrossoverType,this.MA1Period,this.MA1Type,this.MA2Period,this.mA2Type,this.MA3Period,this.MA3Type,this.SignalCandleBars,this.XLookBack).Voice=this.Voice; Add(MicroTrendsMACrossover(this.CrossoverType,this.MA1Period,this.MA1Type,this.MA2Period,this.mA2Type,this.MA3Period,this.MA3Type,this.SignalCandleBars,this.XLookBack)); } /// <summary> /// Called on each bar update event (incoming tick) /// </summary> protected override void OnBarUpdate() {
try { if(CurrentBar<0)return;
if(MicroTrendsMACrossover(this.CrossoverType,this.MA1Period,this.MA1Type,this.MA2Period,this.mA2Type,this.MA3Period,this.MA3Type,this.SignalCandleBars,this.XLookBack).TradeExit) { //Print("Exit");
if(Position.MarketPosition==MarketPosition.Long) { ExitLong(); //Print("ExitLong"); } else if(Position.MarketPosition==MarketPosition.Short) { ExitShort(); //Print("ExitShort"); } } if(Position.MarketPosition==MarketPosition.Flat) { if(MicroTrendsMACrossover(this.CrossoverType,this.MA1Period,this.MA1Type,this.MA2Period,this.mA2Type,this.MA3Period,this.MA3Type,this.SignalCandleBars,this.XLookBack).TrendDown) { //Print("Enter Short");
if(MicroTrendsMACrossover(this.CrossoverType,this.MA1Period,this.MA1Type,this.MA2Period,this.mA2Type,this.MA3Period,this.MA3Type,this.SignalCandleBars,this.XLookBack).TradeEntry) { EnterShort(); } } else if(MicroTrendsMACrossover(this.CrossoverType,this.MA1Period,this.MA1Type,this.MA2Period,this.mA2Type,this.MA3Period,this.MA3Type,this.SignalCandleBars,this.XLookBack).TrendUp) { //Print("Enter Long"); if(MicroTrendsMACrossover(this.CrossoverType,this.MA1Period,this.MA1Type,this.MA2Period,this.mA2Type,this.MA3Period,this.MA3Type,this.SignalCandleBars,this.XLookBack).TradeEntry) { EnterLong(); } } } } catch(Exception ex) { Print(ex.ToString());
}
} #region Properties
[Description("Fast Period")] [Category("Parameters")] public int MA1Period { get { return mA1Period; } set { mA1Period = Math.Max(1, value); } } [Description("Slow Period")] [Category("Parameters")] public int MA2Period { get { return mA2Period; } set { mA2Period = Math.Max(1, value); } } [Description("Triple Period")] [Category("Parameters")] public int MA3Period { get { return mA3Period; } set { mA3Period = Math.Max(1, value); } }
[Description("0 = double, 1 = Triple")] [Category("Parameters")] public int CrossoverType { get { return crossoverType; } set { crossoverType = Math.Max(0, value); } } [Description("Fast MA1 Moving Average Type")] [Category("Parameters")] public NinjaTrader.Indicator.MATypes MA1Type { get { return mA1Type; } set { mA1Type = value; } } [Description("Slow MA2 Moving Average Type")] [Category("Parameters")] public NinjaTrader.Indicator.MATypes MA2Type { get { return mA2Type; } set { mA2Type = value; } }
[Description("Triple MA3 Moving Average Type")] [Category("Parameters")] public NinjaTrader.Indicator.MATypes MA3Type { get { return mA3Type; } set { mA3Type = value; } } [Description("Crossover look back bars")] [Category("Parameters")] public int XLookBack { get { return xLookBack; } set { xLookBack = value; } }
[Description("Signal Candle bars")] [Category("Parameters")] public int SignalCandleBars { get { return signalCandleBars; } set { signalCandleBars = value; } }
[Description("Synthesised Voice on or Off")] [Category("General")] public bool Voice { get { return voice; } set { voice = value; } }
#endregion } } edited by tom on 26/02/2010
-- MicroTrends tom
|