Below is my code:
public class Entry01TradeThePullback : Strategy { SessionIterator sessionIterator; Order sessionOrder; protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Entry #1 – Trade The Pullback"; Name = "Entry01TradeThePullback"; Calculate = Calculate.OnBarClose; EntriesPerDirection = 1; EntryHandling = EntryHandling.AllEntries; IsExitOnSessionCloseStrategy = true; ExitOnSessionCloseSeconds = 30; IsFillLimitOnTouch = false; 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) { AddDataSeries(Data.BarsPeriodType.Minute, 5); } else if (State == State.DataLoaded) { sessionIterator = new SessionIterator(Bars); } } protected override void OnBarUpdate() { if (CurrentBar < BarsRequiredToTrade) return; if (BarsInProgress == 0) //Daily bars, check on open previous value { if (High[0] < High[1] && High[1] > High[2]) sessionOrder=EnterShort(); if (Low[0] > Low[1] && Low[1] < Low[2]) sessionOrder= EnterLong(); } if (Bars.IsLastBarOfSession) { if ((sessionOrder != null) && (sessionOrder.OrderState == OrderState.Filled)) { if (sessionOrder.OrderAction == OrderAction.Buy) ExitLong("eXit", sessionOrder.Name); if ((sessionOrder.OrderAction == OrderAction.Sell) || (sessionOrder.OrderAction == OrderAction.SellShort)) ExitShort("eXit", sessionOrder.Name); } else if (sessionOrder != null) CancelOrder(sessionOrder); } } }
Comment