#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>
/// Trades like a straddle/breakout algo
/// </summary>
[Description("Trades based on time intervals using pivots")]
public class CrossLIS : Strategy
{
#region Variables
// Wizard generated variables
private double pricepivot = 3019.00; // Default setting for Pricepivot
private double pricepivotb = 3019.00;
private double pricepivotc = 3019.00;
private int tickprofit = 160; // Default setting for Tickprofit
private int tickstoploss = 16; // Default setting for Tickstoploss
private int trailtick = 40; // Default setting for Trailtick
private int quantity = 1;
private int starttime = 180000;
private int stoptime = 240000;
private int starttimeb = 1;
private int stoptimeb = 100000;
private int starttimec = 100100;
private int stoptimec = 153200;
private int startdate = 20190101;
private int stopdate = 20191231;
private int startdateb = 20190101;
private int stopdateb = 20191231;
private int startdatec = 20190101;
private int stopdatec = 20191231;
private int startcloseout = 153900;
private int stopcloseout = 154400;
// 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()
{
Add(PriorDayOHLC());
Add(CurrentDayOHL());
SetProfitTarget("", CalculationMode.Ticks, Tickprofit);
SetStopLoss("", CalculationMode.Ticks, Tickstoploss, true);
SetTrailStop("", CalculationMode.Ticks, Trailtick, true);
CalculateOnBarClose = true;
}
/// <summary>
/// Called on each bar update event (incoming tick)
/// </summary>
protected override void OnBarUpdate()
{
if (ToDay(Time[0])>= startdate && ToDay(Time[0]) <= stopdate)
{
if ((ToTime(Time[0]) >= starttime && ToTime(Time[0]) <= stoptime))
{
// Condition set 1
if (CrossAbove(Close, Pricepivot, 1))
{
EnterLong(Quantity, "");
}
// Condition set 2
if (CrossBelow(Close, Pricepivot, 1))
{
EnterShort(Quantity, "");
}
}
}
if (ToDay(Time[0])>= startdateb && ToDay(Time[0]) <= stopdateb)
{
if ((ToTime(Time[0]) >= starttimeb && ToTime(Time[0]) <= stoptimeb))
{
// Condition set 3
if (CrossAbove(Close, Pricepivotb, 1))
{
EnterLong(Quantity, "");
}
// Condition set 4
if (CrossBelow(Close, Pricepivotb, 1))
{
EnterShort(Quantity, "");
}
}
}
if (ToDay(Time[0])>= startdatec && ToDay(Time[0]) <= stopdatec)
{
if ((ToTime(Time[0]) >= starttimec && ToTime(Time[0]) <= stoptimec))
{
// Condition set 5
if (CrossAbove(Close, Pricepivotc, 1))
{
EnterLong(Quantity, "");
}
// Condition set 6
if (CrossBelow(Close, Pricepivotc, 1))
{
EnterShort(Quantity, "");
}
}
}
if (ToDay(Time[0])>= startdatec && ToDay(Time[0]) <= stopdatec)
{
if ((ToTime(Time[0]) >= startcloseout && ToTime(Time[0]) <= stopcloseout))
{
if(Position.MarketPosition == MarketPosition.Long)
ExitLong();
if(Position.MarketPosition == MarketPosition.Short)
ExitShort();
}
}
}
#region Properties
[Description("pivot")]
[GridCategory("Parameters")]
public double Pricepivot
{
get { return pricepivot; }
set { pricepivot = Math.Max(1, value); }
}
[Description("pivot")]
[GridCategory("Parameters")]
public double Pricepivotb
{
get { return pricepivotb; }
set { pricepivotb = Math.Max(1, value); }
}
[Description("pivot")]
[GridCategory("Parameters")]
public double Pricepivotc
{
get { return pricepivotc; }
set { pricepivotc = Math.Max(1, value); }
}
[Description("tick profit")]
[GridCategory("Parameters")]
public int Tickprofit
{
get { return tickprofit; }
set { tickprofit = Math.Max(1, value); }
}
[Description("quantity")]
[GridCategory("Parameters")]
public int Quantity
{
get { return quantity; }
set { quantity = Math.Max(1, value); }
}
[Description("tick stoploss")]
[GridCategory("Parameters")]
public int Tickstoploss
{
get { return tickstoploss; }
set { tickstoploss = Math.Max(1, value); }
}
[Description("trail tick stop")]
[GridCategory("Parameters")]
public int Trailtick
{
get { return trailtick; }
set { trailtick = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Startdate
{
get { return startdate; }
set { startdate = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Stoptdate
{
get { return stopdate; }
set { stopdate = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Startdateb
{
get { return startdateb; }
set { startdateb = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Stoptdateb
{
get { return stopdateb; }
set { stopdateb = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Startdatec
{
get { return startdatec; }
set { startdatec = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Stoptdatec
{
get { return stopdatec; }
set { stopdatec = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Starttime
{
get { return starttime;}
set { starttime = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Stoptime
{
get { return stoptime; }
set { stoptime = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Starttimeb
{
get { return starttimeb;}
set { starttimeb = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Stoptimeb
{
get { return stoptimeb; }
set { stoptimeb = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Starttimec
{
get { return starttimec;}
set { starttimec = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Stoptimec
{
get { return stoptimec; }
set { stoptimec = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Startcloseout
{
get { return startcloseout; }
set { startcloseout = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int Stopcloseout
{
get { return stopcloseout; }
set { stopcloseout = Math.Max(1, value); }
}
#endregion
}
}