コード例 #1
0
        public TradeSystem(Config config)
        {
            mensagens    = new List <string>();
            vm           = new VariavelManager();
            stopInicialC = "SUBTRACT(L,MULTIPLY(" + FormulaManager.STDDEV + "(C,10),2))";
            stopInicialV = "SUM(H,MULTIPLY(" + FormulaManager.STDDEV + "(C,10),2))";//"HV(H,6)";
            stopMovelC   = stopInicialC;
            stopMovelV   = stopInicialV;
            GetVariavel(Consts.VAR_STOP_GAP, "Usado para dar algum espaçamento entre a formula e o valor realmente usado", 0, 5, 20); //Usado para dar algum espaçamento entre a formula e o valor realmente usado
            GetVariavel(Consts.VAR_RISCO_TRADE, "Valor percentual máximo que um trade pode ter de risco", 0, 5, 20);
            GetVariavel(Consts.VAR_RISCO_GLOBAL, "Valor percentual máximo que pode ficar exposto", 0, 5, 20);
            GetVariavel(Consts.VAR_STOP_MENSAL, "Valor percentual que caso atingido implica em paralisar as operações para aquele mês", 0f, 5, 30);
            GetVariavel(Consts.VAR_MAX_CAPITAL_TRADE, "Valor absoluto máximo que um trade pode ter", 10000f, 5, 100000);
            GetVariavel(Consts.VAR_PERC_TRADE, "informa quanto do capital eu posso ter por ativo", 10, 5, 100);
            GetVariavel(Consts.VAR_USA_STOP_MOVEL, "Usa stop movel? 0=nao, 1=sim", 0, 1, 1);
            GetVariavel(Consts.VAR_MULTIPLAS_ENTRADAS, "A posição pode ter mais de uma entrada(operacao)? 0=nao, 1=sim", 0, 1, 1);
            GetVariavel(Consts.VAR_MULTIPLAS_SAIDAS, "A posição pode ter mais de uma saida(operacao)? 0=nao, 1=sim", 0, 5, 20);

            /*  condicaoEntradaC = new CondicaoComplexa();
             * condicaoEntradaV = new CondicaoComplexa();
             * condicaoSaidaC = new CondicaoComplexa();
             * condicaoSaidaV = new CondicaoComplexa();*/

            string entrada = "GREATER(MME(C,9),MME(C,6))";
            string saida   = "LOWER(MME(C,9),MME(C,6))";

            /*condicaoEntradaC.ChangeCondicao(entrada);
             * condicaoSaidaC.ChangeCondicao(saida);
             * condicaoEntradaV.ChangeCondicao(saida);
             * condicaoSaidaV.ChangeCondicao(entrada);*/
            condicaoEntradaC = entrada;
            condicaoSaidaC   = saida;
            condicaoEntradaV = saida;
            condicaoSaidaV   = entrada;

            //target de saida
            targetSaida = "-1";
        }
コード例 #2
0
ファイル: Testes.cs プロジェクト: cristianoferr/BackTester
        public void TestVariaveis()
        {
            Config          config      = new Config();
            TradeSystem     tradeSystem = new TradeSystem(config);
            VariavelManager vm          = tradeSystem.vm;
            string          na          = "VAR1";
            string          nb          = "NOME_QUALQUER";
            Variavel        va          = vm.GetVariavel(na, "", 1, 2, 3);
            Variavel        vb          = vm.GetVariavel(nb, "", 10, 3, 30);

            string text = "%" + na + "%>%" + nb + "%";

            Assert.IsTrue(vm.ReplaceVariavel(text) == "1>10", "Erro: " + vm.ReplaceVariavel(text));
            va.next();
            vb.next();
            float vna = va.vlrAtual;
            float vnb = vb.vlrAtual;

            Assert.IsTrue(vm.ReplaceVariavel(text) == vna + ">" + vnb, "Erro: " + vm.ReplaceVariavel(text));

            text = "%" + na + "%%" + nb + "%";
            Assert.IsTrue(vm.ReplaceVariavel(text) == vna + "" + vnb, "Erro: " + vm.ReplaceVariavel(text));
        }