示例#1
0
        public override float Calc(Candle candle)
        {
            Candle c = candle;
            Candle candleAnterior = candle.candleAnterior;

            if (candleAnterior == null)
            {
                return(0);
            }
            float vPer = per.Calc(candle);

            vPer = LimitPeriodo(vPer);
            string m1 = FormulaManager.MME + "(" + campo.GetCode() + "," + vPer + ")";
            string m2 = FormulaManager.MME + "(" + m1 + "," + vPer + ")";
            string m3 = FormulaManager.MME + "(" + m2 + "," + vPer + ")";

            float vAtual    = candle.GetValor(m3);
            float vAnterior = candleAnterior.GetValor(m3);

            if (vAnterior == 0)
            {
                return(0);
            }

            return(vAtual / vAnterior);
        }
示例#2
0
        public override float Calc(Candle candle)
        {
            Candle cp  = candle;
            float  avg = candle.GetValor(facade.formulaManager.GetFormula(FormulaManager.MMS, campo.GetCode() + "," + per));

            float soma = 0;
            float vPer = per.Calc(candle);

            vPer = LimitPeriodo(vPer);
            if (vPer == 0)
            {
                return(0);
            }
            for (int i = 0; i < vPer; i++)
            {
                //System.out.println(candle.getPeriodo()+" "+cp.getValor(FormulaManager.close));
                float dif = cp.GetValor(campo) - avg;
                dif   = dif * dif;
                soma += dif;
                cp    = cp.candleAnterior;
                if (cp == null)
                {
                    return(0);
                }
            }
            soma = soma / vPer;


            return((float)Math.Sqrt(soma));
        }
示例#3
0
        public override float Calc(Candle candle)
        {
            Candle c = candle;

            float  v    = candle.GetValor(campo);
            Candle cp   = c;
            float  vPer = per.Calc(candle);

            vPer = LimitPeriodo(vPer);
            for (int i = 0; i < vPer; i++)
            {
                float x = cp.GetValor(campo);
                if (x < v)
                {
                    v = x;
                }
                cp = cp.candleAnterior;
                if (cp == null)
                {
                    return(v);
                }
            }

            return(v);
        }
        public override float Calc(Candle candle)
        {
            Candle cp = candle;

            float soma = 0;
            float vPer = per.Calc(candle);

            vPer = LimitPeriodo(vPer);
            float vlrFinal = cp.GetValor(campo);

            if (vPer == 0)
            {
                return(0);
            }
            for (int i = 0; i < vPer; i++)
            {
                cp = cp.candleAnterior;
                if (cp == null)
                {
                    return(0);
                }
            }
            float vlrInicial = cp.GetValor(campo);


            return((vlrFinal / vlrInicial - 1) * 100);
        }
示例#5
0
        public float GetFirstRSI(Candle candle)
        {
            Candle cp   = candle;
            float  ag   = 0;
            float  vPer = per.Calc(candle);

            vPer = LimitPeriodo(vPer);
            if (cp == cp.candleAnterior)
            {
                return(0);
            }
            for (int i = 0; i < vPer; i++)
            {
                if (cp.candleAnterior == null)
                {
                    return(0);
                }
                float dif = cp.GetValor(campo) - cp.candleAnterior.GetValor(campo);
                if (dif > 0)
                {
                    ag += dif;
                }
                if (cp.candleAnterior == null || cp == cp.candleAnterior)
                {
                    return(0);
                }
                cp = cp.candleAnterior;
            }
            float rs = 0;

            //1o candle após "per" periodos
            if (cp.candleAnterior == null)
            {
                ag = ag / vPer;
                rs = ag;
            }
            else
            {
                ag = candle.GetValor(campo) - candle.candleAnterior.GetValor(campo);
                if (ag < 0)
                {
                    ag = 0;
                }
                ag = Math.Abs(ag);
                rs = candle.candleAnterior.GetValor(facade.formulaManager.GetFormula(GetCode())) * (vPer - 1) + ag;
                rs = rs / vPer;
            }


            return(rs);
        }
示例#6
0
        public override float Calc(Candle candle)
        {
            float vPer = per.Calc(candle);

            vPer = LimitPeriodo(vPer);
            float v      = 0;
            float avg    = candle.GetValor(facade.formulaManager.GetFormula(FormulaManager.MMS, campo.GetCode() + "," + vPer));
            float stdDev = candle.GetValor(facade.formulaManager.GetFormula(FormulaManager.STDDEV, campo.GetCode() + "," + vPer));

            if (banda == "U")
            {
                v = avg + desvio.Calc(candle) * stdDev;
            }
            if (banda == "M")
            {
                v = avg;
            }
            if (banda == "L")
            {
                v = avg - desvio.Calc(candle) * stdDev;
            }

            return(v);
        }
示例#7
0
        public override float Calc(Candle candle)
        {
            Candle c = candle;

            float vPer = per.Calc(candle);

            vPer = LimitPeriodo(vPer);
            for (int i = 0; i < vPer; i++)
            {
                if (c.candleAnterior != null)
                {
                    c = c.candleAnterior;
                }
            }
            return(c.GetValor(campo));
        }