public void TestBacktesterVars() { Config config = new Config(); config.capitalInicial = 100000; TradeSystem tradeSystem = new TradeSystem(config); facade.LoadAtivo("PETR4", 100, Consts.PERIODO_ACAO.DIARIO, "dados/petr4-diario.js", backend.Consts.TIPO_CARGA_ATIVOS.GERA_CANDIDATOS); Ativo ativo = facade.GetAtivo("PETR4"); Assert.IsNotNull(ativo); Assert.IsTrue(ativo.candles.Count > 0); Candle candle = ativo.firstCandle; Periodo periodo = candle.periodo; BackTester bt = new BackTester(facade, periodo, config, tradeSystem); Carteira carteira = bt.carteira; Assert.IsNotNull(carteira); Assert.IsTrue(carteira.posicoesFechadas.Count == 0); Assert.IsTrue(carteira.posicoesAbertas.Count == 0); float riscoTotal = carteira.GetRiscoCarteiraPercent(periodo); Assert.IsTrue(riscoTotal == 0); // carteira.EfetuaEntrada(ativo, periodo, 1, 10, 9, 1); //entro com um valor fixo (direto na carteira) Posicao posicao = new Posicao(carteira, ativo, 0); carteira.posicoesAbertas.Add(ativo, posicao); int qtd = 1000; posicao.saldo += qtd; Operacao oper1 = new Operacao(carteira, candle, 10, 9, qtd, 1, null); posicao.operacoesAbertas.Add(oper1); float capitalSobRisco = ((10 - 9) * qtd); float riscoEsperado = capitalSobRisco / carteira.GetCapital() * 100; carteira.capitalLiq -= oper1.vlrEntrada * oper1.qtd; candle.SetValor(FormulaManager.CLOSE, 10); carteira.periodoAtual = periodo; carteira.AtualizaPosicao(); Assert.IsTrue(carteira.GetCapital() == 100000, carteira.GetCapital() + "<>" + 100000); Assert.IsTrue(carteira.capitalPosicao == 10000, carteira.GetCapital() + "<>" + 10000); riscoTotal = carteira.GetRiscoCarteiraPercent(periodo); Assert.IsTrue(riscoTotal == riscoEsperado, riscoTotal + "<>" + riscoEsperado); //2a operacao Operacao oper2 = new Operacao(carteira, candle, 10, 9, qtd, 1, null); posicao.operacoesAbertas.Add(oper2); posicao.saldo += qtd; carteira.AtualizaPosicao(); carteira.capitalLiq -= oper1.vlrEntrada * oper1.qtd; capitalSobRisco *= 2; riscoEsperado = capitalSobRisco / carteira.GetCapital() * 100; Assert.IsTrue(carteira.GetCapital() == 100000, carteira.GetCapital() + "<>" + 100000); Assert.IsTrue(carteira.capitalPosicao == 20000, carteira.GetCapital() + "<>" + 20000); riscoTotal = carteira.GetRiscoCarteiraPercent(periodo); Assert.IsTrue(riscoTotal == riscoEsperado, riscoTotal + "<>" + riscoEsperado); tradeSystem.vm.GetVariavel(Consts.VAR_RISCO_TRADE).vlrAtual = 2; tradeSystem.vm.GetVariavel(Consts.VAR_RISCO_GLOBAL).vlrAtual = 5; float qtdTrade = carteira.CalculaQtdTrade(100000, 10, 12, periodo); Assert.IsTrue(qtdTrade == 980, qtdTrade + "<>" + 980); }