错误、漏洞、问题 - 页 1914

 
nys2000:

你能不能说得更具体一点?


白手起家

 
nys2000:

你能不能说得更具体一点?

for(i=1; i <=OrdersTotal(); i++) 这个列表中的订单编号从零到OrdersTotal()-1,包括在内(让Artem Trishkin原谅我,只是缩短了对nys2000的等待)。
 
Aleksei Beliakov:

白手起家


这是两个相当的选择。如果对于(i=1...),那么OrderSelect(i-1,...),如果对于(i=0,...) - OrderSelect(i,...)

 
Vladimir:
for(i=1; i <=OrdersTotal(); i++) 这个列表中的订单编号从零到OrdersTotal()-1,包括在内(让Artem Trishkin原谅我,只是缩短了对nys2000的等待)。

谢谢,但在OrderSelect(i-1,...)中考虑到了从0到OrdersTotal()-1的订单编号。

 
int OrdersTotalT(int _type)
  {
   int _total=0;
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {

      bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol() && OrderType()==_type)
        {
           _total++;
        }
     }
   return(_total);
  }
 
nys2000:

谢谢你,但是从0到OrdersTotal()-1的订单编号在OrderSelect(i-1,...)中已经说明了。


做到搜索的反向顺序 ...

 
nys2000:

这里有一个这样的简单代码。

在功能启动的那一刻,有两个购买位置是开放的。该函数将两个订单的存在打印了两次:通道1,通道2。

我们删除注释并再次运行该函数。它大力拿下一个买单,宣布 "通过#1 "并离开循环。没有出现 "通道#2 "的信息。

魔法是什么?


1. i=1,我们计算了订单......检查了条件1<=2 ? 是的。选择并关闭了该订单。

2. i++ (i=2)

3.OrdersTotal()=1<---------- 通过关闭循环内的订单,实际上改变了退出循环的条件

4.2<=1 ? 没有<-----------,这里是你的 "魔法",因此从循环中退出。

void CloseAllOrders()
{
bool Ans;
int total=OrdersTotal();
   for(int i=1; i <=total; i++)     
      {      
      Print("Проход № ", i);      
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
         {  
         if (OrderSymbol() != Symbol())
            continue;
         if (OrderType()==0)
             {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Bid,Digits),25);
             }           
         if (OrderType()==1)
             {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Ask,Digits),25);
             } 
         }
      }      
         
return;
   
}
 

为什么会有一个额外的CHART_WINDOW_HANDLE 图表ID,它的作用是什么?

[删除]  
Konstantin:

为什么会有一个额外的CHART_WINDOW_HANDLE 图表ID,它的作用是什么?

我将假设图表ID是针对mql环境的,HWND是针对winapi的。
 

执行过程中出错

int f( int t )
{
union U {
        U( int t ) : t1( t ) {}
        int t2;
        int t1;
};
	U u( t );
        return u.t2;
}
void OnStart()
{
        Print( f( 3 ));
}

结果:随机数(肯定不是3)。