The debugging produces the right swing values so I'm at a loss.
#region Using declarations using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using System.Windows.Media; using System.Xml.Serialization; using NinjaTrader.Cbi; using NinjaTrader.Gui; using NinjaTrader.Gui.Chart; using NinjaTrader.Gui.SuperDom; using NinjaTrader.Gui.Tools; using NinjaTrader.Data; using NinjaTrader.NinjaScript; using NinjaTrader.Core.FloatingPoint; using NinjaTrader.NinjaScript.Indicators; using NinjaTrader.NinjaScript.DrawingTools; #endregion //This namespace holds Strategies in this folder and is required. Do not change it. namespace NinjaTrader.NinjaScript.Strategies { public class BillWilliams : Strategy { private Swing Swing1; private WisemanAlligator Alligator1; private double lips0; private double jaws0; private double teeth0; private double swinglow0; private double swinghigh0; private double close0; protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Fractal and Alligator"; Name = "BillWilliams"; Calculate = Calculate.OnPriceChange; EntriesPerDirection = 1; EntryHandling = EntryHandling.AllEntries; IsExitOnSessionCloseStrategy = false; ExitOnSessionCloseSeconds = 30; IsFillLimitOnTouch = false; MaximumBarsLookBack = MaximumBarsLookBack.Infinite; OrderFillResolution = OrderFillResolution.Standard; Slippage = 1; 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; SwingPeriod = 15; } else if (State == State.Configure) { } else if (State == State.DataLoaded) { Swing1 = Swing(Close, SwingPeriod); Alligator1 =WisemanAlligator(13,8,5,8,5,3); Swing1.Plots[0].Brush = Brushes.DarkCyan; Swing1.Plots[1].Brush = Brushes.Goldenrod; AddChartIndicator(Swing1); AddChartIndicator(Alligator1); } } protected override void OnBarUpdate() { jaws0 = Alligator1.Jaw[0]; teeth0 = Alligator1.Teeth[0]; lips0 = Alligator1.Lips[0]; close0 = Close[0]; if (BarsInProgress != 0) return; if (CurrentBar < 100) return; swinghigh0 = High[Math.Max(0, Swing1.SwingHighBar(0,1,100))]; swinglow0 = Low[Math.Max(0, Swing1.SwingLowBar(0,1,100))]; // Up trend Entry if(lips0 > teeth0 && teeth0> jaws0 && close0 > swinghigh0 && Position.MarketPosition == MarketPosition.Flat) //if(lips0 > teeth0 && close0 == swinghigh0 && Position.MarketPosition == MarketPosition.Flat) //if(CrossAbove(Close,swinghigh0,0)) { EnterLong(); Print("Long entered at: " + close0); Print("Last Swing High: " + swinghigh0); Print(" "); } //Down Trend if(lips0 < teeth0 && teeth0 < jaws0 && close0 < swinglow0 && Position.MarketPosition == MarketPosition.Flat) //if(lips0 < teeth0 && close0 == swinglow0 && Position.MarketPosition == MarketPosition.Flat) //if(CrossBelow(Close,swinglow0,0)) { EnterShort(); Print("Short entered at: " + close0); Print("Last Swing Low: " + swinglow0); Print(" "); } if(Alligator1.Lips[0] < Alligator1.Teeth[0] && Position.MarketPosition == MarketPosition.Long) { if(CrossBelow(Alligator1.Lips, Alligator1.Teeth,1)) { BarBrushes[0] = Brushes.Blue; ExitLong(); } } if(Alligator1.Lips[0] > Alligator1.Teeth[0] && Position.MarketPosition == MarketPosition.Short) { if(CrossAbove(Alligator1.Lips,Alligator1.Teeth,1)) { BarBrushes[0] = Brushes.Purple; ExitShort(); } } // Set 1 // if (GetCurrentBid(0) == Swing1.SwingHigh[0]) // { // EnterLong(Convert.ToInt32(DefaultQuantity), ""); // } } #region Properties [NinjaScriptProperty] [Range(1, int.MaxValue)] [Display(Name="SwingPeriod", Order=1, GroupName="Parameters")] public int SwingPeriod { get; set; } #endregion } }
Comment