Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 141

 
forexman77:

Спасибо огромное! Работает.

Объясните логику mql5. В mql4, чтобы определить время в часах используется  int Hour(), в пятерке такой константы нет, насколько я понял.

1.Как программа распознает, что мы спрашиваем время в часах? Предполагаю, что из MqlDateTime?

2.Чтобы добавить текущее время в минутах к текущему времени в часах, то есть узнать текущее время в минутах, конструкция будет такой:

 

1. Да

2. Правильно.

 

Второй день переделываю советника с mql4 на mql5.

1. Необходимо найти время открытия дневного бара в секундах от 01.01.1970. Нашел на форуме функцию:

//--- переменные для указания параметров функции
int start = 0; // индекс бара
int count = 1; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime(_Symbol,PERIOD_D1,start,count,tp);
//--- вывод результата
Alert(tp[0]);

Не совсем понятно функция находит время последнего или первого бара?

Время выводится, что нужно, начало торгового дня, в виде даты и времени.

2.Как преобразовать время из первого вопроса в секунды от 01.01.1970. Нашел функцию StringToTime вроде она сделает, то что надо, но перепробовав различные комбинации, чувствую себя словно шимпанзе, не знающим нажать какую кнопку, чтобы дверка к яблоку открылась.

3.  В mql5 нет функций iBarShift, iLow, iLowest основная проблема в построении кода у меня в них. Подскажите, как каждый день находить минимум на определенном промежутке времени или к каким функциям в mql5 нужно обратиться, чтобы реализовать эту задачу?

Документация по MQL5: Преобразование данных / StringToTime
Документация по MQL5: Преобразование данных / StringToTime
  • www.mql5.com
Преобразование данных / StringToTime - Документация по MQL5
 
forexman77:

Второй день переделываю советника с mql4 на mql5.

1. Необходимо найти время открытия дневного бара в секундах от 01.01.1970. Нашел на форуме функцию:

2. Как преобразовать время из первого вопроса в секунды от 01.01.1970. Нашел функцию StringToTime вроде она сделает, то что надо, но перепробовав различные комбинации, чувствую себя словно шимпанзе, не знающим нажать какую кнопку, чтобы дверка к яблоку открылась.

3. В mql5 нет функций iBarShift, iLow, iLowest основная проблема в построении кода у меня в них. Подскажите, как каждый день находить минимум на определенном промежутке времени или к каким функциям в mql5 нужно обратиться, чтобы реализовать эту задачу?

1,2. Читаем здесь.

3. Читаем тут.

 
DC2008:

1,2. Читаем здесь.

3. Читаем тут.

По второму вопросу. Перечитал  все по datetime. "Тип datetime предназначен для хранения даты и времени в виде количества секунд, прошедших с 01 января 1970 года."

Почему тогда при вызове алерта выводится: 2013.10.02 00:00:00, а не количество секунд.

 
forexman77:

По второму вопросу. Перечитал  все по datetime. "Тип datetime предназначен для хранения даты и времени в виде количества секунд, прошедших с 01 января 1970 года."

Почему тогда при вызове алерта выводится: 2013.10.02 00:00:00, а не количество секунд.

Теперь читаем здесь. Для вывода в алерте, нужно привести тип datetime к типу int.

 
DC2008:

Теперь читаем здесь. Для вывода в алерте, нужно привести тип datetime к типу int.

Сделал конструкцию такой:

int start = 0; // индекс бара
int count = 1; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime(_Symbol,PERIOD_D1,start,count,tp);
//--- вывод результата
int st=tp[0];
Alert("st=",st);

сравнил с показателем на метатрейдер 4, получается одинаковое число.

Только вот выходит сообщение желтым цветом при компиляции mql5:

possible loss of data due to type conversion(возможна потеря данных из-за преобразованию типов) 

Пробовал сделать так:

int start = 0; // индекс бара
int count = 1; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime(_Symbol,PERIOD_D1,start,count,tp);
//--- вывод результата
Alert(IntegerToString(tp[0]));
Ошибок нет. Но не знаю, куда прилепить  IntegerToString, чтобы получить значение без алерта, так как оно будет использоваться советником для вычислений. Только не понял это будет значение  строковое, то есть можно его будет использовать в качестве сравнения с другим числом?
 
forexman77:

Сделал конструкцию такой:

сравнил с показателем на метатрейдер 4, получается одинаковое число.

Только вот выходит сообщение желтым цветом при компиляции mql5:

possible loss of data due to type conversion(возможна потеря данных из-за преобразованию типов) 

 Да всё проще!

//--- вывод результата
Alert("st=",(int)tp[0]);
 

подскажите как можно создать сигнал, если я был подписан когда-то на другой?

Т.е. я уже отписался от него. Неужели это невозможно?

Сделал 100% меньше чем за 2 недели и не могу поделиться ни с кем( 

 
тоже этот вопрос интересен
 
DC2008:

 Да всё проще!

Все-таки мне нужна будет переменная "st" не только в Alert, но и для вычислений, а при компиляции выходит предупреждение "возможна потеря данных из-за преобразованию типов".

Предполагаю, потому, что получается 10 значное число, а в int максимальное значение 2 147 483 647, у меня на данный момент получается 1 380 758 400. Может имеет смысл использовать long и наверное советник будет в этой части будет потреблять много ресурсов? 

Документация по MQL5: Общие функции / Alert
Документация по MQL5: Общие функции / Alert
  • www.mql5.com
Общие функции / Alert - Документация по MQL5
Причина обращения: