Documentação

Última atualização em 25. 6. 2015 por Mark Fric

Adicionar nova coluna Monte Carlo

Um exemplo de como agregar novo valor no método Monte Carlo.

De que se trata a tarefa?

Por padrão, quando você executa a simulação Monte Carlo, você obterá resultados de simulação para determinados níveis de confiança.
A simulação MC calcula os resultados calculados como lucro líquido, lucro líquido %, retorno / DD etc. para um determinado nível de confiança.

O usuário no fórum solicitou o cálculo de um novo valor personalizado - número de negócios perdidos consecutivos.

Como muitas outras coisas, os valores (colunas ) no relatório Monte Carlo são computados usando trechos, portanto é possível estendê-los e adicionar seus próprios valores.

Neste artigo mostraremos como adicionar novo valor MC que calcula o número de negócios perdidos consecutivamente para todos os níveis de confiança de Monte Carlo.

Passo 1 - Criar novo snippet de valor Monte Carlo

Como todos os outros trechos, os trechos de Monte Carlo são editáveis no QuantEditor, por isso vamos iniciá-lo:

Agora vamos criar um novo snippet que irá computar nossas ordens de perda consecutiva:

Isto criará um esqueleto de um fragmento que podemos estender para fazer o que quisermos. Passaremos pelas funções do trecho um a um.

No construtor, temos que definir o nome da coluna e o pedido. Se os melhores valores são os mais altos, então devemos ajustá-lo para MAXIMIZAR.
Em nosso caso, os melhores valores são os mais baixos (o menor número possível de negócios perdidos consecutivos), por isso vamos definir a ordem para MINIMIZAR.

Isto é importante para que o programa saiba como ordenar os resultados quando serão computados os resultados para cada nível de confiança.

encomendas públicas ConsecutiveLosingOrders() {
   super("ConsecutiveLosingOrders", FitnessFunction.MINIMIZE);

 


setColumnName(L.t("Consecutive Losing Orders"));
setColumnWidth(100);
setTooltip(L.t("Ordens de Perda Consecutiva"));
}
método compute() é o coração de nosso snippet, ele contém o código que faz o cálculo real da perda máxima de ordens consecutivas.
O algoritmo para calcular isto é bastante simples, ele simplesmente passa pelo conjunto de ordens e se lembra da maior série de perda de ordens.

cálculo protegido duplo (MonteCarloStatValues statValues, duplo capital inicial, duplo [] ordens, duplo avgTradesPerMonth) lança Exceção {
   int maxConsecLosingOrders = 0;
   int consecLosingOrders = 0;

for(int i=0; i<order.length; i++) {
if(ordena[i] > 0) {
// está ganhando ordem, zere o contador
ConsecLosingOrders = 0;
{} else {
// está perdendo a ordem
ConsecLosingOrders++;

if(consecLosingOrders > maxConsecLosingOrders) {
maxConsecLosingOrders = ConsecLosingOrders;
}
}
}

retornar maxConsecLosingOrders;
}

E a última função é para formar o valor computado

formato público StringValue(valor duplo) {
   retornar String.valueOf((int) value);
}

É tudo, podemos atingir o Compilação e nosso novo snippet deve ser compilado sem nenhum erro.

Passo 2 - agregar nosso novo valor à visão

Se olharmos a mesa de Monte Carlo no Quant Analyzer, veremos que nossa nova coluna ainda não está visível lá. É porque as colunas visíveis são gerenciadas em Views.

Temos que clicar em Configurar vista link no canto superior direito da tabela para adicionar uma nova coluna à vista:

Aqui temos que adicionar a coluna de Ordens de Perda Consecutiva à lista de colunas exibidas à direita.

Uma vez feito isso, podemos ver que nossa tabela de resultados de Monte Carlo agora contém também a coluna de pedidos perdidos consecutivos com valores computados:

Isto é tudo o que foi necessário para agregar novo valor aos resultados de Monte Carlo.

Você pode ver que foi simples, o único verdadeiro desafio é implementar corretamente o compute() funcionar de forma a computar o que você quer.

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