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

 
hoz:

我已经明白,这里最好是用数组)))。而在这个变体中,我上面描述的是不准确的吗(纯粹是为了兴趣。 我想一切都已经很清楚了)。

类似这样的事情就是我所想的。所以...思考的方向...

int i_magic=123;
int OrdersMassive[7];
//+----------------------------------------------------------------------------+
int start() {
   FindOrders(OrdersMassive);
   int i, num=0;
   for (i=0; i<=7; i++) {
      Print("Количество "+GetNameOP(i)+" = "+OrdersMassive[i]);
      num+=OrdersMassive[i];
      }
   Print("Всего ордеров = "+(num-OrdersMassive[6]));
   return(0);
}
//+----------------------------------------------------------------------------+
void FindOrders(int &mass[]) {
   int i, t, k=OrdersTotal()-1;
   ArrayInitialize(mass,0);
   for (i=k; i>=0; i--) {
      if (!OrderSelect(i,SELECT_BY_POS))  continue;
      if (OrderMagicNumber()!=i_magic)    continue;
      if (OrderSymbol()!=Symbol())        continue;
      t=OrderType();
      mass[t]=mass[t]+1;
      }
}   
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
   switch (op) {
      case OP_BUY      : return("Buy");
      case OP_SELL     : return("Sell");
      case OP_BUYLIMIT : return("Buy Limit");
      case OP_SELLLIMIT: return("Sell Limit");
      case OP_BUYSTOP  : return("Buy Stop");
      case OP_SELLSTOP : return("Sell Stop");
      case 6           : return("Неторговое изменение баланса");
      default          : return("Не знаю, чё за тип такой...");
   }
}
//+----------------------------------------------------------------------------+

你有什么,我没有真正看...

 
r772ra:

这个怎么样?

我的版本的功能更短......:)

//+----------------------------------------------------------------------------+
void FindOrders(int &mass[]) {
   int i, t, k=OrdersTotal()-1;
   ArrayInitialize(mass,0);   
   for (i=k; i>=0; i--) {
      if (!OrderSelect(i,SELECT_BY_POS))  continue;
      if (OrderMagicNumber()!=i_magic)    continue;
      if (OrderSymbol()!=Symbol())        continue;
      t=OrderType();
      mass[t]=mass[t]+1;
      }
}   
//+----------------------------------------------------------------------------+
 
r772ra:

也许是这样。

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   t = 0;
   p = 0;
 
   for (int i=OrdersTotal() - 1; i>=0; i--)
      {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1 && OrderType() < 6)   p++;
      if (OrderType() < 6)  t++;
       }
  pr ("FindOrders(): " + "t = " + t);
  pr ("FindOrders(): " + "p = " + p);
}

它也不起作用。我在那里有一个缺陷。现在是这样的。

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   t = 0;
   p = 0;
 
   for (int i=OrdersTotal() - 1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1 && OrderType() < 6)
      {
          p++;
      }
      if (OrderType() < 6)
          t++;
      else 
      {
         pr("Позиций в рвнке нет!");
      }
      
      pr ("FindOrders(): " + "t = " + t);
      pr ("FindOrders(): " + "p = " + p);
   }
}

当市场上没有订单时,计数器不会归零。这是胡说八道。这里有什么问题吗?我将看看阿特姆写的东西。

 
hoz:

这也是不行的。我在那里有一个缺陷。这就是现在的情况。

当市场上没有订单时,计数器不会出现零。这是胡说八道。这里有什么问题我不知道。我将看看阿特姆写的东西。


把这个拿出来。

pr ("FindOrders(): " + "t = " + t);
pr ("FindOrders(): " + "p = " + p);
我认为这就是信息的输出
 
r772ra:


把这个从循环中取出来

我认为这就是信息的输出。


对。(笑)。好吧,发生在我身上的事情。一些愚蠢的错误。我已经在C++中挖掘了一个月了。而现在我在µl中出现了这样愚蠢的错误。我的大脑一定被烧坏了 :(
 
一般来说,在每一个tick 上搜索订单是可以的吗?还是在每个栏位上都执行更好?我仍然不知道哪种情况下更好,哪种情况下更好。
 
hoz:
一般来说,在每一个tick上搜索订单是可以的吗?还是在每个栏位上都执行更好?我仍然不知道在一种情况下什么更好,在另一种情况下什么更好。
如果在条形图开盘监测期间,在条形图内关闭了一个头寸,专家顾问将不知道头寸数量 的变化,直到下一个条形图打开。
 
hoz:


t 是所有订单的数量。

p 是待处理订单的数量

如果该条件为真。

为真,那么tp 都会被递增,因为任何2到5的订单既是挂单也是订单。这意味着我们应该增加两个计数器。而如果条件是真的。

那么就没有挂单,但有一个市场订单。这意味着我们将增加 t 计数器,即总订单数的计数器。

如果什么都没有,那么我们将打印出没有订单。


t =OrdersTotal()。

为什么计算?????

 

你好!希望在这个函数中寻找错误。

这个想法是,未开盘的挂单 应该在下单两天后被删除。

min=1440。

if(OrdersTotal()<1)
{return;
 }
  for(int i=OrdersTotal()-1;i>=0;i--)
   {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol())
       {
        if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
        {
          if(TimeCurrent()-OrderOpenTime()>min)            
            {
            OrderDelete(OrderTicket());
          return;
          }
        }
      }
    }
return;}
 
pako:



谢谢你,帕科。