Neo traderBot

Neo traderBot

Você sabia?

Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)

leaf leftleaf right
Notifications
Clear all

[Solucionado] Correlação de Ativos em Percentual - WINFUT e DI1FUT (Resultado incorreto para o DIFUT)

10 Posts
5 Usuários
0 Reactions
186 Visualizações
(@rogerio-aguiar-da-silva)
Membro ativo
Registrou: 2 anos atrás
Posts: 4
Iniciador do tópico  

Olá pessoal!

Por favor, alguém pode analisar meu código para ver se consigo corrigir o erro?

Criação de um indicador de correlação em percentual com dois ativos WINFUT e DI1FUT.

O código/linha para WINFUT está retornando corretíssimo, já do DI1FUT está resultando percentual nada a ver.

 

Grato!!

Const
Win = Asset("WINFUT", feedBMF);
Di = Asset("DI1FUT", feedBMF);
      
Var
Indice, Juros: Real; 
                               
Início

Indice:=((Win.Close)-CloseD(1))/CloseD(1)*100;
Juros :=((Di.Close)-CloseD(1))/CloseD(1)*100;

Plot (Indice);
Plot2(Juros);
SetPlotColor(1,ClVerdeLimão);
SetPlotColor(2,ClVermelho);

Se (Indice > Juros) então PaintBar(ClVerdeLimão);
Se (Indice < Juros) então PaintBar(ClVermelho);

Fim;

   
Citar
masker
(@masker)
Membro confiável
Registrou: 2 anos atrás
Posts: 41
 

Não testei, mas tente essa alteração de linha:

Juros :=((Di.Close - Di.Close[1]) / Di.Close[1]) * 100;

   
ReplyCitar
(@rogerio-aguiar-da-silva)
Membro ativo
Registrou: 2 anos atrás
Posts: 4
Iniciador do tópico  

@masker , Mudou o resultado mas ainda está incorreto. (Interessante é que para o índice o resultado está correto, utilizando os mesmo código. Obrigado pela atenção!


   
ReplyCitar
masker
(@masker)
Membro confiável
Registrou: 2 anos atrás
Posts: 41
 

Experimente reorganizar os parenteses nessa sequência.. se não der sinceramente não sei..  rss

Juros :=((Di.Close-CloseD(1)/CloseD(1))*100;

 

 


   
ReplyCitar
(@rogerio-aguiar-da-silva)
Membro ativo
Registrou: 2 anos atrás
Posts: 4
Iniciador do tópico  

@masker . Obrigado pela atenção. Não faz sentido, já que para o WINFUT o mesmo código funcionou perfeitamente. Abri um chamado no Suporte Tecnico da Nelógica. Estão analisando.

 

 


   
ReplyCitar
masker
(@masker)
Membro confiável
Registrou: 2 anos atrás
Posts: 41
 

Postado por: @rogerio-aguiar-da-silva

@masker . Obrigado pela atenção. Não faz sentido, já que para o WINFUT o mesmo código funcionou perfeitamente. Abri um chamado no Suporte Tecnico da Nelógica. Estão analisando.

Realmente é estranho..

Bom, espero que consiga resolver, boa sorte!

 


   
ReplyCitar
(@rogerio-aguiar-da-silva)
Membro ativo
Registrou: 2 anos atrás
Posts: 4
Iniciador do tópico  

 

/////// RESPOSTA OFICIAL DA NELÓGICA ///

 

Olá Rogerio, bom dia, tudo bem?
 
Estamos entrando em contato referente a situação envolvendo o editor de estratégias. 
 
Através das nossas analises foi possível identificar que você atualmente utiliza a funcionalidade de Assets em seu código, essa função permite buscar dados de outros ativos para a execução do código, porém esses dados são limitados a dados de série, como abertura, fechamento, máxima, mínima.
 

Const
  Win   = Asset("WINFUT",feedBMF);
  DiFut = Asset("DI1FUT",feedBMF);
Var
  Indice,Juros : Real;
Início
  Indice := ((Win.Close) - CloseD(1)) / CloseD(1) * 100;
  Juros := ((DiFut.Close) - CloseD(1)) / CloseD(1) * 100;
  //Plot (Indice);
  Plot2(Juros);
  SetPlotColor(1,ClVerdeLimão);
  SetPlotColor(2,ClVermelho);
  Se (Indice > Juros) então
    PaintBar(ClVerdeLimão);
  Se (Indice < Juros) então
    PaintBar(ClVermelho);
Fim;

 
Em Win.Close e DiFut.Close, verificamos que são utilizadas essas funções corretamente, porém ao utilizar a função CloseD(1), será buscado o fechamento do ativo em que o código está sendo executado, ou seja, esses cálculos realizados por, somente irão funcionar no ativo visualizado.
 
Primeiro exemplo, executando no ativo WING23, sua variação diária estará correta, porém a do DI1FUT será calculado com o valor de CloseD do ativo WING23 também, causando esse valor incorreto de -99,99.
 
Executando no ativo DI1FUT, somente o seu cálculo será realizado corretamente. Atualmente, não é possível utilizar a função CloseD através de Assets, então a lógica que está tentando aplicar não irá funcionar.
 
 
Seguimos a disposição.
Atenciosamente, 

Yuri B.
Nelogica Sistemas de Software

Nelogica Logo


   
ReplyCitar
(@admin)
Membro Admin
Registrou: 2 anos atrás
Posts: 216
 

Bom dia @rogerio-aguiar-da-silva!

     A implementação de estratégias baseadas em múltiplos ativos é muito limitada porque existe basicamente acesso a dados OHLCV, se a possibilidade de utilizar indicadores e a maior parte das funções NTSL para a série de dados de outros ativos.

    Aproveito para reforçar que votem nas ideias da Comunidade NeoTraderBot no UserVoice que criamos para demandar melhorias na implementação de robôs. Uma delas é refatorar as funções NTSL para poder informar a série de dados.

Link para ideias da NeoTraderBot: https://nelogica.uservoice.com/forums/939783-m%C3%B3dulos-opcionais-profit?category_id=450124&query=neotraderbot

 

Grande abs!


   
ReplyCitar
(@landosan)
Membro eminente
Registrou: 1 ano atrás
Posts: 14
 

Esse link nao funcionou para eu apoiar as ideias, mas abri o TraderVoice dentro do Profit e pesquisei NeoTrader e votei nas que eu gostei ou ja tinha sentido falta

a NTSL precisa de muita coisa pra ser considerado um bom mecanismo!


   
ReplyCitar
(@mdezan)
Novo membro
Registrou: 1 ano atrás
Posts: 2
 

eu tive o mesmo problema e descobri que não é possivel ainda acessar série de dados historicos de um ativo externo a execução do codigo.

Uma alternativa é voce criar um vetor e armazenar os dados do ativo externo, por exemplo para day trade e voce trabalhar com 21 periodos no grafico de 5 minutos voce passaria a ter dados suficientes a partir das 11:05. (eu queria plotar informações do RSI, se maior que 50 verde se menor que 50 vermelho) 
para oque eu queria fazer nao valia a pena, mas para swing trade, ou se voce trabalhar com tempos graficos menores é possivel voce resolver desta forma, até que atendam o pedido   do Johnathas... que alias facilitaria muito a vida. pois hoje recrio cada função na unha para ativos externos.


   
ReplyCitar