在MQL5中一起学习和写作 - 页 8

 

我正在写一个简单的价格结构算法,从mcl4转移到mcl5,例如将mcl4代码复制到mcl5随机和rsi,它使用了访问mcl4数据的基本方法。

很快我们就会得到我们需要的东西。

现在我在为iMaOnArRAu函数而苦恼,因为MT5没有提供它来从用户数组中获得最简单的移动 平均线方法

我将把图书馆扩展到所有技术工具,我知道几乎所有的算法。

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих - Документация по MQL5
 

我太笨了...我搞不清楚如何写...

有这样的代码。

   MqlRates rates[];
   
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(_Symbol,_Period,0,1000,rates);
   

我想获得从第i条到第j条中最低低点的条形的索引。

我正在尝试使用ArrayMinimum函数

int k=ArrayMinimum(rate.low,i,j-i+1); - 错误

int k=ArrayMinimum(rate[].low,i,j-i+1); - 错误

什么是正确的方式?

Документация по MQL5: Операции с массивами / ArrayMinimum
Документация по MQL5: Операции с массивами / ArrayMinimum
  • www.mql5.com
Операции с массивами / ArrayMinimum - Документация по MQL5
 
owl:

我太笨了...我搞不清楚如何写...

有这样的代码。

我想获得从第i条到第j条中最低低点的条形的索引。

我正在尝试使用ArrayMinimum函数。

int k=ArrayMinimum(rate.low,i,j-i+1); - 错误

int k=ArrayMinimum(rate[].low,i,j-i+1); - 错误

什么是正确的方式?

使用直接访问的函数,MqlRates 是一个 "结构 "数组,你需要一个数组Low,这里是一个例子,对于High也是如此。

   rates_total=CopyHigh(NULL,_Period,_start,_end,iHigh);
   if(rates_total<=0)
      return;
   else
      HighDay=iHigh[ArrayMaximum(iHigh,0,rates_total)];
   rates_total=CopyLow(NULL,_Period,_start,_end,iLow);
   if(rates_total<=0)
      return;
   else
      LowDay=iLow[ArrayMinimum(iLow,0,rates_total)];

看一看代码的例子。这是来自https://www.mql5.com/ru/code/102

PivotPointUniversal
PivotPointUniversal
  • 投票: 17
  • 2010.04.26
  • Dmitry
  • www.mql5.com
Опорные точки Pivot без использования объектов строятся по всей доступной истории. Пять вариантов расчета. Три варианта построения: дневной, недельный, месячный. Для дневных уровней есть возможность смещения по GMT.
 
vdv2001:

使用直接访问函数,MqlRates 是一个 "结构 "的数组,你需要一个Low的数组,这里有一个例子,立即和为High。

这是可以理解的。就我而言,我刚刚写过。

         int k=i; double min=rates[k].low;
         for (int m=i+1;m<=j;m++)
            if (rates[m].low<min) {min=rates[m].low; k=m;}

我不想要一堆数组。这对资源来说是不节俭的,也不是很好......

我只是想确切地了解ArrayMinimum 的情况--是否可以将这个函数用于一个数组的结构....?

 
owl:

这是可以理解的。就我而言,我只是写了。

我不希望有一堆数组...这不是节约资源,也不是很好...

我只是想处理ArrayMinimum--是否可以用这个函数处理一个数组的结构....?

如果你认为在结构数组中存储一堆信息比双数数组更经济,我只是举双手赞成。

struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем 
  };

还是你认为存储整数、低点和日期在内存方面更经济?)

或者从一堆垃圾中挑出你需要的东西更经济,哈哈 ...

 
vdv2001:

如果你认为在一个结构数组中存储一堆信息比一个双数数组更经济,那么我就放弃吧

还是你认为存储整数、低点和日期在内存方面更经济? :))

或者从一堆垃圾中挑出你需要的东西更经济,哈哈 ...

嗯...当然,我对成本效益的看法有点过头了......但是,实际上,我需要MqlRates 的几乎所有信息(也许除了数量,这不是一个事实......)
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 

通常,在我问任何问题之前,我都会通过各种渠道来寻找答案。

但是现在,经过一周的搜索,我意识到我没有答案,我想还没有人遇到过。因此,我提出一个难题。

初始数据。

1)我有一个简单的指标,如水平线和箭头iS7N_SacuL_v3.mq5(附后)。

2)一个试图从该指标aS7N_TIC.mq5接收数据的专家顾问(附后)。

所以!

在五个指标缓冲区 中,只有两个数据被正确返回。

接下来会有详细的解释!!!。

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
附加的文件:
 

仔细观察后,我发现3个和4个指标缓冲区并不总是给出正确的数据(尽管很难说哪些是正确的,哪些是不正确的)。

看看这个图表。在左边的数据窗口中,有图表中指标的数值,下面是专家顾问获得的数值。大部分的价值是相同的,但也有一些更...

在这方面,我已经建议在图表和测试器中使用不同的历史数据。

你怎么看?

 

最后是主要问题!不可能以通常的方式获得1、2和5个指标缓冲区的数据。

问题是,在计算这些数组的数据时,会考虑到以前计算的前几条数据。

当然,在调用指标 时,你可以强制它重新计算N个 即将到来的条形图,而不管prev_calculated 的值如何。

我想,在调用和计算指标值时,prev_calculated 的值不等于0

对于大多数指标来说,这是正确的,因为它节省了资源,但对于给定的例子来说,这是不可行的。

该怎么做?你有什么想法?

另外,你也可以把所有的计算移到专家顾问那里去!这个选项有效,但不一样...我想不把裤子穿在头上。

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 

在专家顾问中使用的是

int resIup = CopyBuffer(iCusHandlI_H4,2,0,1,dBufIup_H4);
从第0条取值,它的指标缓冲区 的值在每个tick上都会改变,直到蜡烛关闭。
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.