Is there a way to change this indicator so it can draw 2 fib retracements at the same time - one from swing low to swing high and from swing low to swing high.
currently it just look back and find whatever SH or SL and draw one fib retracements accordingly. I'm just trying to see both retracements long and short at the same time.
Please let me know if you any idea of how to that.
Thanks!
#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.DrawingTools; #endregion //This namespace holds Indicators in this folder and is required. Do not change it. namespace NinjaTrader.NinjaScript.Indicators { /// <summary> /// This indicator will automatically draw fibonacci retracements from swing highs and /// lows in the market. /// /// Code Written by Tyler Moore /// www.FreeIndicators.Com /// /// For modifications to this code or to have your own custom code written /// please visit www.MooreTechLLC.com /// </summary> public class AutoFibRetracements : Indicator { #region Variables private FibonacciRetracements fib; private MIN min; private MAX max; private int barsSinceHigh = -1, barsSinceLow = -1; #endregion protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Automatically draw fibonacci retracements from swing highs and lows in the market."; Name = "AutoFibRetracements"; Calculate = Calculate.OnBarClose; IsOverlay = true; DisplayInDataBox = true; DrawOnPricePanel = true; DrawHorizontalGridLines = true; DrawVerticalGridLines = true; PaintPriceMarkers = true; ScaleJustification = NinjaTrader.Gui.Chart.ScaleJustification.Right; //Disable this property if your indicator requires custom values that cumulate with each new market data event. //See Help Guide for additional information. IsSuspendedWhileInactive = true; Strength = 20; } else if (State == State.Configure) { min=MIN(Low,Strength); max=MAX(High,Strength); } } protected override void OnBarUpdate() { if (CurrentBar<Strength) return; if (High[0]>max[1]) barsSinceHigh=0; else if (barsSinceHigh>-1 && IsFirstTickOfBar) barsSinceHigh++; if (Low[0]<min[1]) barsSinceLow=0; else if (barsSinceLow>-1 && IsFirstTickOfBar) barsSinceLow++; if (Math.Min(barsSinceHigh,barsSinceLow)<=0) return; if (barsSinceHigh<barsSinceLow) fib=Draw.FibonacciRetracements(this,"fib",IsAutoSc ale,barsSinceLow,Low[barsSinceLow],barsSinceHigh,High[barsSinceHigh]); else fib=Draw.FibonacciRetracements(this,"fib",IsAutoSc ale,barsSinceHigh,High[barsSinceHigh],barsSinceLow,Low[barsSinceLow]); } #region Properties [Range(1, int.MaxValue)] [NinjaScriptProperty] [Display(Name="Strength", Order=1, GroupName="Parameters")] public int Strength { get; set; } #endregion } } #region NinjaScript generated code. Neither change nor remove. namespace NinjaTrader.NinjaScript.Indicators { public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase { private AutoFibRetracements[] cacheAutoFibRetracements; public AutoFibRetracements AutoFibRetracements(int strength) { return AutoFibRetracements(Input, strength); } public AutoFibRetracements AutoFibRetracements(ISeries<double> input, int strength) { if (cacheAutoFibRetracements != null) for (int idx = 0; idx < cacheAutoFibRetracements.Length; idx++) if (cacheAutoFibRetracements[idx] != null && cacheAutoFibRetracements[idx].Strength == strength && cacheAutoFibRetracements[idx].EqualsInput(input)) return cacheAutoFibRetracements[idx]; return CacheIndicator<AutoFibRetracements>(new AutoFibRetracements(){ Strength = strength }, input, ref cacheAutoFibRetracements); } } } namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns { public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase { public Indicators.AutoFibRetracements AutoFibRetracements(int strength) { return indicator.AutoFibRetracements(Input, strength); } public Indicators.AutoFibRetracements AutoFibRetracements(ISeries<double> input , int strength) { return indicator.AutoFibRetracements(input, strength); } } } namespace NinjaTrader.NinjaScript.Strategies { public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase { public Indicators.AutoFibRetracements AutoFibRetracements(int strength) { return indicator.AutoFibRetracements(Input, strength); } public Indicators.AutoFibRetracements AutoFibRetracements(ISeries<double> input , int strength) { return indicator.AutoFibRetracements(input, strength); } } } #endregion
Comment