Example #1
0
        public void FinishStats(FormulaManager fm, Carteira carteira)
        {
            TradeSystem tradeSystem = carteira.tradeSystem;

            if (ERROR_STOP_0)
            {
                fitness -= PENALTY * 100;
                carteira.tradeSystem.AddError("Stop 0");
            }
            if (ERROR_VLR_STOP_ERRADO)
            {
                fitness -= PENALTY * 100;
            }
            if (ERROR_DISTANCIA_SUPERADA > 0)
            {
                fitness -= PENALTY * ERROR_DISTANCIA_SUPERADA * 100;
            }

            //O tradesystem tentou entrar em todo candle... o que é ruim...
            if (tentouEntrarTodoCandle)
            {
                fitness -= PENALTY * 10000;
                carteira.tradeSystem.AddError("Tentou entrar em todo candle (condicao entrada sempre true)");
            }

            //tentou usar um de sizing fora do range 0 a 100
            if (flagSizingForaRange)
            {
                fitness -= PENALTY * 1000;
                carteira.tradeSystem.AddError("Sizing fora do range");
            }



            if (qtdTrades == 0)
            {
                fitness -= PENALTY * 10000f;
                carteira.tradeSystem.AddError("Zero trades Gerados");
            }

            fitness += qtdTradesGanhadores * BONUS * 10f;

            if (qtdTradesGanhadores < QTD_MINIMA_TRADES / 4)
            {
                fitness -= PENALTY * 10000f;
                carteira.tradeSystem.AddWarning("Qtd. Trades Ganhadores muito baixa.");
            }

            bool viciadaCompra = carteira.config.flagCompra && ((tradeSystem.usaStopMovel && clarify.VerificaFormulaViciada(fm, tradeSystem.stopMovelC)) || clarify.VerificaFormulaViciada(fm, tradeSystem.condicaoEntradaC) || clarify.VerificaFormulaViciada(fm, tradeSystem.stopInicialC));
            bool viciadaVenda  = carteira.config.flagVenda && ((tradeSystem.usaStopMovel && clarify.VerificaFormulaViciada(fm, tradeSystem.stopMovelV)) || clarify.VerificaFormulaViciada(fm, tradeSystem.condicaoEntradaV) || clarify.VerificaFormulaViciada(fm, tradeSystem.stopInicialV));

            if (viciadaCompra || viciadaVenda)
            {
                fitness -= PENALTY * 10000f;
                carteira.tradeSystem.AddError("TradeSystem dependendo de números para gerar resultados.");
            }

            //TODO: Rever essa conta... acho que está prejudicando os que começam a dar lucro...

            /* if (global.maxCapital > carteira.capitalInicial)
             * {
             *   float difMaxCapital = (global.maxCapital - carteira.GetCapital()) * 10;
             *   fitness -= difMaxCapital;
             * }*/

            //Conta a variedade nas ações ganhadoras: acerta 2 ações é melhor que 1 ação
            fitness += CalcBonusVariedade(carteira);



            float difCapital = carteira.GetCapital() - carteira.capitalInicial;

            fitness += BONUS * difCapital / 1000;
            if (difCapital <= 0)
            {
                fitness -= PENALTY * 100;
            }

            fitness += VerificaNumerosFormula(carteira);


            int difTrades = QTD_MINIMA_TRADES - qtdTrades;

            if (difTrades > 0)
            {
                fitness -= PENALTY * difTrades * 1000;
                carteira.tradeSystem.AddWarning("Não atingiu a quantidade mínima de trades.");
            }
            else if (difCapital > 0)
            {
                fitness += percAcerto * BONUS * 100;
            }

            /*//só dou bonus de acerto para os que estiverem acima do objetivo de qtd minima de trades
             * if (difTrades == 0)
             * {
             *  FitnessQtdAcoes();
             *  FitnessPercUsoCapital();
             *  fitness += BONUS * percAcerto / 10;
             *  float avgDias = global.getGeral().getAmbasPontas().getTodosTrades().getAvgDias();
             *  //bonus até 50 dias...
             *  if (avgDias < AVG_DIAS_GOAL)
             *  {
             *      fitness += BONUS;
             *  }
             * }
             */



            fitness /= 1000;
        }
Example #2
0
        private void ValidaClarifyViciado(Clarify clarify, string formula, bool esperado)
        {
            FormulaManager fm = facade.formulaManager;

            Assert.IsTrue(clarify.VerificaFormulaViciada(fm, formula) == esperado, "Formula '" + formula + "' retornou diferente de " + esperado);
        }