1. When the range is broken, if the bar that breaks the range is still within 2.5pts of say the last four bars of the previous range, it identifies that as a range. What I would like is for the indicator to look for a new range once one is broken, so each bar could only be included in a range once.
2. The dot that marks each range to appear only twice, once at the start of the range, and once at the end.
3. I don’t seem to be able to get it to work in the limited manner I have currently coded for between a min and max lookback period. It only seems to work when one period is used.
My current code is below.
Any assistance would be much appreciated.
Thank you!
#region Variables // Wizard generated variables private double flagPriceRangeMultiplier = 10; // Default setting for FlagRange 10 x TickSize = 2.5pts private double mediumPriceRangeMultiplier = 14; // Default setting for MediumRange 14 x TickSize = 3.5pts private double largePriceRangeMultiplier = 18; // Default setting for LargeRange 18 x TickSize = 4.5pts // User defined variables (add any user defined variables below) private int minLookBackPeriod = 6; //Default setting for minimum look back period private int maxLookBackPeriod = 15; //Default setting for maximum look back period private string TagBullVol = "bullVol"; private string TagBearVol = "bearVol"; bool maxMinWithinFlag; //Set to true below if all bars in minimum look back period (currently 4 for ES) are within the defined price range int maxMinWithinFlagBar; //below it defines the 1st bar of the minimum look back period (currently 4 for ES) within the defined price range #endregion /// <summary> /// This method is used to configure the indicator and is called once before any bar data is loaded. /// </summary> protected override void Initialize() { Overlay = true; } /// <summary> /// Called on each bar update event (incoming tick) /// </summary> protected override void OnBarUpdate() { // Use this method for calculating your indicator values. Assign a value to each if (CurrentBar < (minLookBackPeriod - 1)) return; if (FirstTickOfBar) { int counter = 0; for (int i = 0; i < minLookBackPeriod; i++) { if ((MAX(High, minLookBackPeriod)[i] - MIN(Low, minLookBackPeriod)[i]) <= flagPriceRangeMultiplier * TickSize) counter++; } if (counter >= minLookBackPeriod) { DrawDot(TagBullVol + CurrentBar, AutoScale, 0, Low[1] - 6 * TickSize, Color.Blue); } Print(Time.ToString()+"Counter:"+counter);
Comment