[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 464

 
sss2019:
Você pode me dizer qual função deve fechar metade do pedido, OrderClose() ou OrderCloseBy()?

Se houver uma ordem aberta e apenas parte dela precisar ser fechada, é suficiente usar OrderClose() com a especificação do volume a ser fechado.
 
sss2019:
Você pode me dizer qual função deve fechar metade do pedido, OrderClose() ou OrderCloseBy()?

Fechando metade do volume do pedido:

   int Ticket = ...
   OrderSelect(Ticket, SELECT_BY_TICKET);
   OrderClose(Ticket, NormalizeDouble(OrderLots()/2), Ask /*или Bid*/, Slippage);
 
MaxZ:

Fechar metade do volume do pedido:


OrderSelect( ) antes OrderClose() não é necessário.
 
PapaYozh:

OrderSelect() antes OrderClose() não é necessário.
é necessário porque utiliza OrderLots
 
ilunga:
é necessário, pois utiliza OrderLots


Nesse caso:

- primeiro, temos que verificar o resultado devolvido pela OrderSelect();

- Em segundo lugar, precisamos ficar de olho no volume obtido no processo de divisão, caso contrário, ele pode não fechar de forma alguma.

 

PapaYozh, MaxZ O lote é 0,1, ao calcular 30 ( FechamentoPercentual = 30) porcentagens deve ser 0,03, mas o erro 131 ocorre ao fechar com este lote.

           ClosingLot = OrderLots() / 100 * ClosingPercent;
           ClosingLot = NormalizeDouble(ClosingLot,3);
           OrderClose(OrderTicket(),ClosingLot,Ask,Slippage,Green);
 
sss2019:

PapaYozh, MaxZ O lote é 0,1, no cálculo de 30 ( FechamentoPercentual = 30) porcentagens deve ser de 0,03, mas o erro 131 ocorre ao fechar com este lote.


Por que você normaliza o volume para 3 dígitos?
 
sss2019:

PapaYozh, MaxZ É 0,1 lote, ao calcular 30 ( FechamentoPercentual = 30) por cento deve ser 0,03, mas o erro 131 ocorre ao fechar com este lote

1) por que normalizar para 3 dígitos?

2) provavelmente o lote mínimo é 0,1 e então um lote menor está, em princípio, indisponível.

 
PapaYozh:

Por que você normaliza o volume para 3 dígitos?

Bem, se o lote for 0,10, não se pode fechar 30%. Mas tentei normalizar para 2 dígitos com 1 lote e ainda assim o mesmo erro.
 
sss2019:

Bem, se o lote for 0,10 então você não pode fechar 30% já. Mas eu tentei normalizar para 2 dígitos com o lote 1 e ainda assim o mesmo erro.

os dígitos não são contados como um todo, mas após o ponto decimal.

ou seja, a normalização do número 10.044425 para 2 dígitos resultará no número 10.04


Sim, e onde está sua seleção de pedidos antes de usar OrderLots?