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

 

不,它不会一直鸣叫,当>=时,它是 "阵列超出范围"。为什么?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   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(TimeCurrent()>=Input1 || TimeCurrent()>=Input2 || TimeCurrent()>=Input3)
           {
            BufferUP[i]=low[i]-10*Point;// в этой строке array out of range in 'a1.mq4' (75,28)

            Alert("__",TimeCurrent());
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
volyal:
谢谢你。只是>=是不可能的,会有一个恒定的信号,在第一个日期之后,你需要设置时间范围。如何设置?

这是问题的第二部分和答案的第二部分

当信号(警报)触发时,你需要固定信号已经被应用,你需要一个附加条件。

 {
//---
   static bool alerton=true;
   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(alerton)
           {
            if(A>B)
              {
               if((TimeCurrent()>=Input1 || TimeCurrent()>=Input2 || TimeCurrent()>=Input3))
                 {
                  BufferUP[i]=low[i]-10*Point;
                  Alert("__",TimeCurrent());
                  alerton = false;
                 }
              }
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

你在代码中明确了触发警报的条件。 通常情况下,指标要求每个柱子发出一个信号,那么你需要将柱子的时间 "绑定 "到一个变量上,这个变量将存储警报触发的时间,即我所说的

staticdatetime alerton=0

搜索准备好的例子,我想你现在会明白的。

 
Aleksey Vyazmikin:

如果很多信号一下子都是一样的,就把它们分组,作为一个整体播放。或者按信号类型收集成数组,慢慢播放 :)

将它们分组为一个数组,并在一个单独的脚本中播放它们--这很清楚,与你的第一个提示相对应。

但把它作为一个整体来组合和演奏,我不太理解。作为一个音频文件?

例如,如何将

如果(Sobitie_1)

{
PlaySound("Symbol.wav");
PlaySound("Sobitie1.wav);
PlaySound("Period.wav");
}?


像PlaySound("Symbol Sobitie1 Period.wav");?在这种情况下,文件数Symbol * Sobitie * Period=3*10*7=210。那就太多了)。

此外,回放的信号来自不同的TFs的指标。我还不知道如何把它考虑进去。

 
Algus:

将其收集在一个数组中,并在一个单独的脚本中播放--根据你的第一个提示,这很清楚。

但要分组并打成一片,我不太明白。作为一个音频文件?

例如,如何将

如果(Sobitie_1)

{
PlaySound("Symbol.wav")。
PlaySound("Sobitie1.wav")。
PlaySound("Period.wav")。
}?


As PlaySound("Symbol Sobitie1 Period.wav"); ?在这种情况下,文件数Symbol * Sobitie * Period=3*10*7=210。这是一个很大的问题......)。

此外,回放的信号来自不同TFs的指标。我还不知道如何把它考虑进去。

我说的是信号进来的频率,也就是说,按照我的理解,你有相同和不相同的声音,在播放声音的同时,在一个缓冲区(可以在图形中积累)的队列中进行播放,在播放队列后,分析并丢弃那些在播放文件时出现的声音,并有相同的声音,即本身不承担新的信息。我不知道你的梅洛普风的细节:)。

 

下午好!

请帮助我解决这个误解。

我设置了一个条件来建立一个头寸

if(MathAbs(WPR1)<20.0)
        {
         if(MathAbs(WPR14)>44.0 && MathAbs(WPR14)<60.0 && op0<cl1) 
{ps2=true;ps1=false;ps3=false;ps4=false;ps5=false;ps6=false;ps7=false;ps8=false;Alert("условие ps2"); OpenSell();}
        }

无论我做什么,都没有变化 我检查了所有有警报的情况,没有发现。怎么了????似乎没有什么问题,旗帜设置了不同级别的TP。但同样,我不需要一个额外的位置。

谢谢你。

 
novichok2018:

下午好!

请帮助我解决这个误解。

我设置了一个条件来建立一个头寸

无论我做什么,都没有变化 我检查了所有有警报的情况,没有发现。怎么了????似乎没有什么问题,旗帜设置了不同级别的TP。但仍然不需要一个额外的位置。

谢谢。

此外,日志中说,首先打开ps3,然后是ps2

 
novichok2018:

下午好!

请帮助我解决这个误解。

我设置了一个条件来建立一个头寸

无论我做什么,都没有变化 我检查了所有有警报的情况,没有发现。怎么了????似乎没有什么问题,旗帜设置了不同级别的TP。但同样,我不需要一个额外的位置。

谢谢你。

沃夫奇卡从学校回来。爸爸问道。

- 你今天考了多少分?

- 我在科学方面得到了 "D"。

- 为什么?

- 老师给我看了一只鸟的尾巴,让我猜一猜这是哪种鸟。

这个爸爸去学校,打开教室的门,把他的屁股伸进去。

- 这到底是谁...

...问老师...

- 你自己猜猜看。


这正是你的代码...))))

 
Alexey Viktorov:

沃夫奇卡从学校回家。爸爸问道。

- 你今天考了多少分?

- 我在科学方面得到了 "D"。

- 为什么?

- 老师给你看一只鸟的尾巴,让你猜测它是哪种鸟。

这个爸爸去学校,打开教室的门,把他的屁股伸进去。

- 这到底是谁...

...问老师...

- 你自己猜猜看。


这正是你的代码... ))))

五年级学生Ljoshenka并不是来帮忙的,而是来捣乱的。

这正是你的答案。

 
novichok2018:

此外,日志中说它先打开ps3,然后是ps2

就是这样,我想明白了。事实证明很简单:在有条件的警报中,ps8 而不是8,有3。而条件8比条件2更宽,在线路上更高。修正了它,缩小了范围,一切都好了。

但你不应该摇尾乞怜,这个话题是为新手准备的。一个没有细节的真正的专家应该明白错误大约在哪里,或者至少提出引导性的问题,否则他根本就不应该回答,而不是炫耀性的伪装。

 
Aleksey Vyazmikin:

我说的是信号进来的频率,也就是说,按照我的理解,你有相同的声音,也有不相同的声音,在播放时,声音被积累在一个缓冲区(你可以在图形中积累)队列中播放,播放后队列分析并丢弃那些在播放文件时来的声音,并且有相同的声音,即不携带新的信息。我不知道你那里有什么样的电唱机的细节:)

有一个指标是站在和所有工作的TFs和货币。我在日内工作,几乎是剥头皮,涉及2-3种工具。我使用声音提醒,不会错过任何事件,我的眼睛在一天结束时不会掉下来。

事实上,有10-14个指标涉及活动中的Windows。事实证明,我们应该把独立工作的不同指标排成一排。 这对终端或其编程来说不是一个简单的任务。

这就是我们得到的那种 "音乐")。