Documentação

Última atualização em 14. 5. 2015 por Mark Fric

Introdução ao Scripter

Nota! A funcionalidade do scripter é experimental por enquanto, e a hierarquia de classes e seus nomes podem estar mudando!
Além disso, a documentação do Scripter e da interface do Programa está em andamento, e será estendida nas próximas semanas.

O que é Scripter

Geralmente, o Scripter oferece ao usuário do Quant Analyzer uma maneira de usar as características do programa sem usar a interface do usuário. É algo como a funcionalidade Macro no Excel.

Scripter é para usuários avançados, porque você precisará fazer alguma programação lá. O script é um simples código Java que chama várias características do programa.

Você quer fazer uma simulação Monte Carlo? Você pode fazê-lo usando Scripter, definindo todos os parâmetros e armazenando o resultado no banco de dados ou exibindo os valores chave no campo de saída.

Por que usar o Scripter

O Scriper permite a automação. Ele permite automatizar coisas que você normalmente teria que fazer na interface do usuário à mão.

Por exemplo, digamos que você queira:

  • carregar algum relatório
  • usar o que- se para criar variantes do sistema - com relatórios, onde apenas as negociações de segunda-feira são removidas, ou onde apenas as terças-feiras, as negociações são removidas, etc.
  • executar a simulação monte carlo em cada variação e obter seus resultados a um determinado nível de confiança
  • escolher a melhor simulação MC e executar simulação de gerenciamento de dinheiro com várias methds

Você pode fazer tudo isso manualmente, clicando para frente e para trás com o programa, mas se você planeja fazer este processo com freqüência, então poderia fazer sentido escrever um roteiro para ele.

Exemplo

Faremos um roteiro de amostra que carregará o relatório, exibirá seu Lucro Líquido, depois executará a simulação de Monte Carlo e exibirá o Lucro Líquido MC no nível de confiança 90%.

importação org.slf4j.Logger;
importação org.slf4j.LoggerFactory;

import com.strategyquant.lib.results.SQResultadosGrupo;
importar com.strategyquant.lib.scripter.Program;
importar com.strategyquant.lib.snippets.MonteCarloSim.ConfidenceLevelResults;
importar com.strategyquant.lib.snippets.MonteCarloSim.MonteCarloSimulationResults;
importar com.strategyquant.lib.snippets.MonteCarloSim.MonteCarloStatValores;
importar com.strategyquant.lib.utils.ExtendableStorage;
import com.strategyquant.lib.utils.SQConst;
import com.strategyquant.lib.result.SQResult;
importar com.strategyquant.lib.resultados.SQStats;
importar com.strategyquant.lib.resultados.SQStatsConst;

implementos da classe pública MonteCarloSample2 Executáveis {
logger final estático público = LoggerFactory.getLogger("MonteCarloSample");

    @Override
    execução pública nula() {
        tente {
            SQResultadosEstratégia do grupoResultados = (SQResultadosGrupo) Program.get("Loader").call("loadFile", "./tests/dados/loaders/SQ_Portfolio1.stp");

            // exibir lucro líquido original
            SQResultado resultado = estratégiaResultados.getResultado(SQConst.SYMBOL_PORTFOLIO);
            SQStats stats = resultado.getStats(SQConst.DIRECTION_ALL, SQConst.PL_IN_MONEY, SQConst.KEY_SAMPLE_ALL);
            SQStats statsPct = resultado.getStats(SQConst.DIRECTION_ALL, SQConst.PL_IN_PCT, SQConst.KEY_SAMPLE_ALL);

            System.out.println("Original NetProfit="+stats.getDouble(StatsConst.NET_PROFIT));
            System.out.println("Original PctNetProfit="+statsPct.getDouble(StatsConst.NET_PROFIT));

            // executar Monte Carlo e exibir lucro líquido no nível de confiança 90%
            ExtendableStorage settings = (ExtendableStorage) Program.get("MonteCarlo").call("getSettings", nulo);
            settings.set("NumberOfSimulations", 10);
            settings.set("Result", StrategyResults);
            settings.set("Methods.SkipTradesRandomly.Use", true);

            MonteCarloSimulationResultados de simulaçãoResultados = (MonteCarloSimulationResultados) Program.get("MonteCarlo").call("run", settings);

            System.out.println("# simulations="+simulationResults.simulationsList.size()));

            //compute os níveis de confiança
            settings = (ExtendableStorage) Program.get("MonteCarloConfidenceLevels").call("getSettings", nulo);
            settings.set("SimulationResults", simulaçãoResultados);
            settings.set("Result", estratégiaResultados);

            ConfidenceLevelResults confidenceLevelResults = (ConfidenceLevelResults) Program.get("MonteCarloConfidenceLevels").call("run", settings);
            MonteCarloStatValues mcResultado = confidenceLevelResults.get(90);

            System.out.println("MC 90% NetProfit="+mcResult.netProfit);
            System.out.println("MC 90% PctNetProfit="+mcResult.pctNetProfit);
        } catch(Exceção e) {
            e.printStackTrace();
            Log.error("Exceção :", e);
        }
    }
}

 



Este artigo foi útil? O artigo foi útil O artigo não foi útil

Assine
Notificação de
0 Comentários
Feedbacks em linha
Ver todos os comentários