[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 464

 
sss2019:
你能告诉我哪个函数应该关闭一半的订单,OrderClose()还是OrderCloseBy()?

如果有一个未平仓的订单,并且只有一部分需要平仓,那么使用OrderClose()就可以了,并指定要平仓的数量。
 
sss2019:
你能告诉我哪个函数应该关闭一半的订单,OrderClose()还是OrderCloseBy()?

关闭了一半的订单量。

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

关闭一半的订单量。


在OrderClose()之前的OrderSelect() 是不需要的。
 
PapaYozh:

在OrderClose()之前的OrderSelect()是不需要的。
是必须的,因为它使用了OrderLots
 
ilunga:
是必须的,因为它使用OrderLots


在这种情况下。

- 首先,我们必须检查OrderSelect() 返回的结果。

- 其次,我们需要密切关注在分割过程中获得的体积,否则可能根本就无法关闭。

 

PapaYozh, MaxZ 手数是0.1,在30的计算中(ClosingPercent = 30)百分比应该是0.03,但在用这个手数平仓时发生错误131

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

PapaYozh, MaxZ 手数是0.1,在30的计算中(ClosingPercent = 30)百分比应该是0.03,但在用这个手数平仓时发生错误131。


为什么要把音量归一到3位数?
 
sss2019:

PapaYozh, MaxZ 这是0.1手,当计算30(ClosingPercent = 30)百分比时,应该是0.03,但在用这个手数收盘时发生错误131。

1)为什么要归一化到3位数?

2)可能最小的地段是0.1,那么更小的地段原则上是不能用的。

 
PapaYozh:

为什么要把音量归一到3位数?

那么,如果手数是0.10,你就不能关闭30%。但是,我试着用1个手数将其规范化为2个数字,仍然是同样的错误。
 
sss2019:

那么,如果手数是0.10,那么你已经不能关闭30%。但我试着用lot 1将其规范化为2位数,仍然是同样的错误。

数字不是作为一个整体来计算的,而是在小数点之后。

例如,将数字 10.044425规范化 为2位数,将产生数字10.04。


是的,在使用OrderLots之前,你的订单选择在哪里?