Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
 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)));
 }
Exemplo n.º 3
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)));
 }
Exemplo n.º 4
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));
        }
Exemplo n.º 5
0
 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)));
 }
Exemplo n.º 6
0
 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++; });
     }
 }
Exemplo n.º 7
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]));
            }
        }