public void TestCarteira() { Config config = new Config(); TradeSystem tradeSystem = new TradeSystem(config); MonteCarlo mc = new MonteCarlo("Teste"); float valorInicial = 100000; Carteira carteira = new Carteira(facade, 100000, config, tradeSystem, mc); config.custoOperacao = 20f; Assert.IsTrue(carteira.capitalInicial == valorInicial); Assert.IsTrue(carteira.capitalLiq == valorInicial); Ativo ativoInex = new Ativo(facade, "ERR", 100); Ativo ativo = new Ativo(facade, "PETR4", 100); Periodo periodo1 = new Periodo("2015-06-05 00:00"); Periodo periodo2 = new Periodo("2015-06-06 00:00"); float closeInicial = 3; float closeFinal = 2.7f; Candle candleInicial = new Candle(periodo1, ativo, closeInicial * 0.9f, closeInicial, closeInicial * 1.2f, closeInicial * 0.9f, 1000); Candle candleFinal = new Candle(periodo2, ativo, closeFinal * 0.9f, closeFinal, closeFinal * 1.2f, closeFinal * 0.8f, 1000); ativo.AddCandle(candleInicial); ativo.AddCandle(candleFinal); Assert.IsTrue(carteira.capitalLiq == valorInicial); carteira.EfetuaEntrada(ativo, periodo1, 1, closeInicial, closeInicial * 0.8f, 1); Assert.IsTrue(carteira.capitalLiq < valorInicial, carteira.capitalLiq + ">=" + valorInicial); Posicao posicao = carteira.GetPosicaoDoAtivo(ativo); Assert.IsNotNull(posicao); Assert.IsTrue(posicao.ativo == ativo); Assert.IsTrue(posicao.operacoesAbertas.Count == 1); Operacao oper = posicao.operacoesAbertas[0]; Assert.IsTrue(oper.qtd > 0); Assert.IsTrue(carteira.capitalLiq + oper.qtd * oper.vlrEntrada + config.custoOperacao == valorInicial); carteira.periodoAtual = periodo1; carteira.AtualizaPosicao(); Assert.IsTrue(carteira.capitalLiq + carteira.capitalPosicao == valorInicial - config.custoOperacao, "Posicao: " + carteira.capitalPosicao); carteira.periodoAtual = periodo2; carteira.AtualizaPosicao(); Assert.IsTrue(carteira.capitalPosicao == 0, "vlr posicao:" + carteira.capitalPosicao); // cartAssert.IsTrue(oper.qtd>0);eira. /* int qtdAcoesOrdem = 350; int qtdAcoesEsperado = 300; * carteira.EfetuaCompra(candleInicial, qtdAcoesOrdem); * float capitalEsperado = valorInicial - config.custoOperacao - qtdAcoesEsperado * closeInicial; * Assert.IsTrue(carteira.capitalLiq == capitalEsperado, "Capital atual:" + carteira.capitalLiq + " <> " + capitalEsperado); * * Posicao posicao = carteira.GetPosicaoDoAtivo(ativo); * Assert.IsNotNull(posicao); * Assert.IsTrue(posicao.saldo == qtdAcoesEsperado); * * carteira.EfetuaCompra(candleInicial, qtdAcoesOrdem); * capitalEsperado = valorInicial - 2 * (config.custoOperacao + qtdAcoesEsperado * closeInicial); * Assert.IsTrue(carteira.capitalLiq == capitalEsperado, "Capital atual:" + carteira.capitalLiq + " <> " + capitalEsperado); * Assert.IsTrue(posicao.saldo == qtdAcoesEsperado * 2); * * int maxQtd = (int)(capitalEsperado / closeInicial); * maxQtd -= maxQtd % ativo.loteMin; * carteira.EfetuaCompra(candleInicial, maxQtd * 2); * qtdAcoesEsperado = qtdAcoesEsperado * 2 + maxQtd; * Assert.IsTrue(posicao.saldo == qtdAcoesEsperado); * capitalEsperado -= maxQtd * closeInicial + config.custoOperacao; * Assert.IsTrue(carteira.capitalLiq == capitalEsperado, "Capital atual:" + carteira.capitalLiq + " <> " + capitalEsperado); * * //Venda * carteira.EfetuaVenda(candleFinal, 150); * capitalEsperado = capitalEsperado + closeFinal * 100 - config.custoOperacao; * Assert.IsTrue(carteira.capitalLiq == capitalEsperado, "Capital atual:" + carteira.capitalLiq + " <> " + capitalEsperado); * qtdAcoesEsperado -= 100; * Assert.IsTrue(posicao.saldo == qtdAcoesEsperado); * * * carteira.EfetuaVenda(candleFinal, qtdAcoesEsperado * 100); * capitalEsperado = capitalEsperado + qtdAcoesEsperado * closeFinal - config.custoOperacao; * Assert.IsTrue(carteira.capitalLiq == capitalEsperado, "Capital atual:" + carteira.capitalLiq + " <> " + capitalEsperado); * Assert.IsTrue(posicao.saldo == 0);*/ }