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

 

下午好,论坛用户。

请帮助我正确组织指标中的声音。 MT4的标准方法不能很好地工作。

根据我的理解,在不同的图表中启动条形图的时刻,有一个信号流要在Windows中播放。他们没有被放在队列中,但他们是最后被播放的,其余的都丢失了。在相邻的两个PlaySound()函数 中,只有一个被播放。它在信息中造成混乱,信息组织导致终端的加载。

解决方案似乎是使用waveOut API或Winampa。它允许在指示器中形成某种播放列表,并将播放传递给外部设备。 它必须减轻终端的负荷。 一般来说,问题出在队列安排上。
谷歌了。我没有找到傻瓜的详细描述,我自己也搞不清楚。
如果有人已经解决了这个问题,或者知道详细的描述,请告知。我认为这将是许多人感兴趣的。

 

谁能帮帮我!!!!

你能告诉我如何在MT4中使价格图的右侧,在止损位上,价格被突出显示,与问价和买价的线相同????。

附加的文件:
27c3ncf5hf2.jpg  355 kb
 
zctac:

谁能帮帮我!!!!

你能告诉我如何在MT4中使价格图的右侧,在止损位上,价格与卖价和买价????,以同样的方式突出显示。

在止损单价格上显示你的水平线(OBJ_HLINE)。

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
  • www.mql5.com
//| Создает горизонтальную линию                                     |                 price=0,                         width=1,            //| Перемещение горизонтальной линии                                 | //| Удаляет горизонтальную линию                                     |...
 
Algus:

下午好,论坛用户。

请帮助我正确组织指标中的声音。 MT4的标准方法不能很好地工作。

根据我的理解,在不同的图表中启动条形图的时刻,有一个信号流要在Windows中播放。他们没有被放在队列中,但他们是最后被播放的,其余的都丢失了。在相邻的两个PlaySound()函数 中,只有一个被播放。它在信息中造成混乱,信息组织导致终端的加载。

解决方案似乎是使用waveOut API或Winampa工具。在指示器中形成类似于播放列表的东西,并将播放传输到外部设备。 这应该可以减轻终端的负荷。 一般来说,问题出在队列的组织上。
谷歌了。我没有找到傻瓜的详细描述,我自己也搞不清楚。
如果有人已经解决了这个问题,或者知道详细的描述,请告知。我认为这将是许多人感兴趣的。

这在专家顾问或循环脚本中更容易做到,因为Sleep()在那里工作,不像在指标中,在播放旋律之间,这个滑块可以被设置为等待,直到音乐的结束。

并从一个脚本或EA中调用该指标。
 
Aleksey Vyazmikin:

在辅助EA或循环脚本中做这件事更容易,Sleep()在那里工作,不像在指标中,你可以把这个滑块放在播放的曲子之间,等待音乐结束。

该指标可以从脚本或专家顾问中调用。

谢谢,我会考虑的,也许是作为一种选择,可以出去了。

问题不在于持续时间,而在于队列。这些信息很短,但很多,同时也很重要。同样,这也给终端带来了压力。我想把这个交给系统。在那里,这个问题似乎可以通过标准的Windows手段来解决。

虽然...也许。

 
Algus:

谢谢,我会考虑一下,看看我是否能解决这个问题。

问题不在于长度,而在于队列。信息很短,但一下子就有很多。同样,给终端带来了负荷。我想把这个交给系统。这项任务似乎可以通过标准的Windows手段来解决。

虽然。也许。

如果有许多相同的信号同时出现,就把它们分组,作为一个整体播放。或者按信号类型收集到数组中,然后一步步执行 :)

 

在某个日期和时间,你必须检查信号。有什么问题吗?

input datetime Input1=D'23.02.2019 08:00:27';
input datetime Input2=D'08.03.2019 09:30:20';
input datetime Input3=D'01.04.2019 12:30:27';
______________________________________________

{
//---
 A=1;B=2;
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1) 
        {
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--) 
        {
         if(A>B&&(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
           {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
Artyom Trishkin:

在止损单价格处输出其水平线(OBJ_HLINE)。

谢谢你的答复
 
volyal:

在某个日期和时间,你必须检查信号。有什么问题吗?

if( (A>B) && (TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3) )

你有 "硬 "条件,所以你可能没有打到整个表达式的真值。

指标和专家顾问在收到嘀嗒声后工作,但嘀嗒声可能比你的条件晚一秒发生。

你应该尝试在>=上写下这样的条件。

SZY: 嗯,一般来说,当我写复杂的逻辑条件时,我通常会尽量不失去跟随条件的逻辑,然后我可以把它们简化成一个更紧凑的形式,这样在调试阶段,万一出现逻辑错误,就更容易发现。

if(A>B)
{
   if(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
        {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
        }
}

但这是一个品味问题。

 
Igor Makanu:

你有 "硬 "条件,所以你很可能没有达到整个表达式的真实值

指标和专家在收到蜱虫后工作,但蜱虫可能比你的条件晚一秒。

你应该尝试在>=上写下这样的条件。

SZY: 嗯,一般来说,当我写复杂的逻辑条件时,我通常会尽量不失去跟随条件的逻辑,然后我可以把它们简化成一个更紧凑的形式,这样在调试阶段,万一出现逻辑错误,就更容易发现。

但这是一个品味问题。

谢谢你。简单地>=是不可能的,在第一个日期之后会有一个恒定的信号,你需要设置时间范围。你是如何设置的?
原因: