コード例 #1
0
        public double[] getPrediction(long timestamp)
        {
            if (indicator.isValid(timestamp) == false)
            {
                return new double[] { double.NaN, double.NaN, double.NaN, double.NaN, double.NaN }
            }
            ;
            else
            {
                double buyRatio = double.NaN, sellRatio = double.NaN, max = double.NaN, min = double.NaN, actual = double.NaN;

                //Search in outcomeCodeSamplingTable
                double v = indicator.getIndicator();
                for (int i = 0; i < outcomeCodeSamplingTable.Length; i++)
                {
                    bool lastElement = i == outcomeCodeSamplingTable.Length - 1;
                    if (lastElement ||
                        (outcomeCodeSamplingTable[i + 1][(int)SampleValuesOutcomeCodesIndices.Start] > v && outcomeCodeSamplingTable[i][(int)SampleValuesOutcomeCodesIndices.Start] <= v))
                    {
                        buyRatio  = outcomeCodeSamplingTable[i][(int)SampleValuesOutcomeCodesIndices.BuyRatio];
                        sellRatio = outcomeCodeSamplingTable[i][(int)SampleValuesOutcomeCodesIndices.SellRatio];
                        break;
                    }
                }

                //Search in outcomeSamplingTable
                for (int i = 0; i < outcomeSamplingTable.Length; i++)
                {
                    bool lastElement = i == outcomeSamplingTable.Length - 1;
                    if (lastElement ||
                        (outcomeSamplingTable[i + 1][(int)SampleValuesOutcomeIndices.Start] > v && outcomeSamplingTable[i][(int)SampleValuesOutcomeIndices.Start] <= v))
                    {
                        min    = outcomeSamplingTable[i][(int)SampleValuesOutcomeIndices.MinAvg];
                        max    = outcomeSamplingTable[i][(int)SampleValuesOutcomeIndices.MaxAvg];
                        actual = outcomeSamplingTable[i][(int)SampleValuesOutcomeIndices.ActualAvg];
                        break;
                    }
                }

                return(new double[] { buyRatio, sellRatio, min, max, actual });
            }
        }
コード例 #2
0
        public static double[] getIndicatorValues(double[][] priceData, WalkerIndicator indicator, out double indicatorValidRatio)
        {
            indicatorValidRatio = 0;
            double[] output = new double[priceData.Length];

            for (int i = 0; i < priceData.Length; i++)
            {
                long   timestamp = Convert.ToInt64(priceData[i][(int)PriceDataIndeces.Date]);
                double mid       = (priceData[i][(int)PriceDataIndeces.Ask] + priceData[i][(int)PriceDataIndeces.Bid]) / 2d;
                double value     = indicator.setNextDataAndGetIndicator(timestamp, mid);

                if (double.IsNaN(value) == false && double.IsInfinity(value) == false && indicator.isValid(timestamp))
                {
                    output[i] = value;
                    indicatorValidRatio++;
                }
                else
                {
                    output[i] = double.NaN;
                }
            }

            indicatorValidRatio /= output.Length;

            return(output);
        }