The initial default StopLoss is set to 32 ticks
//This namespace holds Strategies in this folder and is required. Do not change it.
namespace NinjaTrader.NinjaScript.Strategies
{
public class LongEntry0Cross : Strategy
{
private MACD MACD1;
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"Original";
Name = "LongEntry";
Calculate = Calculate.OnEachTick;
EntriesPerDirection = 1;
EntryHandling = EntryHandling.AllEntries;
IsExitOnSessionCloseStrategy = true;
ExitOnSessionCloseSeconds = 30;
IsFillLimitOnTouch = true;
MaximumBarsLookBack = MaximumBarsLookBack.TwoHundredFiftySix;
OrderFillResolution = OrderFillResolution.Standard;
Slippage = 0;
StartBehavior = StartBehavior.WaitUntilFlat;
TimeInForce = TimeInForce.Gtc;
TraceOrders = false;
RealtimeErrorHandling = RealtimeErrorHandling.StopCancelClose;
StopTargetHandling = StopTargetHandling.PerEntryExecution;
BarsRequiredToTrade = 20;
// Disable this property for performance gains in Strategy Analyzer optimizations
// See the Help Guide for additional information
IsInstantiatedOnEachOptimizationIteration = true;
}
else if (State == State.Configure)
{
SetProfitTarget("", CalculationMode.Ticks, 64);
SetStopLoss("", CalculationMode.Ticks, 32, false);
}
else if (State == State.DataLoaded)
{
MACD1 = MACD(Close, 12, 26, 11);
}
}
protected override void OnBarUpdate()
{
if (BarsInProgress != 0)
return;
if (CurrentBars[0] < 1)
return;
// Enters Long on a 0 point cross
if (CrossAbove(MACD1.Diff, 0, 1))
{
EnterLong(Convert.ToInt32(Position.Quantity), @"Long Zero");
}
// Resets the stop loss to the original value when all positions are closed
if (Position.MarketPosition == MarketPosition.Flat)
{
SetStopLoss("", CalculationMode.Ticks, 32, false);
}
// If a long position is open, allow for stop loss modification to +5 ticks above entry else if (Position.MarketPosition == MarketPosition.Long)
{
// Once the price is greater or equal to entry price +20 ticks, set stop loss to +5 above entry price
if (Close[0] > Position.AveragePrice + 20 * TickSize)
{
SetStopLoss("", CalculationMode.Ticks, Position.AveragePrice + 1 * TickSize, false);
}
}
}
}
}
Comment