OnDataPoint()

<< Click to Display Table of Contents >>

Navigation:  NinjaScript > Language Reference > Bars Type >

OnDataPoint()

Previous page Return to chapter overview Next page

Definition

Called for each record in the corresponding base dataset used to build the BarType (i.e., for every tick, minute, or day). The OnDataPoint() method is where you should adjust data points (bar values) of your series through AddBar() and UpdateBar().  See also the BuiltFrom property.

 

Notes:  

1.Historical data processing receives a single update for every base bar determined by the BuiltFrom property

2.When using TickReplay, historical updates will call for every tick handled by the core regardless of the BuiltFrom property defined

3.Once transitioned to real-time, updates will call on every tick processed by the core

4.The bid/ask parameters will ONLY be available historically when using Tick Replay, unless you are using a 1-tick series

 

 

Method Return Value

This method does not return a value.

 

Method Parameters

bars

The Bars object of your bars type

open

A double value representing the open price

high

A double value representing the high price

low

A double value representing the low price

close

A double value representing the close price

time

A DateTime value representing the time

volume

A long value representing the volume

isBar

A bool value representing if the incoming data is a bar from the data provider source

bid

A double value representing the bid price

ask

A double value representing the ask price

 

 

Syntax
You must override the method in your Bars Type with the following syntax.

 
protected override void OnDataPoint(Bars bars, double open, double high, double low, double close,

DateTime time, long volume, bool isBar, double bid, double ask)

{
 
}

 

Examples

ns

protected override void OnDataPoint(Bars bars, double open, double high, double low,
    double close, DateTime time, long volume, bool isBar, double bid, double ask)
{
    int minIndex;
 
    // Create the first data point of our series
    if (bars.Count == 0)
    {
        minIndex = 0;
        AddBar(bars, open, high, low, close, TimeToBarTime(time, (int) bars.BarsPeriod.Value), volume);
    }
    // Update our data point with the latest information
    else if ((time.Month <= bars.LastBarTime.Month && time.Year == bars.LastBarTime.Year) || time.Year < bars.LastBarTime.Year)
    {
        if (high != bars.GetHigh(bars.Count - 1) || low != bars.GetLow(bars.Count - 1) ||
              close != bars.GetClose(bars.Count - 1) || volume > 0)
        {
              minIndex = bars.Count - 1;
              UpdateBar(bars, high, low, close, bars.LastBarTime, volume);
        }
        else
              minIndex = -1;
    }
    // Add new data points
    else
    {
        minIndex = bars.Count;
        AddBar(bars, open, high, low, close, time, (long)Math.Min(volumeTmp, bars.BarsPeriod.Value));
    }
    FirstBarAmended = minIndex;
}