コード例 #1
0
        public void BackTestePeriodo(ICaller caller, MonteCarlo mc, ref Periodo periodo, ref string mesA, int[] rd)
        {
            caller.SimpleUpdate();
            //System.out.println("Periodo:"+periodo.getPeriodo());
            carteira.EndTurn(periodo, !mesA.Equals(periodo.GetMes()));
            mc.AnalizaPeriodo(carteira);
            if (!mesA.Equals(periodo.GetMes()))
            {
                mesA = periodo.GetMes() + "";
            }

            for (int i = 0; i < rd.Length; i++)
            {
                Ativo  ativo  = ativos[rd[i]];
                Candle candle = ativo.GetCandle(periodo);

                if (candle != null)
                {
                    BackTestCandle(periodo, ativo, candle);
                }
            }

            periodo = periodo.proximoPeriodo;
        }
コード例 #2
0
        /*
         * Método principal que vai verificar as condições e fazer entradas (um integrador por assim dizer)
         */
        public Carteira runSingleBackTest(ICaller caller, MonteCarlo mc)
        {
            Init(mc);
            Periodo periodo = periodoInicial;
            string  mesA    = "";

            //int[] rd = GetRandomOrder(config.qtdPercPapeis);
            int[] rd = GetRandomOrder(80);
            while (periodo.proximoPeriodo != null)
            {
                BackTestePeriodo(caller, mc, ref periodo, ref mesA, rd);
            }
            carteira.FechaPosicoes(periodo);
            carteira.EndTurn(periodo, !mesA.Equals(periodo.GetMes()));
            Utils.println("Saldo final:" + carteira.GetCapital());
            carteira.PrintEstatistica();
            return(carteira);
        }