哪种设计是正确的? - 页 6

 
valenok2003:
while 代码中,只是为了在线程忙碌时进行延迟。

然后你需要刷新率: RefreshRates()。否则你将使用旧的升值和出价值。或者询问MarketInfo的asc\bid。
 
VladislavVG:

然后你需要刷新率: RefreshRates()。否则你将使用旧的卖价和买价。或者在MarketInfo上询问。

所以这就是狗在工作的地方。

这个设计很成功。

//+------------------------------------------------------------------+
//|                                           CloseThisSymbolAll.mq4 |
//+------------------------------------------------------------------+
int start()
{
//----
  for (int trade = OrdersTotal()-1; trade >= 0; trade--) 
  {
    OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
    if (OrderSymbol() == Symbol()) 
    { 
      while (!IsTradeAllowed()) Sleep(1000);
      RefreshRates();
      if(OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), 5, CLR_NONE);
      if(OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), 5, CLR_NONE);
    }
  }
//----
   return(0);
}
//+------------------------------------------------------------------+

至少第一次就成功了。

谢谢你!

 
VladislavVG:

然后你需要刷新率: RefreshRates()。否则你将使用旧的升值和出价值。或者在MarketInfo上询问asc\bid。

谢谢你!

我也会在我的EA中修复它。

 
valenok2003:



因此,这就是狗的位置。

这就是使其发挥作用的设计。

至少第一次就成功了。


几乎--还有一个条件需要纠正。


  for (int trade = OrdersTotal()-1; trade >= 0; trade--) 
  {
    if(!OrderSelect(trade, SELECT_BY_POS, MODE_TRADES)) break;
    ...........................
如果命令没有发出去,就没有什么可做的。

祝你好运。

 
VladislavVG:


几乎--还有一个条件需要纠正。

如果逮捕令没有出来,就没有什么可做的了。

是的,这很有道理。这是循环的一个疏忽
while(OrdersTotal()>0)
 
valenok2003:
在那里,你有滑移=5,而这对五位数的报价来说是不够的。
 

因此,综上所述。


//+------------------------------------------------------------------+
//|                                           CloseThisSymbolAll.mq4 |
//+------------------------------------------------------------------+
int start()
{
//----
  for (int trade = OrdersTotal()-1; trade >= 0; trade--) 
  {
    if(!OrderSelect(trade, SELECT_BY_POS, MODE_TRADES)) break;
    if (OrderSymbol() == Symbol()) 
    { 
      while (!IsTradeAllowed()) Sleep(1000);
      RefreshRates();
      if(OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), slippage, CLR_NONE);
      if(OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), slippage, CLR_NONE);
    }
  }
//----
   return(0);
}
//+------------------------------------------------------------------+

或将有任何其他评论?

 
khorosh:
在那里,你有滑移=5,而这对五位数的报价来说是不够的。
在一个相对平静的市场中,5个就足够了,IMHO。
 
一度,代码库发布了自己的一套,以关闭不同的类型。
附加的文件:
 
https://www.mql5.com/ru/code/mt4
原因: