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

 
hoz:


这已经是我昏昏欲睡的迹象了。

但话说回来,这并不是真正的重点。我正在测试器中运行猫头鹰。在截图中,你可以看到,没有挂单或市场订单。

独立函数和我复制了独立函数显示所需数值的标准注释都显示,一直有市场订单和挂单。

这就是该功能的运作方式。

我从一开始就调用它,最初我还将计数器的值重置为零。

好吧,就像它一样,T++在任何方面都是有效的
 
Forexman77:

对你的EA做了一些修改,代码中的注释。注意信号和停止的形成。我不假思索地把它们特别放在了一起。如有必要,可根据自己的口味进行改变。

附加的文件:
 
artmedia70:
好吧,不管是哪种方式,t++都是可行的。


唯一的选择是这个?

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
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++;
          t++;
      }
      else if (OrderType() < 2)
          t++;
      else 
      {
         Print("Позиций в рвнке нет!");
      }
      
      pr ("FindOrders(): " + "t = " + t);
      pr ("FindOrders(): " + "p = " + p);
   }
}

它看起来并不像什么。它没有被优化。t++ 的重复是不快乐的......

 
hoz:


唯一的选择是这个?

它看起来并不像什么。它没有被优化。t++ 的重复是不快乐的......

你为什么要在任何情况下增加t?事实上,那里到底有什么。

if (OrderType() > 1 && OrderType() < 6)
      {
          p++;
          t++;
      }
      else t++;

如果订单类型 大于1且小于6,增加p,增加t

否则(即使订单类型是==6),我们再次增加t

这很奇怪,不是吗?

 
artmedia70:

你为什么要增加t呢?事实上,那里到底有什么。

如果订单类型高于1,低于6,我们增加p,增加t

否则(即使订单类型==6)我们再次增加t

这很奇怪,不是吗?




当我在写你的评论时,我已经改写了我的评论。以上是更正后的版本。
 
hoz:

当我在写你的评论时,我已经改写了我的评论。以上是更正后的版本。
为什么我应该在订单挂起时增加t,而在下一个订单是市场订单时再增加t?
 
创建一个有六个元素的数组。通过引用将其传递给函数。一旦选择了一个订单,并且它符合所有的过滤器(符号,magik),增加订单类型所涉及的阵列单元。函数运行后,你将在数组中得到按类型排序的订单数量
 
artmedia70:
为什么我们要增加t,如果订单是挂起的,然后再增加t,如果下一个订单是市场订单?


t 是所有订单的数量。

p- 待处理订单的数量

如果条件。

if (OrderType() > 1 && OrderType() < 6)

为真,那么tp 都会被递增,因为任何2到5类型的订单都是一个待定订单和一个一般订单。因此,两个计数器都应该被递增。而如果条件是真的。

else if (OrderType() < 2)

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

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

 
artmedia70:
创建一个有六个元素的数组。通过引用将其传递给函数。一旦选择了一个订单,并且它符合所有的过滤器(符号,magik),增加订单类型所涉及的阵列单元。函数运行后,你将在数组中得到按类型排序的订单数量。

我已经明白,在这里,数组是更可取的))))。上述变体有什么不一致的地方吗? 只是为了兴趣,现在一切似乎都很清楚了)。
 
hoz:

我已经明白了,在这里阵列是最好的)))。而在这种变体中,我上面描述的是不准确的吗? (只是为了兴趣。我想一切都已经很清楚了)

这个怎么样?

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
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);
}