Neo traderBot

Neo traderBot

Você sabia?

Confira os nossos eBooks, Snippets e Fóruns produzidos para cada plataforma!

leaf leftleaf right
Notifications
Clear all

[Solucionado] Ponto de cobertura

4 Posts
2 Usuários
2 Reactions
168 Visualizações
(@alexandrecnunes)
Membro eminente
Registrou: 2 anos atrás
Posts: 16
Iniciador do tópico  

Quando estamos operando manualmente, com mais de um contrato (mini indice ou mini dolar), após abertura de posição de venda, podemos desalavancar comprando um contrato, por exemplo após 200 pontos. Logo após a desalavancagem, o profit cria um ponto de cobertura indicando uma posição de "stop" que se atingida saimos no "zero a zero". 

Operando em estrategia automatizada, como saber onde se localiza o ponto de cobertura?


   
Citar
Marcadores do tópico
(@admin)
Membro Admin
Registrou: 2 anos atrás
Posts: 216
 

Excelente pergunta, @alexandrecnunes!

Um dos problemas do Profit é o fato do Editor de Estratégias não ter caminhado junto com as funcionalidades que existem na operação manual.

Pesquisei se havia alguma função que calculasse o preço médio da posição e, infelizmente, não tem! Assim teríamos que "calcular o preço médio na unha", via código. Pela forma como o Editor funciona, minha ideia seria acompanhar mudanças no tamanho da posição e fazer os ajustes do valor médio da posição. Acho que esse código vai dar um trabalhinho...mas seria interessante de fazer!

Vou trabalhar nele e tento colocar aqui até dia amanhã.

Abs!

 

PS: Vou aproveitar também e já incluo como Snippet!


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

Olá @alexandrecnunes!

Estava um pouco apertado nesses últimos dias e não consegui fazer o código de ponto de cobertura antes.

Hoje eu estava tentando fazer e comecei tentando calcular o preço médio da posição (em backtesting), mas cheguei a conclusão que não é possível fazer isso do jeito que a NTSL é atualmente. Vou deixar o código que fiz abaixo (estava testando no ativo WDOZ22 no tempo gráfico de 1 min.

Vou te explicar porque não é possível: as funções buyPrice e sellPrice retornam apenas o preço de execução de 1 ordem. Ou seja, se houver duas ordens de compra no mesmo candle, suponha uma a mercado e outra limitada ou stop, não é mais possível calcular com precisão o preço médio da posição.

Por consequência, também não é possível calcular ponto de cobertura, pois haveria a mesma dificuldade.

Fiquei sabendo que a Nelogica vai atualizar o Editor de estratégias para ficar mais "compatível" com o Módulo de Automação de estratégias. Vamos ver se criam alguma função que retorne o preço médio da posição de forma nativa, bem como lucro/prejuízo no trade.

Confesso que também fiquei desapontado com isso!

Abs!

 

var
   posicaoAtual: integer;
   precoMedioPosicao, precoCompra, precoVenda: float;
   posicaoCompra, posicaoVenda: integer;

begin
  if date = ELDate(2022,11,17) then
  begin
    // -----------------------------------------------------------------------------
    // CALCULO DE PREÇO MÉDIO
    posicaoCompra := buyPosition;
    posicaoVenda := sellPosition;
    posicaoAtual := posicaoCompra - posicaoVenda;

    // Calculando preco medio de posicao comprada
    if (posicaoAtual > 0) and (posicaoAtual[1] <= 0) then precoMedioPosicao := precoCompra[1]
    else if (posicaoAtual > posicaoAtual[1]) and (posicaoAtual[1] > 0) then
        precoMedioPosicao := (precoMedioPosicao*posicaoAtual[1] + precoCompra[1]*(posicaoAtual-posicaoAtual[1]))/posicaoAtual
    // Calculando preco medio de posicao vendida
    else if (posicaoAtual < 0) and (posicaoAtual[1] >= 0) then precoMedioPosicao := precoVenda[1]
    else if (posicaoAtual < posicaoAtual[1]) and (posicaoAtual[1] < 0) then
        precoMedioPosicao := (precoMedioPosicao*Abs(posicaoAtual[1]) + precoVenda[1]*(Abs(posicaoAtual-posicaoAtual[1])))/Abs(posicaoAtual);
    // -----------------------------------------------------------------------------

    if (Time >= 0905) and (Time < 0911) then buyatMarket;
    if (Time >= 0911) and (Time < 0920) then sellshortAtMarket;
    if Time = 0921 then buyAtMarket(5);
    if Time = 0922 then sellShortAtMarket(10);
    if Time = 0905 then BuyStop(5527, 5530);


    // -----------------------------------------------------------------------------
    // ATUALIZA PREÇOS DE ORDENS DE COMPRA/VENDA
    precoCompra := buyPrice;
    precoVenda := sellPrice;
    if (posicaoAtual = 0) then precoMedioPosicao := 0;

  end;
end;

 

 


   
ReplyCitar
(@alexandrecnunes)
Membro eminente
Registrou: 2 anos atrás
Posts: 16
Iniciador do tópico  

@admin  Muito obrigado pela resposta.

Realmente a NeoLogica poderia disponibilizar o retorno do poonto de cobertura que é informado na plataforma durante operação manual. Acredito que eles irão aprimorar cada vez mais o modulo de automação na medida em que aumente o número de usuários.


   
ReplyCitar