BarsRequiredToTrade

View as Markdown

Definition

The number of historical bars required before the strategy starts processing order methods called in the OnBarUpdate method. This property is generally set via the UI when starting a strategy.

In a multi-series strategy this restriction applies only for the primary Bars object. This means your can run into situations where the primary bars required to trade have been reached, but the additional bars required have not. Should your strategy logic intertwine calculations across different Bars objects please ensure all Bars objects have met the BarsRequiredToTrade requirement before proceeding. This can be done via checks on the CurrentBars array.

Property Value

An int value representing the number of historical bars. Default value is set to 20.

This property should ONLY bet set from the OnStateChange method during State.SetDefaults or State.Configure

Syntax

BarsRequiredToTrade

When working with a multi-series strategy, real-time bar update events for a particular Bars object are only received when that Bars object has satisfied the BarsRequiredToTrade requirement. To ensure this requirement is met, please use the CurrentBars array.

Examples

Setting the default BarsRequiredToTrade value

1 protected override void OnStateChange()
2 {
3 if (State == State.Configure)
4 {
5 BarsRequiredToTrade = 20;
6 }
7 }

Checking BarsRequiredToTrade against a CurrentBars array

1 protected override void OnStateChange()
2 {
3 if (State == State.SetDefaults)
4 {
5 BarsRequiredToTrade = 20;
6 }
7 else if (State == State.Configure)
8 {
9 // add 30 minute series for calculation logic
10 AddDataSeries(BarsPeriodType.Minute, 30);
11 }
12 }
13
14 protected override void OnBarUpdate()
15 {
16 // do not process order logic until bars required to trade is met
17 // for both primary and 30-minute series have reached their bars required to trade
18 if (CurrentBars[0] < BarsRequiredToTrade || CurrentBars[1] < BarsRequiredToTrade)
19 return;
20
21 //order logic
22 }