public ISecurity Execute(ISecurity source) { var bars = source.Bars.Select( bar => { var babar = bar as IBar; var nbar = babar == null ? new DataBar() : new BidAskBar { Ask = Math.Ceiling(babar.Ask * Coef), Bid = Math.Ceiling(babar.Bid * Coef), AskQty = babar.AskQty, BidQty = babar.BidQty, StepPrice = babar.StepPrice, Volatility = babar.Volatility, TheoreticalPrice = babar.TheoreticalPrice, }; nbar.Date = bar.Date; nbar.Open = Math.Ceiling(bar.Open * Coef); nbar.High = Math.Ceiling(bar.High * Coef); nbar.Low = Math.Ceiling(bar.Low * Coef); nbar.Close = Math.Ceiling(bar.Close * Coef); nbar.Volume = bar.Volume; nbar.Interest = bar.Interest; return(nbar); }); return(source.CloneAndReplaceBars(bars)); }
public ISecurity Execute(ISecurity source, IList <double> src2) { var dcf = Math.Pow(10, Decimals); var bars = new List <IDataBar>(source.Bars.Count); for (int i = 0; i < source.Bars.Count; i++) { var bar = source.Bars[i]; var s2 = src2.Count == 0 ? 0 : src2[Math.Min(i, src2.Count - 1)]; var coef = Coef * 1 / Math.Max(s2, 1e-10) * dcf; var babar = bar as IBar; var nbar = babar == null ? new DataBar() : new BidAskBar { Ask = Math.Ceiling(babar.Ask * coef) / dcf, Bid = Math.Ceiling(babar.Bid * coef) / dcf, AskQty = babar.AskQty, BidQty = babar.BidQty, StepPrice = babar.StepPrice, Volatility = babar.Volatility, TheoreticalPrice = babar.TheoreticalPrice, }; nbar.Date = bar.Date; nbar.Open = Math.Ceiling(bar.Open * coef) / dcf; nbar.High = Math.Ceiling(bar.High * coef) / dcf; nbar.Low = Math.Ceiling(bar.Low * coef) / dcf; nbar.Close = Math.Ceiling(bar.Close * coef) / dcf; nbar.Volume = bar.Volume; nbar.Interest = bar.Interest; bars.Add(nbar); } return(source.CloneAndReplaceBars(bars)); }
public ISecurity Execute(ISecurity sec) { var ValCount = sec.Bars.Count; int prevhour = 0; IList <Bar> NewBars = new List <Bar>(); foreach (var bar in sec.Bars) { if (bar.Date.Hour - prevhour > 1 && prevhour > 0) { for (int i = 1; i < bar.Date.Hour - prevhour; i++) { Bar newbar = new Bar(bar.Color, bar.Date.AddHours(1), bar.Open, bar.High, bar.Low, bar.Close, bar.Volume); NewBars.Add(newbar); } } NewBars.Add(bar); prevhour = bar.Date.Hour; } ISecurity newsec = sec.CloneAndReplaceBars(NewBars); return(newsec); }