/* * Created by SharpDevelop. * User: Sergey * Date: 13.01.2012 * Time: 17:05 * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Collections.Generic; using TSLab.Script; using TSLab.Script.Handlers; using TSLab.DataSource; using TSLab.Script.Helpers; namespace MyIndicators { [HandlerCategory("MyIndicators")] public class LinearTransform: ISecurityInputs, ISecurityReturns, ITwoSourcesHandler, IStreamHandler, IDoubleInput1, IDoubleInput2 { public ISecurity Execute(ISecurity source1, IDoubleInput1 factor, IDoubleInput2 shift) { double f = double.Parse(factor.ToString()); double s = double.Parse(shift.ToString()); var bars = new List(source1.Bars.Count); for (int i = 0; i < source1.Bars.Count; i++) { var bar = source1.Bars[i]; var o = bar.Open; var h = bar.High; var l = bar.Low; var c = bar.Close; var newBar = new Bar(bar.Color, bar.Date, o * f + s, h * f + s, l * f + s, c * f + s, bar.Volume){ Ask = bar.Ask, Bid = bar.Bid, AskQty = bar.AskQty, BidQty = bar.BidQty }; bars.Add(newBar); } return source1.CloneAndReplaceBars(bars); } } }