if(OrdType == OP_BUY || OrdType==OP_SELL)
{//32while(IsTradeContextBusy()) Sleep(SleepTime);
RefreshRates();
if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(),RealSlippage, Yellow))
{
GLError = GetLastError();
// ? ? ? ? ? why aren't you printing the information about the OrderClose() failure ? ?Print("OrderClose failed, error# ", GLError); //<----- like this but more info
}
}//32
阅读执行错误代码,使你的代码符合其中的信息,例如 . . .
嗨,RaptorUK。
谢谢你提供的线索。
另一个问题(更多.....)。
假设在ECN经纪商上有一笔交易,根据 "交易要求和限制",如果止损在冻结距离内,市场订单不能被关闭,在这种情况下,CloseAll功能是否会关闭那些在冻结距离内的订单?
祝贺你
路易斯
嗨,RaptorUK。
谢谢你提供的线索。
另一个问题(更多.....)。
假设在ECN经纪商上有一笔交易,根据 "交易要求和限制",如果止损在冻结距离内,则不能关闭市场订单,在这种情况下,这个CloseAll功能是否会关闭那些在冻结距离内的订单?
嗨,RaptorUK。
如果可能的话,想请你在这个问题上提供一些帮助。
这段代码找到最后的OrderLots(),并将其乘以乘数因子,但有些时候它通过了这个因子,我有这样的订单;0.01,196,83,590,49,等等。
必须指出的是,我有一个开仓订单的限制,在这种情况下是5。现在,我看到这个逻辑的方式是,即使有条件打开一个超过5的订单,它也不会打开,然后池中的订单数量 被限制为5,所以,如果代码只看到池中的5个订单,这些订单的手数应该是;0.01,0.02,0.04,0.08,0.16。这段代码中是否有我不知道的问题?
(希望缩进是好的...)
最好的问候
路易斯
嗨,RaptorUK。
如果可能的话,想请你在这个问题上提供一些帮助。
这段代码找到最后的OrderLots(),并将其乘以乘数因子,但有些时候它通过了这个因子,我有这样的订单;0.01,196,83,590,49,等等。
必须指出的是,我有一个开仓订单的限制,在这种情况下是5。现在,我看到这个逻辑的方式是,即使有条件打开一个超过5的订单,它也不会打开,然后池中的订单数量被限制为5,所以,如果代码只看到池中的5个订单,这些订单的手数应该是;0.01,0.02,0.04,0.08,0.16。这段代码中是否有我不知道的问题?
(希望缩进是好的...)
我是这样做的 . .
如果OrderSelect()失败,MLots = LotSize ? 为什么?你的缩进并不能帮助你看到你的if语句和大括号发生了什么。.你是想这样做吗?
我是这样做的 . . .
.作为一个快速和肮脏的方法来避免双重比较问题,你读过这个吗?Price != Price?
我是这样做的 . .
如果OrderSelect()失败,MLots = LotSize ? 为什么?你的缩进并不能帮助你看到你的if语句和大括号发生了什么。.你是想这样做吗?
我是这样做的 . . .
......作为一种快速和肮脏的方法来避免双重比较问题,你读过这个吗?Price != Price?
嗨,RaptorUk。
谢谢你的及时回复。
所以,我想最好不要使用其他的东西,因为那是白白存在的。谢谢你提供的链接。
最好的祝福
路易斯
嗨,RaptorUK。
我有一个问题(更多.....)
有些订单在时间之前关闭,我的意思是。
这些订单一直是开放的,有一个限制,可以开放到6。所有的订单都应该通过追踪止损(TrailingStop)来关闭,但是订单1.3和5已经在时间之前关闭。3号和5号订单在其他订单之前关闭,而其他订单在(07:43)之后关闭。
因为这3个订单比其他订单先关闭,所以给了7、8、9号订单空间,这些订单以最后一手(2.43)为基础开仓。
因此,据我所知,那些在07:23不稳定的平仓订单不应该发生,也没有发现错误......
通过TrailingStop关闭这些订单的代码是这样的。
这段代码会不会在不同的时间失败并关闭订单?
致以最崇高的敬意
路易斯
通过TrailingStop关闭这些订单的代码是这个。
这段代码会不会在不同的时间失败并关闭订单?
好吧,这毫无意义 ......设置追踪止损是为了如果价格随着订单走,止损会向价格方向移动,所以如果新的止损被击中,损失会减少,甚至会有利润。在我看来,这不是一个追踪SL,这不是一个任何类型的SL,因为你是通过EA而不是SL主动关闭交易。
也许你的CloseAllOnSL()函数 所做的与我想的不同,但是,你没有注释解释你的代码试图做什么。 没有追踪SL,因为没有OrderModify()。
阅读本文:什么是函数的返回值?我如何使用它们?
在打印语句中添加更多的信息,添加OrderTicket(), OrderLots(), OrderClosePrice(), Bid, Ask, 等等,等等任何你需要的信息来确定错误发生时的问题是什么,你不可能轻易回到过去把这些都找出来,所以当它发生时要打印到日志上。
所以,据我所知,那些在07:23不稳定的平仓订单不应该发生,也没有发现错误......
阅读本文:什么是函数的返回值?我如何使用它们?
在打印语句中添加更多的信息,添加OrderTicket(), OrderLots(), OrderClosePrice(), Bid, Ask, 等等,等等任何你需要的信息来确定错误发生时的问题是什么,你不可能轻易回到过去把这些都找出来,所以当它发生时要打印到日志上。
嗨,RaptorUk。
谢谢你的时间。
追踪止损的代码在另一个部分,发送的代码只是为了关闭所有通过追踪止损关闭的订单。
尽管如此,我还是听从您的建议,寻找任何可以提供更多信息的错误,为什么订单在其他订单之前关闭。
顺便说一下,在下面的代码中,把MLots = 0;的位置从实际位置改到for循环之前是否合理?
最好的问候
路易斯