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

 

MQL5 iBarShift

根据mql5文档,iBarShift函数返回一个int类型的值。

int#

int类型的大小为4字节(32位)。最小值为-2 147 483 648,最大值为2 147 483 647。


我的iBarShift不想给出一个大于99999的值

我在图表上画了一条趋势线,下面的脚本得到了这条线的起始时间,并输出了该时间的条数。

当该行在历史上的某一点被移回时,输出值停止在99999,如果

boolexact=false// 模式

将其改为true,就会打印出-1,GetLastError = 0

void OnStart()
  {
int total = ObjectsTotal(0, 0, -1);  // Общее кол-во объектов на: /текущий график/главное окно/все типы объектов
datetime time0 = 0; // Время соответствующее началу трендовой линии
string objname = ""; // Имя объекта (трендовой линии)
int shift = 0; // Номер бара, соответствующего времени начала трендовой линии time0

for(int i = total - 1; i >= 0; i--)
     {
     objname = (string)ObjectName(0, i, 0, OBJ_TREND);
     time0 = ObjectGetInteger(0, objname, OBJPROP_TIME, 0);
     shift = iBarShift(NULL, PERIOD_M1, time0, false);
     Comment("shift: ", shift, " Error: ", GetLastError());
     Sleep(2000);
     }
  }

怎么了?

我尝试了不同经纪商的不同图表,从线上读取的时间是正确的,如果我把PERIOD_M1改为M5,例如,那么我需要在历史上进一步移动,以达到99999的目的。

Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Целый тип char занимает в памяти 1 байт (8 бит) и позволяет выразить в двоичной системе счисления 2^8 значений=256. Тип char может содержать как положительные, так и отрицательные значения. Диапазон изменения значений составляет от -128 до 127. uchar # Целый тип uchar также занимает в памяти 1 байт, как и тип char, но в отличие от него, uchar...
附加的文件:
sc1.mq5  3 kb
 
Sunriser:

MQL5 iBarShift

根据mql5文档,iBarShift函数返回一个int类型的值。

int#

int类型的大小为4字节(32位)。最小值为-2 147 483 648,最大值为2 147 483 647。


我的iBarShift不想给出一个大于99999的值

我在图表上画了一条趋势线,下面的脚本得到了这条线的起始时间,并输出了该时间的条数。

当该行在历史上的某一点被移回时,输出值停止在99999,如果

boolexact=false// 模式

将其改为true,就会打印出-1,GetLastError = 0

怎么了?

我尝试了不同经纪商的不同图表,从线上看时间是正确的,如果我把PERIOD_M1改为M5,例如,我需要在历史上进一步移动才能达到99999。

首先检查终端设置中的最大条数。

 
Uladzimir Izerski:

首先检查终端设置中的最大条数。

谢谢你!

原本是10000,改成无限,就成功了。

虽然不是一个明显的东西...

 

帮助创建手柄

事情是这样的

int OnInit()
  {
//-создадим хэндл индикатора
      handle=iAO(name,period);
//-если не удалось создать хэндл
   if(handle==INVALID_HANDLE)
     {
      ...
      return(INIT_FAILED);
     }

问题:手柄的数字(位数)是由什么参数分配的?
重启终端后会不会有什么不同?
在图表重新初始化后,它是否会有所不同?
在什么情况下,它可以改变?

 
Vitaly Muzichenko:

帮助创建手柄

事情是这样的

问题:手柄的数字(位数)是由什么参数分配的?
重启终端后会不会有什么不同?
在图表重新初始化后,它是否会有所不同?
在什么情况下,它可以改变?

如果只有一个指标,它的句柄总是为10。每一个连续的都等于前一个+1,这完全取决于手柄的创建 顺序。 只有当前面的一个人出错时,它才能改变。

 
Alexey Viktorov:

如果你有一个指标,它的手柄总是10。每一个下一个等于前一个+1,这一切都取决于手柄创建的 顺序。只有当前面的一个人出错时,它才能改变。

我明白了,这或多或少都能理解。谢谢你!

 
Vitaly Muzichenko:

帮助创建手柄

有一件事是这样的

问题:手柄的数字(位数)是由什么参数分配的?
重启终端后会不会有什么不同?
在图表重新初始化后会有不同吗?
在什么情况下,它可以改变?

找到答案

Сравниваем скорость самокэширующихся индикаторов
Сравниваем скорость самокэширующихся индикаторов
  • www.mql5.com
Предположим, что нам вдруг наскучил классический MQL5-доступ к индикаторам и захотелось сравнить скорость доступа в сравнении с альтернативными вариантами. Например, сравним его с доступом к индикаторам в стиле MQL4 без кэширования и с кэшированием. Идеи с доступом в MQL4-стиле были взяты из статьи LifeHack для трейдера: готовим фастфуд из...
 
在哪里可以插入一个文件,使其通过继承,对标准库中 的所有文件可见?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 

请告知如何正确地将一个多维数组 传入一个函数。

如果我只是在头文件中指定MyFun( &Mas[][]),编译器在函数体中访问数组元素Mas[j][k]时产生了一个错误......。但怎么做呢?

一元化的似乎没有问题。

 
User_mt5:

请告知如何正确地将一个多维数组 传入一个函数。

如果我只是在头文件中指定MyFun( &Mas[][]),编译器在函数体中访问数组元素Mas[j][k]时产生了一个错误......。但怎么做呢?

一维数组似乎没有问题。

第二个和下一个数组的尺寸不能是动态的。因此,它必须是MyFun(int &Mas[][7])声明为一个数组,例如,int Mas[][7];所以它应该被接收。