关闭半数地段。 - 页 5

 
DomGilberto:

我输入了一个挂单 "OP_BUYSTOP",但我的印象是,当触发 "OP_BUY "时,它将改变。

我以为订单类型是 "OP_BUY",如果它已经被触发了?

毕竟,我只对订单被触发后的情况感兴趣?

为什么这些大括号令人困惑?你是指左括号的位置吗?如果是这样的话,这似乎是一个单独的问题,因为我已经被纠正过多次了?

大括号是不需要的,所以它们的存在会给其他试图阅读你的代码的人(我)造成混乱。


如果你只有一个BUYSTOP,那么你的代码将不会做任何事情,因为它不是一个OP_BUY . . .

DomGilberto:
嗯,仍然不想关闭@"Close_Half_Order"?也没有得到任何错误信息?

因此,当订单仍在等待时,这是有意义的......。

你的订单有正确的魔力号码吗?

 
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Close_Half_Order Last Error = 4108
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: OrderClose error 4108
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: pending order #9 cannot be closed
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Ticker Number = 9
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
删除了"if(OrderType()==OP_BUY) " 这一行--这是测试后日记中的新打印结果?无效票...(对不起,我问了101个关于这个的问题!)
 
DomGilberto:
我删除了"if(OrderType()==OP_BUY) " 这一行- 这是测试后在日志中的新打印结果?无效票...(对不起,我问了101个关于这个的问题!)

RaptorUK:

你没有关闭一个挂单,你的错误报告告诉你什么?

2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: pending order #9 cannot be closed

你不能关闭一个挂单,它们会被删除。

 
但我不是在尝试关闭一个挂单?我是想关闭 "OP_BUY "的一半手数,这不是挂单...?我显然在这里错过了什么...
 
DomGilberto:
但我并不是要关闭一个挂单?我试图关闭 "OP_BUY "的一半手数,而这并不是挂单。我显然在这里错过了什么...
DomGilberto:

我输入了一个挂单 "OP_BUYSTOP",但我的印象是,当触发 "OP_BUY "时,它将改变。

如果你有一个OP_BUYSTOP,你的代码不做任何事情,这是好的。 当OP_BUYSTOP被触发时,它变成了OP_BUY,你的代码应该关闭它的一半的位置大小......只要它有正确的符号和魔法号码,是吗? 我想一定是这样,否则代码不会试图关闭挂单...... 那OpenOrdersThisPair(Symbol()) == 1
 
如果我"OpenOrdersThisPair(Symbol()) == 1 "从代码中 删除,日志中的信息是完全一样的......我很困惑...?
 
DomGilberto:
如果我从代码中 删除"OpenOrdersThisPair(Symbol()) == 1",日志中的信息是完全一样的......我很困惑...?

是时候增加一些Print()语句了,检查所有你还没有检查过的东西......你感到困惑是因为你不知道为什么,找出原因,你就不会再感到困惑了。

当你找到了原因,并且你有了所有这些你不想再打印到日志/专家标签的Print()语句时,请看看这个,它将允许一个很好的方法来打开和关闭它们 https://www.mql5.com/en/forum/135168/page2

 

啊,顺便说一下,你不能这样做 . . .

bool Close_Half_Order = OrderClose(OrderTicket(), half, FirstTarget_Buy, 3, CLR_NONE);

. . . 除非FirstTarget_Buy恰好==Bid 为了消除 不是这样的可能性,只需使用Bid。买入是和卖出一起结束的,卖出是以买入价执行的。

 
好的,所以如果我把 "竞价 "放在那里,这些交易就会被平仓,但不是以正确的价格平仓,而且在任何一个仓位中似乎都会平仓好几手。(更多的是在100%目标价格区域的前2/3处......并不是所有的价格都被关闭......)

我应该如何在"第一目标买入 "处平仓?
 
DomGilberto:
好的,所以如果我把 "Bid "放在那里,这些手现在被平仓了,但不是以正确的价格,而且似乎在任何一个位置上都会平掉几个半仓。(更多的是在100%目标价格区域的前2/3处......不是所有的价格,他们都在关闭......)

我应该如何在"第一目标买入 " 处平仓

你不能在买入价和卖出价之外的任何价格进行OrderClose()...就是这么简单,你不能。

你可以做什么?

开设两笔交易,每笔交易的仓位为一半,并给每笔交易设定不同的止损点。

监控买入价/卖出价,当它达到或超过"第一目标_买入"时,以买入价/卖出价关闭一半的交易。