static void GetRSI(Rate[] rates) { //create the sample data Indicore.BarSourceAut source = CreateBarsData(rates); //find mva indicator Indicore.IndicatorCollectionAut indicators; indicators = (Indicore.IndicatorCollectionAut)core.Indicators; Indicore.IndicatorAut indicator = (Indicore.IndicatorAut)indicators["MVA"]; //create parameter set and specify "N" parameter of the indicator. Indicore.IndicatorParameterCollectionAut parameters = (Indicore.IndicatorParameterCollectionAut)indicator.CreateParameterSet(); ((Indicore.IndicatorParameterAut)(parameters["N"])).Value = 7; //create and instance of the indicator and force data update. Indicore.IndicatorInstanceAut instance = (Indicore.IndicatorInstanceAut)indicator.CreateIndicatorInstance(source, parameters); instance.Update(true); //get the indicator output (MVA has one output). Indicore.IndicatorOutputAut output = (Indicore.IndicatorOutputAut)((Indicore.IndicatorOutputCollectionAut)instance.Output)[0]; //Print result. //Please note that the indicator output can be as longer as well as shorter than the indicator. //Also, the indicator results can start not from the first value of the source. The first defined value //of the indicator is in the output.FirstAvailable position. int max; if (source.Size > output.Size) { max = source.Size; } else { max = output.Size; } Console.WriteLine("{0}", instance.Name); Console.WriteLine("Date;Tick;MVA;"); for (int i = 0; i < max; i++) { if (i < source.Size) { Indicore.TickAut tick = (Indicore.TickAut)source[i]; Console.Write("{0};{1};", tick.Date, tick.Tick); } else { Console.Write("n/a;n/a;"); } if (i >= output.FirstAvailable && i < output.Size) { Console.Write("{0};", output[i]); } else { Console.Write("n/a;"); } Console.WriteLine(); } }
public static IEnumerable <IndicatorPoint> RLW(Rate[] rates, int period) { Indicore.BarSourceAut source = CreateBarsData(rates); Indicore.IndicatorInstanceAut instance = (Indicore.IndicatorInstanceAut)core.CreateIndicatorInstance("RLW", source, period, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Indicore.IndicatorOutputAut output = (Indicore.IndicatorOutputAut)((Indicore.IndicatorOutputCollectionAut)instance.Output)[0]; instance.Update(true); return(output.Cast <double>().Select((d, i) => new IndicatorPoint(rates[i].StartDate, d))); }
public static IEnumerable <IndicatorPoint> RSI(IList <Rate> rates, Func <Rate, double> price, int period) { Indicore.TickSourceAut source = CreateTicksData(rates, price); Indicore.IndicatorInstanceAut instance = (Indicore.IndicatorInstanceAut)core.CreateIndicatorInstance("RSI", source, period, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Indicore.IndicatorOutputAut output = (Indicore.IndicatorOutputAut)((Indicore.IndicatorOutputCollectionAut)instance.Output)[0]; instance.Update(true); return(output.Cast <double>().Select((d, i) => new IndicatorPoint(rates[i].StartDate, d))); }
public static void CR <T>(this Rate[] rates, Func <Rate, double> sourceLambda, Action <Rate, T> destinationLambda) { Indicore.TickSourceAut source = CreateTicksData(rates, sourceLambda); Indicore.IndicatorInstanceAut instance = (Indicore.IndicatorInstanceAut)core.CreateIndicatorInstance("CR", source, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Indicore.IndicatorOutputAut output = (Indicore.IndicatorOutputAut)((Indicore.IndicatorOutputCollectionAut)instance.Output)[0]; instance.Update(true); var i = 0; output.Cast <T>().ToList().ForEach(d => destinationLambda(rates[i++], d)); }
public static IEnumerable <IndicatorPoint2> TSI_CR(Rate[] rates) { Indicore.BarSourceAut source = CreateBarsData(rates); Indicore.IndicatorInstanceAut instance1 = (Indicore.IndicatorInstanceAut)core.CreateIndicatorInstance("TSI", source, Type.Missing, 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("CR", output1, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Indicore.IndicatorOutputAut output2 = (Indicore.IndicatorOutputAut)((Indicore.IndicatorOutputCollectionAut)instance2.Output)[0]; instance1.Update(true); instance2.Update(true); return(output2.Cast <double>().Select((d, i) => new IndicatorPoint2(rates[i].StartDate, output1[i], d))); }
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])); } }