Announcement

Collapse

Looking for a User App or Add-On built by the NinjaTrader community?

Visit NinjaTrader EcoSystem and our free User App Share!

Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
See more
See less

Partner 728x90

Collapse

help tweaking autofib retracements indicator

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    help tweaking autofib retracements indicator

    Hey guys,
    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!


    Code:
    #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
    Attached Files

    #2
    Hello, test my edit
    Code:
    #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 fib1;
    private FibonacciRetracements fib2;
    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)
    fib1=Draw.FibonacciRetracements(this,"fib1",IsAuto Scale,barsSinceLow,Low[barsSinceLow],barsSinceHigh,High[barsSinceHigh]);
    else
    fib2=Draw.FibonacciRetracements(this,"fib2",IsAuto Scale,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
    Attached Files

    Comment


      #3
      Hello!

      Is there any way to change so the fib doesn't get ploted from candle close open?

      As seen in the pic below it didn't draw it to the high of the candle.

      Thanks in advance.

      Comment


        #4
        Hello Jewker,

        Thank you for your reply.

        Are you using the autofib from the first post in this thread, the one in the second one or a different one?

        Does ensuring the Calculate mode is set to OnPriceChange fix the issue?

        Thanks in advance; I look forward to assisting you further.
        Kate W.NinjaTrader Customer Service

        Comment


          #5
          Hello Kate!

          It works perfectly now!

          Thank you!

          Comment

          Latest Posts

          Collapse

          Topics Statistics Last Post
          Started by GussJ, 03-04-2020, 03:11 PM
          16 responses
          3,281 views
          0 likes
          Last Post Leafcutter  
          Started by WHICKED, Today, 12:45 PM
          2 responses
          19 views
          0 likes
          Last Post WHICKED
          by WHICKED
           
          Started by Tim-c, Today, 02:10 PM
          1 response
          9 views
          0 likes
          Last Post NinjaTrader_ChelseaB  
          Started by Taddypole, Today, 02:47 PM
          0 responses
          5 views
          0 likes
          Last Post Taddypole  
          Started by chbruno, 04-24-2024, 04:10 PM
          4 responses
          53 views
          0 likes
          Last Post chbruno
          by chbruno
           
          Working...
          X