Exemple #1
0
        public override void HandleNextTick(Tick t)
        {
            double emaVal = EMA.HandleNextTick(t);

            LRValues.Enqueue(emaVal);

            double[] Y = LRValues.ToArray();

            double stdErr = 0;

            if (Y.Count() == X.Length)
            {
                Vector x_data = new Vector(X);
                Vector y_data = new Vector(LRValues.ToArray());

                var poly = new PolynomialRegression(x_data, y_data, 2);
                for (int i = 0; i < Period; i++)
                {
                    double x = (i);
                    double y = poly.Fit(x);
                    stdErr += Math.Pow(LRValues.ToArray()[i] - y, 2);
                }

                stdErr = Math.Sqrt(stdErr);
            }

            HighData.Enqueue(EMA[0] + STDEV * stdErr);
            MiddleData.Enqueue(EMA[0]);
            LowData.Enqueue(EMA[0] - STDEV * stdErr);
        }
Exemple #2
0
        public override void HandleNextTick(Tick t)
        {
            MiddleData.Enqueue(MIDDLE.HandleNextTick(t));
            var stdev = MIDDLE.ToArray().StandardDeviation();

            HighData.Enqueue(MIDDLE[0] + stdev * 2);
            LowData.Enqueue(MIDDLE[0] - stdev * 2);
        }
Exemple #3
0
        public override void HandleNextTick(Tick t)
        {
            double emaVal = EMA.HandleNextTick(t);

            LRValues.Enqueue(emaVal);

            double[] Y = LRValues.ToArray();

            LinearRegression l = new LinearRegression();

            l.Model(Y);

            HighData.Enqueue(EMA[0] + STDEV * l.STDERR);
            MiddleData.Enqueue(EMA[0]);
            LowData.Enqueue(EMA[0] - STDEV * l.STDERR);
        }
Exemple #4
0
        IEnumerable <float> CalcPatternsCore(string methodName)
        {
            using (Py.GIL()) {
                dynamic np = Py.Import("numpy");
                dynamic ta = Py.Import("talib._ta_lib");

                dynamic npopen  = np.array(OpenData.Select(x => (float)x).ToList());
                dynamic npclose = np.array(CloseData.Select(x => (float)x).ToList());
                dynamic nphigh  = np.array(HighData.Select(x => (float)x).ToList());
                dynamic nplow   = np.array(LowData.Select(x => (float)x).ToList());

                IEnumerable <float> result = ta.CDL3OUTSIDE(npopen, nphigh, nplow, npclose).AsManagedObject(typeof(float[]));
                var val = result.FirstOrDefault(x => x != 0);
                return(result);
            }
        }
Exemple #5
0
 public double HI(int index)
 {
     return((HighData.Count > index) ? HighData.ToArray()[HighData.Count - index - 1] : double.NaN);
 }