public static void FillFractal(this Rate[] rates, Action <Rate, double?> setValue) { Indicore.BarSourceAut source = CreateBarsData(rates); Indicore.IndicatorInstanceAut instance = (Indicore.IndicatorInstanceAut)core.CreateIndicatorInstance("FRACTAL", source, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Indicore.IndicatorOutputCollectionAut outputs = (Indicore.IndicatorOutputCollectionAut)instance.Output; instance.Update(true); foreach (var rate in rates) { setValue(rate, 0); } foreach (var output in outputs.Cast <Indicore.IndicatorOutputAut>()) { var i = 0; output.Cast <double>().ToList().ForEach(d => { if (d != 0) { setValue(rates[i], d); } i++; }); } }
public static IEnumerable <IndicatorMACD> RsiMACD(Rate[] rates, Func <Rate, double> price, int period) { Indicore.TickSourceAut source = CreateTicksData(rates, price); Indicore.IndicatorInstanceAut instance1 = (Indicore.IndicatorInstanceAut)core.CreateIndicatorInstance("RSI", source, period, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Indicore.IndicatorOutputAut output1 = (Indicore.IndicatorOutputAut)((Indicore.IndicatorOutputCollectionAut)instance1.Output)[0]; Indicore.IndicatorInstanceAut instance2 = (Indicore.IndicatorInstanceAut)core.CreateIndicatorInstance("MACD", output1, 12, 26, 9, Type.Missing, Type.Missing); Indicore.IndicatorOutputCollectionAut _outputs = (Indicore.IndicatorOutputCollectionAut)instance2.Output; List <Indicore.IndicatorOutputAut> outputs = new List <Indicore.IndicatorOutputAut>(); for (int i = 0; i < _outputs.Size; i++) { outputs.Add((Indicore.IndicatorOutputAut)_outputs[i]); } Indicore.IndicatorOutputAut output2 = (Indicore.IndicatorOutputAut)((Indicore.IndicatorOutputCollectionAut)instance2.Output)[0]; instance1.Update(true); instance2.Update(true); for (int i = 0; i < rates.Length; i++) { yield return(new IndicatorMACD(rates[i].StartDate, price(rates[i]), outputs[0][i], outputs[1][i], outputs[2][i])); } }