#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("Enter the description of your strategy here")]
public class USDJPY : Strategy
{
#region Variables
// Wizard generated variables
private int momperiod =5;
private int momemaperiod = 2;
private double momlimit = .04;
private int tperiod = 9;
private double tlimit = .003;
private int mom2period = 4;
private double mom2limit= 4;
private int mom2emaperiod = 1;
private int dperiod = 3;
private double smoroclimit = .1;
private int smorocema = 1;
private int smorocperiod = 1;
private double stoploss = .005;
// User defined variables (add any user defined variables below)
#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;
Add(PeriodType.Minute, 90);
Add(PeriodType.Minute, 90);
Add(PeriodType.Day, 1);
SetStopLoss("", CalculationMode.Percent, Stoploss, false);
}
/// <summary>
/// Called on each bar update event (incoming tick)
/// </summary>
protected override void OnBarUpdate()
{
double dval1 = SweetIndicator(BarsArray[2], dperiod)[0];
double dval2 = SweetIndicator(BarsArray[2], dperiod)[1];
if (BarsInProgress != 0)
return;
if (SmoothedExpMomentumJPY(momemaperiod, momperiod)[0] > momlimit && (TRIXSlope(BarsArray[1], tperiod)[0] > tlimit && MomentumSquaredJPY(BarsArray[3], mom2emaperiod, mom2period)[0] > mom2limit && dval1 >= dval2 && SmoothROCJPY(BarsArray[3], smorocema, smorocperiod)[0] > smoroclimit )){
EnterLong(DefaultQuantity);
}
else if (SmoothedExpMomentumJPY(momemaperiod, momperiod)[0] < - momlimit && (TRIXSlope(BarsArray[1],tperiod)[0] < - tlimit)&& MomentumSquaredJPY(BarsArray[3], mom2emaperiod, mom2period)[0] > mom2limit && dval2 >= dval1 && SmoothROCJPY(BarsArray[3], smorocema, smorocperiod)[0] > smoroclimit){
EnterShort(DefaultQuantity);
}
else{
ExitLong();
ExitShort();
}
}
#region Properties
[Description("")]
[Category("Parameters")]
public int Momperiod
{
get { return momperiod; }
set { momperiod = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public int Momemaperiod
{
get { return momemaperiod; }
set { momemaperiod = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public double Momlimit
{
get { return momlimit; }
set { momlimit = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public double Tlimit
{
get { return tlimit; }
set { tlimit = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public int Tperiod
{
get { return tperiod; }
set { tperiod = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public int Dperiod
{
get { return dperiod; }
set { dperiod = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public int Mom2period
{
get { return mom2period; }
set { mom2period = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public int Mom2emaperiod
{
get { return mom2emaperiod; }
set { mom2emaperiod = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public double Mom2limit
{
get { return mom2limit; }
set { mom2limit = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public int Smorocperiod
{
get { return smorocperiod; }
set { smorocperiod = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public int Smorocema
{
get { return smorocema; }
set { smorocema = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public double Smoroclimit
{
get { return smoroclimit; }
set { smoroclimit = Math.Max(0, value); }
}
[Description("")]
[Category("Parameters")]
public double Stoploss
{
get { return stoploss; }
set { stoploss = Math.Max(0, value); }
}
#endregion
}
}
Comment