Powered by Jitbit Asp.Net Forum free trial version.
home recent topics recent posts search faq  

MicroTrends NinjaTrader Forum



register | lost password   open id
Messages in this topic - RSS

Home » NinjaTrader 6.5 Strategies » Free NinjaTrader Strategies » MT2Lite » Source code

Post questions and answers about the MT2Lite NinjaTrader Strategy
26/02/2010 00:30:12

Tom Leeson
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
0 permalink




Powered by AspNetForum 7.0.1.0 © 2006-2011 Jitbit Software