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; }
/* * 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); }