#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.Data; using NinjaTrader.NinjaScript; using NinjaTrader.Core.FloatingPoint; using NinjaTrader.NinjaScript.DrawingTools; #endregion //This namespace holds Indicators in this folder and is required. Do not change it. namespace NinjaTrader.NinjaScript.Indicators.BobC { public class CDDivergenceUDT : Indicator {NinjaTrader.Gui.Tools.SimpleFont myFont = new NinjaTrader.Gui.Tools.SimpleFont("Arial", 10) { Size = 10, Bold = false }; private OrderFlowCumulativeDelta OrderFlowCumulativeDelta1; private Brush divergeCandle = Brushes.Purple; // Color body for Divergence Candle protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"A Line is drawn from the specified Open."; Name = "CDDivergenceUDT"; Calculate = Calculate.OnBarClose; IsOverlay = true; DisplayInDataBox = false; DrawOnPricePanel = true; PaintPriceMarkers = false; IsSuspendedWhileInactive = true; IsAutoScale = false; } else if (State == State.Configure) { // OrderFlowCumulativeDelta1 = OrderFlowCumulativeDelta(Close, NinjaTrader.NinjaScript.Indicators.CumulativeDelta Type.BidAsk, NinjaTrader.NinjaScript.Indicators.CumulativeDelta Period.Session, 0); OrderFlowCumulativeDelta1 = OrderFlowCumulativeDelta(Close, NinjaTrader.NinjaScript.Indicators.CumulativeDelta Type.UpDownTick, NinjaTrader.NinjaScript.Indicators.CumulativeDelta Period.Session, 0); } else if (State == State.DataLoaded) { } } protected override void OnBarUpdate() { if (CurrentBars[0]<BarsRequiredToPlot) {return;} #region Transition Candles if(OrderFlowCumulativeDelta1.DeltaClose[0] > OrderFlowCumulativeDelta1.DeltaOpen[0] && Close[0] < Open[0]) //added Transition Yellow Outline { [B]BarBrushes[0]=divergeCandle[/B]; [B]Draw.Line(this, @"", false, 0, 0, 0, 0, Brushes.CornflowerBlue, DashStyleHelper.Solid, 2);[/B] } if(OrderFlowCumulativeDelta1.DeltaClose[0] < OrderFlowCumulativeDelta1.DeltaOpen[0] && Close[0] > Open[0]) { [B]BarBrushes[0]=divergeCandle;[/B] [B]Draw.Line(this, @"", false, 0, 0, 0, 0, Brushes.CornflowerBlue, DashStyleHelper.Solid, 2);[/B] } #endregion } // In order to trim the indicator's label we need to override the ToString() method. public override string DisplayName { get { return Name ;} } #region Properties [XmlIgnore] [Display(Name="DivergenceCandle", Description="Divergence Candle Body Color", Order=4, GroupName="Visual")] public Brush DivergeCandle { get { return divergeCandle;} set { divergeCandle = value;} } [Browsable(false)] public string DivergeCandleSerializable { get { return Serialize.BrushToString(divergeCandle); } set { divergeCandle = Serialize.StringToBrush(value); } } #endregion } } #region NinjaScript generated code. Neither change nor remove. namespace NinjaTrader.NinjaScript.Indicators { public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase { private BobC.CDDivergenceUDT[] cacheCDDivergenceUDT; public BobC.CDDivergenceUDT CDDivergenceUDT() { return CDDivergenceUDT(Input); } public BobC.CDDivergenceUDT CDDivergenceUDT(ISeries<double> input) { if (cacheCDDivergenceUDT != null) for (int idx = 0; idx < cacheCDDivergenceUDT.Length; idx++) if (cacheCDDivergenceUDT[idx] != null && cacheCDDivergenceUDT[idx].EqualsInput(input)) return cacheCDDivergenceUDT[idx]; return CacheIndicator<BobC.CDDivergenceUDT>(new BobC.CDDivergenceUDT(), input, ref cacheCDDivergenceUDT); } } } namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns { public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase { public Indicators.BobC.CDDivergenceUDT CDDivergenceUDT() { return indicator.CDDivergenceUDT(Input); } public Indicators.BobC.CDDivergenceUDT CDDivergenceUDT(ISeries<double> input ) { return indicator.CDDivergenceUDT(input); } } } namespace NinjaTrader.NinjaScript.Strategies { public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase { public Indicators.BobC.CDDivergenceUDT CDDivergenceUDT() { return indicator.CDDivergenceUDT(Input); } public Indicators.BobC.CDDivergenceUDT CDDivergenceUDT(ISeries<double> input ) { return indicator.CDDivergenceUDT(input); } } } #endregion
However I cant figure out how to turn the Divergence Candle bar location into an integer so I can insert it into my Draw.Line code?
Any help? thanks
Comment