任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 842

 

OrderClose(OrderTicket(),0.01,Bid,2)。

在 "专家 "中,它说 "OrderClose函数 的无效票"。

我的目标是在当前的图表上关闭订单。

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2)。

在 "专家 "中,它说 "OrderClose函数的无效票"。

我的目标是在当前的图表上关闭订单。

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}
 
我需要真正关闭订单,如果可以的话?为什么orderticket在我写的那行程序中不起作用?
 
Pokrov:

晚上好!请帮助我理解下面的代码,卖出是按照同样的原则写的,为什么有三个选项要打开,因为我不得不摆弄一下选项,以避免当时打开一个订单--当订单在当前条上打开,在没有平仓的情况下关闭。

而信号仍然存在并再次打开,所以我不得不这样写。问题是,只有一个买入和卖出订单被打开,其他都是沉默。我找不到任何进一步的错误。 我事先非常感谢。

你如何理解这句话?

if (!OrdersTotal()==true)

我不知道这句话和这句话该怎么读。

if (!OrdersHistoryTotal()==true)

和这个...

if(OrderSelect(ticket,SELECT_BY_TICKET)>0 // дальше я не смотрел

虽然这最后一句话会起作用,但它不是这样写的......。我很无语。

好吧,如果你找不到错误,那么可能就没有错误了...

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2)。

在 "专家 "中,它说 "OrderClose函数的无效票"。

我的目标是在当前的图表上关闭订单。

因为在处理订单之前,我需要用OrderSelect()函数 选择它。
 
AlexeyVik:

这句话的含义是什么?

和这个。

而这个人...

虽然这最后一句话会起作用,但这不是写作的方式......。我很无语。

好吧,如果你没有发现错误,那么可能就没有错误...

1.如果没有未结订单

2.如果没有关闭的订单。

有什么问题吗?

 
Pokrov:

1.如果没有未结订单

2.如果没有关闭的订单。

有什么问题吗?

int OrdersTotal(); - 返回数字,而不是真-假,这就是问题所在。如果没有订单,就意味着是0。如果有订单,就不仅仅是1。

而且,只有在我们还没有交易的新开账户上没有平仓单。同样,这也是对该函数的不正确使用。

为什么RefreshRates();在订单被发送到服务器之后?这就像先付钱,然后问 "多少钱?

 
Pokrov:

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}

你在这里胡说八道什么呢?

如果订单 和头寸的总数为1或更多...
如果在一个未知的票据上选择了一个订单,并且不清楚它是关闭还是开放...
...等等...

你认为这有帮助吗?

 
evillive:

......没有订单意味着0,如果有订单,就不只是1。

...

这就是我将在允许的情况下纠正的地方,可以这么说。

在bool中,如果有0,那么它就是假的,除0以外的其他都是真的。

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2)。

在 "专家 "中,它说 "OrderClose函数的无效票"。

我的目标是在当前的图表上关闭订单。

要使用票据平仓,你首先需要知道要平仓的确切票据号码。然后你需要使用OrderSelect(ticket,SELECT_BY_TICKET)函数 来选择订单,并对成功选择进行检查。然后,我们需要检查成功选择的订单的关闭时间。为什么?因为当我们按票选时,OrderSelect(..., ...,pool)函数的 pool 参数被忽略了(它只在我们按索引选择时使用)。这意味着,即使我们已经成功地选择了一个订单,我们仍然需要知道我们在哪个列表中选择了它--平仓或开仓的列表。正是对收盘时间的检查,使我们能够发现 "订单是否仍在市场中"。如果收盘时间等于零,则该订单仍在市场中。如果时间与零不同,说明该订单已经提前关闭。而在所有这些程序之后,我们可以发送一个订单来关闭该订单。