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

 
79014393347az:
你好!请帮助我如何在RSI警报中写入,我自己试过推送通知,但没有成功,我得到一个错误。
我想知道你做了什么,得到了什么错误。
代码。
 

如果PlaySound() 返回true,不播放音频的原因是什么?


v1 = (Up[i] != EMPTY_VALUE ? Up[i] : Down[i]);
v2 = (Down[i+1] != EMPTY_VALUE ? Down[i+1] : Up[i+1]);
         
if((v2 >= level || v2 <= level * (-1)) && a2 < Time[i])
  {
   a2 = Time[i];
   if(arrows == e1 && v2 >= level) {ArrowCreate(false,Time[i+1],High[i+1]);} else if(arrows == e1) {ArrowCreate(true,Time[i+1],Low[i+1]);};
   if(prev_calculated != 0)
     {
      if(sounds == e1 && v2 >= level) {al = PlaySound("SELL NOW"); Alert(al);} else if(sounds == e1) {al = PlaySound("BUY NOW"); Alert(al);};
      if(alerts == e1 && v2 >= level) {Alert(_Symbol+TF(Period())+" SELL NOW");} else if(alerts == e1) {Alert(_Symbol+TF(Period())+" BUY NOW");};
      if(push == e1 && v2 >= level) {SendNotification(_Symbol+TF(Period())+" SELL NOW");} else if(push == e1) {SendNotification(_Symbol+TF(Period())+" BUY NOW");};
     };
  };
 
Alexandr Sokolov:

如果PlaySound() 返回true,音频不能播放的原因是什么?


  1. 音频文件的名称是否正确?
  2. 在PlaySound()之后,你马上有Alert()--这两个函数都在播放音频。移除Alert()
 
Artyom Trishkin:
  1. 声音文件的名称是否正确?
  2. 在PlaySound()之后,你马上有Alert()--这两个函数都会播放声音。移除Alert()

名字是正确的。原因竟然是警报声。非常感谢!几天来一直搞不清楚原因。

 
有没有可能在编译器程序设置中进行设置,将用户函数的颜色从默认的黑色改为不同的颜色,我们说的是突出显示用户函数?
 
编译器中默认附加的ArrayMaximum()函数 是如何工作的?所以,问题的实质是这样的:这个函数可以找到数组中的最大值,我认为如果数组中的数值是混乱的,为了找到最大值或最小值,应该先对这些数值进行排序,然后才能选择最大值,这个最大值将在排序后的数组列表的末尾或开头,如果它们是以混乱的顺序写的,这个函数如何找到最大值?
 
Seric29:
ArrayMaximum()函数 默认包含在编译器中,它是如何工作的?所以,问题的关键在于:这个函数可以找到数组中的最大值,我认为如果数组中的数值顺序混乱,为了找到最大值或最小值,应该先对这些数值进行排序,然后才能选择最大值,而这个最大值将位于排序后的数组列表的末尾或开头,如果它们是以混乱的顺序书写的,这个函数将如何找到最大值?

没有必要对任何东西进行分类。ArrayMaximum()函数找到未排序数组中的最大值,并返回 找到的 数值的索引

 
Alexey Viktorov:

没有必要对任何东西进行分类。ArrayMaximum()函数在一个未排序的数组中找到最大值,并返回 找到的 的索引

但是,它仍然需要在一些链中排队,以便与一个或另一个值进行比较,如果有5个值,而且它们是以混乱的顺序写入的,那么找到最大 或最小值的唯一方法就是将它们全部进行比较,在任何情况下你都需要一个缓冲区来存储值。

 
Seric29:

但它仍然需要排成一串,以便与一个或另一个值进行比较,如果有5个值,而且它们是以混乱的顺序写入的,那么找到最大 或最小值的唯一方法就是将它们全部进行比较,在任何情况下你都需要一个缓冲区来存储这些值。

为什么要试图弄清楚它的内部运作方式?好吧,如果你想写你自己的函数,可能更方便的是排序和取最外层的一个索引的值。但它几乎不会比内置功能工作得更快。另外,内置功能允许你在指定的索引范围内搜索一个值。所以,简单的排序是行不通的。因此,我们将不得不把数组的一部分复制到一个中间数组中,并对其进行排序,然后从其中取出所需的值,但数组复制并不是一个非常 "便宜 "的功能。

 
下午好。你能给我一个提示吗?该条件的代码会是怎样的。如果账户余额 增加或减少,则执行函数
原因: