初学者的问题 MQL5 MT5 MetaTrader 5 - 页 758

 
-Aleks-:

出现错误--什么是错的?在MQL4中,它是有效的...


'{' - 太多的初始化器 TZ_Sky_and_Ground_V_04.mq5 2484 6

我应该把arrFibo[18]--他们说18个元素。
 
Vladimir Karputov:

你看过iMA 的帮助吗?

第一步:在 "头 "中声明一个变量,以存储iMA指标手柄。

第二步:在OnInit()中创建指标句柄。

而结果是(截图中的十字准线被设置为1号栏)。

问题:如果我通过指标进行循环,我是否也应该设置双倍 MA[1];或者我应该要求/接收一个更大的数组?我只是不明白这一切的复杂性是什么--与MQL4相比,有什么优势。
 
-Aleks-:

如果我试图在循环中使用双倍MA[1],我应该使用双倍 MA[1];还是请求/接收更大的数组尺寸更好?我只是不明白为什么需要这些复杂的东西--与MQL4相比,有什么优势。


我的iMAGet函数的例子是为从一个指标中一次接收一个值而设计的如果你想从指标中获得更多的值,你应该使用带参数 "from "和 "to "的CopyBuffer并将结果保存在一个数组中。


补充:以后会有一个例子......


答应的例子。

输入参数。

  • 将值放入一个数组中- 如果 "true",那么我们使用将值放入一个数组中,如果 "false",那么我们一次获得一个值
  • count-> 仅当 "将数值复制到一个数组"==true时 -- 被复制到数组中的条数
  • 起始位置-> 只有当 "将数值复制到一个数组"==true时 -- 被复制到数组中的初始元素(bar)的编号。

在专家顾问中使用阵列和移动大道指标。

在EA中使用阵列和移动大道指标

请注意数组arr_ma 和索引为#0和索引为#8的元素的值。

ds

附加的文件:
iMAGet.mq5  12 kb
 
Vladimir Karputov:


我的iMAGet函数的例子是为从指标中一次接收一个值而设计的如果你想从指标中获得几个值,你应该使用带参数 "from "和 "to "的CopyBuffer并将结果保存在一个数组中

补充:以后会有一个例子......

答应的例子。

输入参数。

  • 将值放入一个数组中- 如果 "true"--那么我们使用将值放入一个数组中,如果 "false"--那么我们一次获得一个值
  • count-> 仅当 "将数值复制到一个数组"==true时 -- 被复制到数组中的条数
  • 起始位置-> 只有当 "将数值复制到一个数组"==true时 -- 被复制到数组中的初始元素(bar)的编号。

在专家顾问中使用阵列和移动大道指标。

请注意数组arr_ma 和索引为#0和索引为#8的元素的值。

ds

谢谢你的例子!

对我来说,非常重要的是了解请求一个指标值和复制一打指标值是否有任何好处--也许有一些这方面的研究?

事实上,时间序列是颠倒的--这不是好事--我习惯了0123条的标准编号,但在这里我得到了1230条的倒序。

如果我不知道我在搜索过程中需要多少个条形(例如,当我们搜索MA和条形交叉点时),那么我应该要求最大可能的数量?它是否会以任何方式影响性能?

 
-Aleks-:

谢谢你的例子!

对我来说,非常重要的是要了解请求一个指标值和复制一打指标值是否有优势--也许在这方面已经有一些研究?

...


谁能阻止我们自己做研究呢 :)?

...

事实上,时间序列被颠倒了--这不是好事--我习惯了0123条的标准编号,而这里我们有1230条的倒序。

...

在得到一个数组后(调用iMAGetArray后),你唯一需要做的是执行ArraySetAsSeries('our array',true)。
...

如果我不知道我在搜索中需要多少个条形图(例如,在搜索MA和条形图交叉点时),我是否应该要求最大可能的数量?它是否会以任何方式影响性能?


在这种情况下,最好进行几次查询。例如,第一次查询--50个元素,如果需要--第二次查询(又是50个元素)......
 
Vladimir Karputov:

谁在阻止我们做自己的研究呢 :)?


我因为对MQL5的不了解而受到阻碍--我可以因为代码中的一个错误而误导大家,但你的专业精神会让我对这种研究更有信心

弗拉基米尔-卡尔普托夫


你只需要在得到数组后(调用iMAGetArray后)执行ArraySetAsSeries('我们的数组',true)。

我的意思是在一个函数中一次做完?


弗拉基米尔-卡尔普托夫


在这种情况下,最好进行几次查询。例如,第一个请求 - 50个元素,如果有必要,第二个请求(又是50个元素)......。
寒冷...也就是说,把一个循环放在一个循环中?为什么是50而不是100?所有关于这个主题的研究都是必要的,可能在接收信息方面没有意义,超过一个酒吧。
 
与本主题无关的评论已被移至 "MQL4 MT4 MetaTrader 4初学者的问题"。
 
-Aleks-:

...

也就是在一个函数中一次完成?

...


最好是把阵列翻进去。

弗拉基米尔-卡尔普托夫

在收到数组后(调用iMAGetArray后),你必须执行ArraySetAsSeries('我们的数组',true)

-Aleks-

...

寒冷...即,在循环中放一个循环?为什么是50而不是100?同样,对这一主题的研究是必要的,也许获得不止一个酒吧的信息是没有意义的......。

没有嵌套的循环--围绕所有的值只会有一个循环:所有的处理都是连续的--搜索结果在一个单独的函数中(在其中,我们要求一定的值--例如,50个值)。如果我们没有找到结果,我们就提出一个新的请求。

 

在MQL4之后,在MQL5中使用指标的工作是很糟糕的!这真的让我感到恶心。

我不明白为什么他们不能把所有的东西都合并在一个函数中,包括手柄,而不是在代码中到处涂抹指标的调用!我不明白。

如果一个指标的设置 会被指标所在的函数所改变,我不明白该怎么做!?我需要启动指标的所有变体吗?


我在MQL4中看到一个例子 - 如何在MQL5中做到这一点?


int BarPeresek_iMAf(int PeriodMA)
  {
   int TFT=0;
   int shiftMAT=0;
   int typeMAT=0;
   int priceMAT=0;
   int BarPeresek=0;
   if(Bars(Symbol(),0)>PeriodMA)
     {
      for(int X=1;X<1000; X++)
        {
         double MAT=NormalizeDouble(iMA(Symbol(),TFT,PeriodMA,shiftMAT,typeMAT,priceMAT,X),Digits());
         if((Low(X)>MAT && High(X)>MAT) || 
            (Low(X)<MAT && High(X)<MAT))BarPeresek++;
         else {BarPeresek++; break;}
        }

     }
   return BarPeresek;
  }
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для...
 

你能告诉我如何在平仓 后删除标记,以便不显示它们吗?

是否有可能以编程方式删除它们?

谢谢你!