Пример #1
0
 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)));
 }
Пример #2
0
 private static Indicore.TickSourceAut CreateTicksData(IList <Rate> rates, Func <Rate, double> price)
 {
     Indicore.TickSourceAut ticks = (Indicore.TickSourceAut)core.CreateTickSource("XXX", .01);
     foreach (var r in rates)
     {
         ticks.AddLast(r.StartDate, price(r));
     }
     return(ticks);
 }
Пример #3
0
        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));
        }
Пример #4
0
        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]));
            }
        }