DataMarketplace

Object for accessing data from Data Marketplace.

Signals Framework is designed to enable you to create strategies based on any data stream. At the moment, we are offering historical data from crypto exchanges, which you can access in your strategy through the Bars method of the DataMarketplace object.

Select market(s) from the Data Marketplace

Single Market Strategies

For Single Market Strategies, the dropdown in the Markets section in the editor sidebar lets you select a single market that wil be available for your strategy. At any time, you can select a different market from the dropdown and replace the one already connected with your strategy. This way you can run the the model on different markets without a need of changing a single line of code.

Multi Market Strategies

For Multi Market Strategies, you can select multiple markets for a single strategy. Each selected market has indicated and index to the right of the dropdown, which can be used in code to reference the market. In the code, you can access the concrete market with array index operator indicated to the right next to each dropdown - e.g. use Markets[1] for the ETH/USDT asset pairing on Poloniex.

Selecting a third data series, it will be accessible through Markets[2] in the code.

Initialize bars on the market(s)

Bars Method

Define the time scale of the constructed bars by specifing the period type and length. For 5-minute bars, the period type should be set to Minute and period to 5.

Parameters

Name

Type

Description

periodType

BarPeriodType

Period type together with period defines the time scale of Bars which you want to use. PeriodType could be Minute, Hour, or Day.

period

int

The number of periods which define the size of the Bar. For 5-minute bars, the BarPeriodType should be set to Minute and period to 5.

Example

Basic example
Complete example
Basic example
// Using Bars method for initializing 1 day bars
dailyBars = data.Bars(BarPeriodType.Day, 1)
// Using Bars method for initializing 5 hours bars
fiveHourBar = data.Bars(BarPeriodType.Hour, 5)
Complete example
using Signals.DataSeries.Bars;
using Signals.Framework;
public class MyStrategy : SingleMarketStrategy
{
private Bars dailyBars;
public override void Setup(DataMarketplace data, IndicatorsMarketplace indicators)
{
dailyBars = data.Bars(BarPeriodType.Day, 1).WithOffset(2);
}
public override void RegisterActions()
{
OnUpdateOf(dailyBars).Do(() =>
{
// Prints the latest close value value
Log("The latest close value is " + dailyBars[0].Close.ToString());
// Prints the previous close value value
Log("The previous close value is " + dailyBars[1].Close.ToString());
});
}
}

OnMarket Method

This is an optional method, which is useful only in Multi Market Strategies. It allows you to define market on which you want to construct the series on. You don't need to use this method with Single Market Strategies - if this method is not used, the default value is applied - Markets[0] - i.e. the first market selected in the strategy settings in the sidebar.

Parameters

Name

Type

Description

market

Market

Market on which you want to construct the data series.

Example

Basic example
Complete example
Basic example
// Initiating 1 day bars with the second selected market
ethBars = data.Bars(BarPeriodType.Day, 1).OnMarket(Markets[1])
Complete example
using Signals.DataSeries.Bars;
using Signals.Framework;
public class MyStrategy : SingleMarketStrategy
{
private Bars dailyBarsFirstMarket;
private Bars dailyBarsSecondMarket;
public override void Setup(DataMarketplace data, IndicatorsMarketplace indicators)
{
dailyBarsFirstMarket = data.Bars(BarPeriodType.Day, 1).OnMarket(Markets[0]).WithOffset(25);
dailyBarsSecondMarket = data.Bars(BarPeriodType.Day, 1).OnMarket(Markets[2]).WithOffset(25);
}
public override void RegisterActions()
{
OnUpdateOf(dailyBarsFirstMarket).Do(() =>
{
// Prints the latest close value on the first selected market
Log("1st Market: The latest close value is " + dailyBarsFirstMarket[0].Close.ToString());
// Prints the previous close value on the first selected market
Log("1st Market: The previous close value is " + dailyBarsFirstMarket[1].Close.ToString());
});
OnUpdateOf(dailyBarsSecondMarket).Do(() =>
{
// Prints the latest close value on the second selected market
Log("2nd Market: The latest close value is " + dailyBarsSecondMarket[0].Close.ToString());
// Prints the previous close value on the second selected market
Log("2nd Market: The previous close value is " + dailyBarsSecondMarket[1].Close.ToString());
});
}
}

WithOffset Method

After you define what kind of data you want to use in your strategy, you need to also define the number of data points which your strategy needs to operate on, i.e. how many historical bars you can access at any moment.

Parameters

Name

Type

Description

offset

int

The number of bars that you want to access in the logic of your strategy.

Example

Basic example
Complete example
Basic example
// Initiating 5 minute bars with 10 bars into the history
fiveMinuteBars = data.Bars(BarPeriodType.Minutes, 5).WithOffset(10);
// Initiating daily bars with 2 bars into the history
dailyBars = data.Bars(BarPeriodType.Day, 1).WithOffset(2);
if (dailyBars[0].Close > dailyBars[1].Close) {
Log("Today's close value is higher.");
}
Complete example
using Signals.DataSeries.Bars;
using Signals.Framework;
public class MyStrategy : SingleMarketStrategy
{
private Bars dailyBars;
public override void Setup(DataMarketplace data, IndicatorsMarketplace indicators)
{
dailyBars = data.Bars(BarPeriodType.Day, 1).WithOffset(2);
}
public override void RegisterActions()
{
OnUpdateOf(dailyBars).Do(() =>
{
// Prints the latest close value value
Log("The latest close value is " + dailyBars[0].Close.ToString());
// Prints the previous close value value
Log("The previous close value is " + dailyBars[1].Close.ToString());
});
}
}