Code: Select all
public class ISeriesTransformer<TSourceType, TDestinationType> : ISeries<TDestinationType>
{
private ISeries<TSourceType> _source;
private Converter<TSourceType, TDestinationType> _converter;
public ISeriesTransformer(ISeries<TSourceType> source, Converter<TSourceType, TDestinationType> converter)
{
_source = source;
_converter = converter;
}
public TDestinationType this[int barsAgo]
{
get { return _converter(_source[barsAgo]); }
}
public TDestinationType Value
{
get { return _converter(_source.Value); }
}
}
Code: Select all
public static ISeries<TDestinationType> Transform<TSourceType, TDestinationType>(this ISeries<TSourceType> series, Converter<TSourceType, TDestinationType> converter)
{
new ISeriesTransformer<TSourceType,TDestinationType>(series, converter);
}
Code: Select all
ISeries<double> closePriceMinus10 = Bars.Close.Transform(closePrice => closePrice - 10);
Hope this helps others.