Calculo preço Médio em Conta Netting

 

Preciso calcular o preço médio após realizar Martin Gale EX:

Conta Netting no Mini Índice

Compra 1 Lote em 119800

Compra 5 Lotes em 119600

1 x 119800 =  119800

5 x 119600 = 598000


717800  / 6  = 119633.33 Preço Médio


Na conta Demo e BT isso funciona perfeito, fiz um loop nas ordens abertas e realizei o calculo, mas ao colocar na conta real não calculou corretamente!


Queria saber se existe algum comando que já retorne direto o preço médio, procurei e não achei nada!

 
Sergio Luiz:

Preciso calcular o preço médio após realizar Martin Gale EX:

Conta Netting no Mini Índice

Compra 1 Lote em 119800

Compra 5 Lotes em 119600

1 x 119800 =  119800

5 x 119600 = 598000


717800  / 6  = 119633.33 Preço Médio


Na conta Demo e BT isso funciona perfeito, fiz um loop nas ordens abertas e realizei o calculo, mas ao colocar na conta real não calculou corretamente!


Queria saber se existe algum comando que já retorne direto o preço médio, procurei e não achei nada!

Como eh conta do tipo Netting, isso ja é feito automatico. Basta pegar o valor o que esta na posição.
 
Ricardo Rodrigues Lucca #:
Como eh conta do tipo Netting, isso ja é feito automatico. Basta pegar o valor o que esta na posição.

Fiz isso na conta demo funcionou mas na real retornou o preço da primeira ordem utilizei:

  PositionGetDouble(POSITION_PRICE_CURRENT)

 

Sergio, a conta Netting só deixa uma posição em aberta, por isso o preço médio é o preço corrente da ordem, como o Ricardo disse.

Sua conta demo deve ser hedge(pode verificar), nela você tem que calcular manualmente o PM, ou pela formula que vc citou.

Grande abraço

 
Sergio Luiz #:

Fiz isso na conta demo funcionou mas na real retornou o preço da primeira ordem utilizei:

  PositionGetDouble(POSITION_PRICE_CURRENT)

Então sua conta real eh uma conta hedging por isso que tem primeira posicao, segunda posição e etc no mesmo ativo. A conta netting so tem uma posição como Cesar confirmou acima. Voce pode estar querendo eh o médio levando em consideração suas ordens PENDENTES abertas? O procedimento que voce relatou não esta errado, pode ser erro de implementação mesmo dai que teria que mostrar o código dessa parte.
 

Realmente eu não estou conseguindo entender o que pode estar ocorrendo, tanto a conta Real como a Demo são Netting corretora XP 

E não funciona na demo fica pior ainda pois o  POSITION_PRICE_CURRENT traz o preço de abertura da primeira ordem.


Execução da Ordem de Copra

m_trade.Buy(InpLots,_Symbol,0,StopLoss,0,"Compra");


Após abrir a ordem:

AtivaTraling = m_symbol.NormalizePrice(m_symbol.Last() + InpTralig);  (utilizei o last aqui por desencargo de consciência)  


Em seguida a execução da ordem de compra:

m_trade.Buy(InpLots * InpLotesGale * Gales,_Symbol,0,StopLoss,0,"Compra");


Em seguida a execução da ordem do Gale:

AtivaTraling = PositionGetDouble(POSITION_PRICE_CURRENT) + InpTralig;


Relação das Ordens abertas conta real




Prints dos valores


POSITION_PRICE_OPEN  - Trouce o preço de abertura da primeira ordem

POSITION_PRICE_CURRENT - Trouce o Preço atual que estava na hora do Print

Ou ta tudo louco ou eu estou babando aqui!!!!

Os prints são executados logo após a execução do Gale 

A Variável NovoPrecoMedio eu estou calculando manual 

Mais um loss hoje que creio eu poderia ter sido evitado 

 
Sergio Luiz #:

Realmente eu não estou conseguindo entender o que pode estar ocorrendo, tanto a conta Real como a Demo são Netting corretora XP 

E não funciona na demo fica pior ainda pois o  POSITION_PRICE_CURRENT traz o preço de abertura da primeira ordem.


Execução da Ordem de Copra

m_trade.Buy(InpLots,_Symbol,0,StopLoss,0,"Compra");


Após abrir a ordem:

AtivaTraling = m_symbol.NormalizePrice(m_symbol.Last() + InpTralig);  (utilizei o last aqui por desencargo de consciência)  


Em seguida a execução da ordem de compra:

m_trade.Buy(InpLots * InpLotesGale * Gales,_Symbol,0,StopLoss,0,"Compra");


Em seguida a execução da ordem do Gale:

AtivaTraling = PositionGetDouble(POSITION_PRICE_CURRENT) + InpTralig;


Relação das Ordens abertas conta real




Prints dos valores


POSITION_PRICE_OPEN  - Trouce o preço de abertura da primeira ordem

POSITION_PRICE_CURRENT - Trouce o Preço atual que estava na hora do Print

Ou ta tudo louco ou eu estou babando aqui!!!!

Os prints são executados logo após a execução do Gale 

A Variável NovoPrecoMedio eu estou calculando manual 

Mais um loss hoje que creio eu poderia ter sido evitado 

Pra mim o calculo parece estar certo, deu um erro de 3 pts que na verdade nao seria nada se voce normalizar, se quiser mostra a função que fez o calculo e novamente, na segunda ordem executada o POSITION_PRICE_OPEN seria o valor do NovoPrecoMedio se realmente fosse conta netting e ele não "voltaria" para o orignal depois da saída da segunda ordem maior. Na conta hedging se fosse querer q o medio nao volte tu nao poderia tirar do calculo a posicao fechada mesmo quando ela desaparece porque ela influenciou o medio, tanto que na conta netting o medio é feito unicamente na entrada e a saída não influencia.

Se isso eh algo que te impacta porque nao troca pra conta netting? essa corretora oferece os dois tipos, basta ir na area logada achar o metatrader e clicar num iconezinho e trocar pra netting ou trocar pra hedging como quiser.