Mudar o Stop Loss/Take Profit de uma única ordem executada entre outras

 

Tenho uma única posição //-- PositionsTotal=1

Esta posição é composta por três ordem que estão em execução.

CTrade myTrade;

// myTrade já foi inicializada em outro lugar

myTrade.Buy( ..., "Comentário: Ordem A"); //-- Está ordem já foi executada e faz parte da Posição x

myTrade.Buy( ..., "Comentário: Ordem B"); //-- Está ordem já foi executada e faz parte da Posição x

myTrade.Buy( ..., "Comentário: Ordem C"); //-- Está ordem já foi executada e faz parte da Posição x

// Temos uma única posição composta pelas ordem executadas A, B, C

Pergunta: Qual o código ? para alterar o Stop Loss/Take profit de uma única ordem executada, a ordem B,

mantendo inalterados os estados das ordem A e C que também foram executadas,

lembrando que as ordem A, B e C formam a única Posição x.

Obs: Revirei o manual, o google, o mql5 e a única alteração possível que encontrei foi a de ordens não executadas e de posição como um todo.

 
kuramaua brazil:


Olá.

Em modo Netting isso não é possível pois só existe uma posição que é o resultado de várias ordens sobre o ativo.  Use modo Hedding se deseja abrir posições distintas para cada ordem.

At.te. Rogério

 
kuramaua brazil:

Tenho uma única posição //-- PositionsTotal=1

Esta posição é composta por três ordem que estão em execução.

CTrade myTrade;

// myTrade já foi inicializada em outro lugar

myTrade.Buy( ..., "Comentário: Ordem A"); //-- Está ordem já foi executada e faz parte da Posição x

myTrade.Buy( ..., "Comentário: Ordem B"); //-- Está ordem já foi executada e faz parte da Posição x

myTrade.Buy( ..., "Comentário: Ordem C"); //-- Está ordem já foi executada e faz parte da Posição x

// Temos uma única posição composta pelas ordem executadas A, B, C

Pergunta: Qual o código ? para alterar o Stop Loss/Take profit de uma única ordem executada, a ordem B,

mantendo inalterados os estados das ordem A e C que também foram executadas,

lembrando que as ordem A, B e C formam a única Posição x.

Obs: Revirei o manual, o google, o mql5 e a única alteração possível que encontrei foi a de ordens não executadas e de posição como um todo.

Olá kuramaua brazil, em primeiro lugar note que quando você comenta que a posição é "composta por ordens em execução" ou que "determinada ordem faz parte da posição x" está confundindo eventos/estados independentes, pois uma ordem pode ou não abrir uma posição, e, uma vez aberta a posição, a ordem já foi executada, ou seja, a posição não tem nenhuma dependência ou relação com a ordem original, nem está mais em execução.
Seja como for, sobre a sua pergunta específica, e complementado a resposta do Rogerio Giannetti Torres, uma vez em modo hedge, você pode modificar posições individualmente, bastando para isso identificar o ticket delas.
Para isso, recomendo estudares as funções PositionGetTicket() e PositionSelectByTicket() para encontrar e selecionar o ticket, e PositionModify() na classe CTrade para modificar o S/L e/ou T/P da posição que desejar.
Sds.,
Rogério Figurelli

Razão: