make your own Dataseries
19 Mar 2019, 12:48
I have to make my own Dataseries to feed it to an indicator, but get stuck somewhere
public class IMySeries : MarketSeries
{
public DataSeries High { get; set; }
public DataSeries Low { get; set; }
public DataSeries Close { get; set; }
public DataSeries TickVolume { get; set; }
.......
Using it
protected override void OnTick()
{
double jo = MySeries.High[1];
MySeries.High[1]=jo; //this won't work, the set; is not implemented
.....
It seems the set is not available.
Where am I making the obvious mistake?
Is there a better way to make your own MarketSeries?
Replies
TonNcie
19 Mar 2019, 13:06
RE:
using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;
namespace cAlgo.Robots
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class Renner : Robot
{
private IMySeries MySeries;
MyOwnIndicator _signalIndicator;
protected override void OnStart()
{
MySeries = new IMySeries(Symbol);
_signalIndicator = Indicators.GetIndicator<MyOwnIndicator>(MySeries);
}
protected override void OnTick()
{
double jo = MySeries.High[1];
MySeries.High[1] = jo;
}
}
public class IMySeries : MarketSeries
{
public DataSeries Open { get; set; }
public DataSeries High { get; set; }
public DataSeries Low { get; set; }
public DataSeries Close { get; set; }
public DataSeries TickVolume { get; set; }
public DataSeries Median { get; set; }
public DataSeries Typical { get; set; }
public DataSeries Weighted { get; set; }
public DataSeries WeightedClose { get; set; }
public TimeSeries OpenTime { get; set; }
public TimeFrame TimeFrame { get; set; }
public string SymbolCode { get; set; }
private Symbol symbol;
public IMySeries(Symbol symbol)
{
this.symbol = symbol;
}
}
}
@TonNcie
PanagiotisCharalampous
19 Mar 2019, 14:25
Hi El Antonio,
DataSeries type does not feature a setter, see interface definition below
using System.Reflection;
namespace cAlgo.API
{
//
// Summary:
// Represents a read only list of values, typically used to represent market price
// series. The values are accessed with an array-like [] operator.
[DefaultMember("Item")]
public interface DataSeries
{
//
// Summary:
// Gets the value in the dataseries at the specified position.
double this[int index] { get; }
//
// Summary:
// Gets the last value of this DataSeries.
//
// Remarks:
// The last value may represent one of the values of the last bar of the market
// series, e.g. Open, High, Low and Close. Therefore, take into consideration that
// on each tick, except the Open price, the rest of the values will most probably
// change.
double LastValue { get; }
//
// Summary:
// Gets the total number of elements contained in the DataSeries.
int Count { get; }
//
// Summary:
// Access a value in the dataseries certain bars ago
//
// Parameters:
// index:
// Number of bars ago
double Last(int index);
}
}
Which indicator are you trying to feed?
Best Regards,
Panagiotis
@PanagiotisCharalampous
PanagiotisCharalampous
19 Mar 2019, 16:25
Hi El Antonio,
If it is custom made then you can use IndicatorDataSeries type in your class instead if DataSeries. IndicatorDataSeries allows setting values.
Best Regards,
Panagiotis
@PanagiotisCharalampous

PanagiotisCharalampous
19 Mar 2019, 12:52
Hi El Antonio,
Can you please post the complete cBot code?
Best Regards,
Panagiotis
@PanagiotisCharalampous