London United Kingdom
Experience: Beginner
Platform: NinjaTrader
Trading: 6E
Posts: 44 since Dec 2014
Thanks Given: 4
Thanks Received: 29
|
Range Indicator:
I have been trying to create an indicator which identifies when a MIN of 4 to a MAX of say 20 bars are within a 2.5pts range. Any time the range is broken, the range should end and it should attempt to identify a new range. I have been having the following problems:
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);
|