Page 1 of 1

Null Values in Candle Series and Functions

Posted: Tue Dec 14, 2010 2:29 pm
by 15658023
I am attempting to set up basic OHLC bar charts and then overlay a study like a Moving Average. The Y scale may be 1, 5, 10, etc. minute bars. I need to be able to manage the "gaps" in the data for periods where there is no trade. For example, I do not want to show a gap horizontally where the market is closed, like on a Saturday. When the market is open, if we go a few minutes without any trade I want to leave a gap. That is to say, while the market is open I want to chart exactly what is happening. I saw all the talk about the time based scale not providing such functionality, so I have created my charts using an integer index number for each bar. That works just fine. As time goes by, my charts update. If there is no trade, nothing is plotted.

The problem I have relates to functions like moving averages. I can not seem to get the study to ignore null values. If you have a suggestion for properly entering the data or setting something correctly in the chart, I would like your feedback.

Here is an example. If one does a 1-day moving average of the close, the moving average line should connect each successive bar's close. You can see in the image below where the moving average line drops to 0 (presumably) on each bar where there is no data.
Chart.gif
Chart Image - 1day Average
Chart.gif (27.14 KiB) Viewed 4071 times
The code I use to insert the "null" data is as follows. I have tried using actual NULL objects, values of 0 and anything else I can think of. In the following code, the price value is actually the previous close value.

If IsMarketOpen(nBarDate) Then
CandleSeries1.Add(BarNum, lLast, Color.Transparent)
CandleSeries1.Labels(BarNum) = nBarDate.ToString("MM/dd/yyyy HH:mm")
VolumeSeries1.Add(BarNum, 0, Color.Transparent)
BarNum = BarNum + 1
End If

The study itself is created as:

Dim line2 As New Steema.TeeChart.Styles.Line(TChart1.Chart)
Dim Average1 As New Steema.TeeChart.Functions.Average()
Average1.IncludeNulls = False
line2.Function = Average1
line2.DataSource = CandleSeries1
line2.YValues.DataMember = "Close"
line2.Function.Period = 1
line2.Function.PeriodAlign = Functions.PeriodAligns.First
line2.Function.PeriodStyle = Functions.PeriodStyles.Range
line2.Color = Color.Blue
line2.CustomVertAxis = GreenAxis
line2.LinePen.Style = Drawing2D.DashStyle.Solid
line2.CheckDataSource()

Re: Null Values in Candle Series and Functions

Posted: Wed Dec 15, 2010 3:33 pm
by 10050769
Hello Dave,
You have different options:
1.- You can use property of average IncludeNulls to false and function will be calculated without null points. You also can change property of Line TreatNulls to DoNotPaint . You can do something as next:

Code: Select all

private void InitializeChart()
        {
            tChart1.Aspect.View3D = false;
            Steema.TeeChart.Styles.Candle series1 = new Steema.TeeChart.Styles.Candle(tChart1.Chart);
            Steema.TeeChart.Styles.Line line1 = new Steema.TeeChart.Styles.Line(tChart1.Chart);
            Steema.TeeChart.Functions.Average average1 = new Steema.TeeChart.Functions.Average();
            series1.FillSampleValues(5);
            series1.SetNull(2);
            series1.SetNull(4);
            line1.DataSource = series1;
            average1.IncludeNulls = false;
            line1.Function = average1;
            line1.YValues.DataMember = "Close";
            line1.Function.Period = 1;
            line1.Function.PeriodAlign = Steema.TeeChart.Functions.PeriodAligns.First;
            line1.Function.PeriodStyle = Steema.TeeChart.Functions.PeriodStyles.Range;
            line1.Color = Color.Blue;
            line1.TreatNulls = Steema.TeeChart.Styles.TreatNullsStyle.DoNotPaint;
            line1.LinePen.Style= System.Drawing.Drawing2D.DashStyle.Solid;
           tChart1.Axes.Bottom.Labels.Angle = 90;     
        }
2.- You can create your average function, using a line series, for example and set nulls the points that you don't want paint.

I hope will helps.

Thanks,

Re: Null Values in Candle Series and Functions

Posted: Wed Dec 15, 2010 3:43 pm
by 15658023
I had the Average.IncludeNulls = False in there. I had missed the TreatNulls = DoNotPaint. That was the key. Thank you very much for the timely answer. We are good to go now!

:D (You guys ROCK!) :D

Re: Null Values in Candle Series and Functions

Posted: Wed Dec 15, 2010 4:52 pm
by 10050769
Hello dave,

I am glad that your problem solved :).

Thanks,