[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 212

 
dzhini:

太好了,都在这里了。昨天晚上发布的,但这个主题已经走得很远了,解释了什么是魔术师,以及如何准备的)))

请给我一个问题的答案。

我的EA在特定时间设置了BUYLIMIT和SELLLIMIT。我想让它在开单时删除一个方向的挂单(OP_BUY或OP_SELL)。

这是我的变体。


这样看起来更好。

void start(){
  .....

  for(int i=OrdersTotal() -1;i>=0;i--) 
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
     {
      if(CalculateCurrentOrders(Symbol())>0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_SELLLIMIT);} // (1) 
      if(CalculateCurrentOrders(Symbol())<0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_BUYLIMIT);} //(2) 
      if(TimeCurrent() - OrderOpenTime()>=HowManyHours*60*60) {ClosePendingOrder(OP_BUYLIMIT);ClosePendingOrder(OP_SELLLIMIT);} //(3) 
     } 
   ....

}

不谈逻辑,大括号的缺失和OrderSelect()的不正确组织是显而易见的。

 
eddy:

为什么不把这些问题按主题分组,并增加直接在那里提问的可能性? 这将是一份正常的问卷。

如果你增加了不仅添加问题,而且添加任务的可能性,用代码/文章作为答案,你会得到我所建议的--一个不同的网站结构,包括其所有现有的内容

罗曼,准备工作已经做了很久,常见问题的意识形态之前已经制定,并将在一个专门的分支机构发布,技术基础已经与行政部门商定。
等待该分支的发布,看看它与你的想法如何吻合,如果有必要,你可以在你的能力范围内开发和实施你的项目
 
Sergey_Rogozin:

这样看起来更好。

不谈逻辑,大括号的缺失和OrderSelect()的不正确组织就很明显了

你能否解释一下OrderSelect() 有什么问题。因为,正如我之前写的,如果我在已经开启的交易方向上进行撤单,一切都会顺利进行。此外,它还能在严格规定的时间内毫无问题地删除所有订单。
 
dzhini:
请你解释一下OrderSelect() 的问题所在。因为,正如我之前写的,如果我在已经开启的交易方向上进行撤单,一切都会顺利进行。我们也没有问题,在某个时间删除所有的订单。
没有看到代码,就很难肯定地说。如果你不需要按符号、魔术师、操作类型等进行选择,也许OrderSelect() 可以照常工作。
 

这基本上是一种尝试,为未来做一个实践,与不同的订单集(不只是两个)一起工作。

当订单视图周期运行时,EA运行得相当好,直到警报,但它不想与删除功能正常工作。

void ClosePendingOrder(int ORDERType)
{
 while(!IsTradeAllowed()) Sleep(100);
 if(OrderType()==ORDERType)
 {
 if(OrderSymbol()==Symbol())
 { 
 if(!OrderDelete(OrderTicket(),CLR_NONE))
   Print("Order close error",GetLastError());
return;
      }
    }
}
 
granit77:
常见问题的意识形态是预先设计好的,其技术基础已经与行政部门达成一致。
看看它如何与你的想法相匹配,如果有必要,你可以开发你自己的项目。
我得到的答案是:"一切都已经想好了,并与行政部门达成了一致(也就是说,没有办法改变),如果有些东西与你的想法不一致,你可以自己做"?
 
eddy:
我对答案的理解是正确的:"一切都已经想好了,并与行政部门达成一致(即没有办法改变),如果有些东西不符合你的想法--你可以自己做"?
"在你之前,一切都已经被偷走了"))))))))))
 
dzhini:

这基本上是一种尝试,为未来做一个实践,与不同的订单集(不只是两个)一起工作。

当订单视图周期运行时,EA运行得相当好,直到警报,但它不希望与删除功能正常工作。

看起来一切都已到位。我不知道。
 
Sergey_Rogozin:

这是如何做到的。 ClosePendingOrder(OP_SELLLIMIT);}。// (1) ?

其代码。

删除订单的函数代码在信息中给出...也许我没有理解这个问题,但我会试着按我的理解来解释它。

一个for循环设置了一个所有可用的未结订单和待定订单的枚举。ClosePendingOrder(OP_SELLLIMIT) - 从这个列表中选择那些符合货币符号和参数OP_SELLLIMIT 的。一旦它发现这些匹配,它就会删除这个待定订单。

 
dzhini:

我在那条信息中给出了删除订单功能的代码...也许我没有理解这个问题,但我会试着按我的理解来解释它。

一个for循环设置了一个所有可用的未结订单和待定订单的枚举。ClosePendingOrder(OP_SELLLIMIT) - 从这个列表中选择那些符合货币符号和参数OP_SELLLIMIT 的。一旦发现这些匹配,它就会删除这个挂单。

我已经想好了。起初只是不经意地看了一下。

我没有看到这个错误。