新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 660

 
Igor Makanu:

这个代码是有效的,通过类比来做。

做了最小的改动--删除了OrderMagicNumber()分析,增加了三个日志。
不幸的是,其结果是一样的--见Pr。- 在第一张截图中,它开始(我不知道为什么不从0开始),而在第二张截图中,它从124到99开始。

int NumberOfOrders()
{
int i,res=0,k=OrdersTotal(); string sy=Symbol();

for(i=0;i<k; i++)
{
log("k = " + k +"; " );
log("i = " + i +"; " );
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==sy)) res++; //if(( OrderMagicNumber()==magic_)&& (OrderSymbol()==sy)) res++;
log("res = " + res +"; " );

}
}
return(res);
}

附加的文件:
test_1.png  6 kb
test_2.png  6 kb
 
Alexey Viktorov:
这段代码的编译真的没有错误吗?我不相信...
你为什么要怀疑呢?在任何情况下,MQL4都不会产生任何错误。
 
Algotrader18:

(不清楚为什么不从0开始),而在第二个地方,它从124到99。

因为终端 "吃 "了Print()的一部分,在MQL中输出的优先级最低,在Print() 之前添加Slepp(123),就不会有跳过。

虽然根据日志,你只是在打印循环计数器

 
Igor Makanu:

因为终端 "吃 "了Print()的部分,在MQL的输出中具有最低的优先级,在Print()之前添加Slepp(123),就不会有跳过。

虽然根据日志,你只是在打印循环计数器

这非常有趣--你能不能说得更具体一点?这个 "吃 "的过程是如何进行的?

你的回答给我的印象是我 "吃了"--它只是没有把它放进日志,因为有更重要的事情,但我真正的任务是浏览所有订单并删除某些订单,我注意到EA跳过了一些订单(这不是以最低优先级输出信息)。我简化了任务以了解原因,结果,我们在日志中只有输出,但我仍然看到省略的订单,即专家顾问在几个订单上跳跃。 最低订单优先级很好地解释了不是从0开始的输出,但它如何解释不一致的输出,例如,从124跳到99。

如果我们所说的 "吃 "是指其他东西,我想了解是什么?
附加的文件:
test_2.png  6 kb
 
neverness:

这真是太棒了!

罗曼!

例如,我是一个拥有20年经验的成功交易员。

我不明白你为什么需要"你所输入的货币对的收盘价与它们移动平均数 之间的差额"。

此外,你知道如何建立这些差异的移动平均线吗?- 太棒了!

你能简单地画出报价的移动平均线吗?- 也没有?

那么问题出在哪里?

收盘平均数的差异不等于收盘平均数的差异,唉,啊。

 
Algotrader18:
有什么疑虑?总之,在MQL4中没有错误。

1.学习如何插入代码

Algotrader18

我做了最小的改动--删除了OrderMagicNumber()分析,增加了三个日志。
不幸的是,其结果是一样的--见上文。- 在第一张截图中,开头(我不知道为什么不从0开始),而在第二张截图中--从124开始到99的地方。

int NumberOfOrders()
  {
   int i,res=0,k=OrdersTotal(); string sy=Symbol();
  
   for(i=0; i<k; i++)
     {
      log("k = " + k +"; ");
      log("i = " + i +"; ");
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==sy)) res++;  //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
         log("res = " + res +"; ");
        
        }
     }
   return(res);
  }

2.log是对数吗?

注意事项

你可以使用 log()而不是MathLog()

MathLog - Математические функции - Справочник MQL4
MathLog - Математические функции - Справочник MQL4
  • docs.mql4.com
MathLog - Математические функции - Справочник MQL4
 
Roman Sharanov:

我还发现一个严重的缺点,对CopyClose()的调用 太多

你能告诉我如何在一个循环中复制货币对数组的报价吗?

这似乎是一个双数组,但MQL不支持它,像%。

你说的 "双数组 "是什么意思?

 
Alexey Viktorov:

你说的'双数组'是什么意思?

嗯,二维的。

 
Roman Sharanov:

好吧,二维的。

哪里写着CopyClose 将数据复制到二维数组?为什么一开始就提到二维阵列?

 
Alexey Viktorov:

哪里写着CopyClose将数据复制到一个二维数组?为什么会提到二维数组?

因为我需要在一个数组中存储数组的引号。

为了在一个循环中复制一次,然后使用ArrayCopy 进行计算,但不是CloseCopy

原因: