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