Confira os nossos eBooks, Snippets e Fóruns produzidos para cada plataforma!
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?
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!
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;
@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.