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

 

MqlRates rates[];

rates[0].open> rates[0].close

Подскажите пожалуйста, как организовать проверку этого условия на текущем таймфрейме и сразу ещё на нескольких, двух, трёх, пяти. Как сильно это сказывается на производительности тестирования?  Буду рад ссылке на мультифреймовый советник или индикатор MT5.

 
Николай К:

MqlRates rates[];

rates[0].open> rates[0].close

Подскажите пожалуйста, как организовать проверку этого условия на текущем таймфрейме и сразу ещё на нескольких, двух, трёх, пяти. Как сильно это сказывается на производительности тестирования?  Буду рад ссылке на мультифреймовый советник или индикатор MT5.

Массив rates_tf_**[] для каждого тф и CopyRates также для каждого тф в соответствующий массив структур. Как сказывается на скорости тестирования… Вопрос ещё тот. Но ведь ничего другого не дано. Или просто я не знаю…
 


КОД

FileWrite(file_handle, Period());

на ТФ 5 минут показывает 5

НА ТФ 15 мин =15

А на ТФ 1Ч =1536

4ч  = 16388

Почему так?

 
Aleksei Skrypnev:


КОД

на ТФ 5 минут показывает 5

НА ТФ 15 мин =15

А на ТФ 1Ч =1536

Почему так?

Сначала смотрим Period()

... Значение может быть одним из значений перечисления ENUM_TIMEFRAMES:

Идентификатор

Описание

PERIOD_CURRENT

Текущий период

PERIOD_M1

1 минута

PERIOD_M2

2 минуты

PERIOD_M3

3 минуты

PERIOD_M4

4 минуты

PERIOD_M5

5 минут

PERIOD_M6

6 минут

PERIOD_M10

10 минут

PERIOD_M12

12 минут

PERIOD_M15

15 минут

PERIOD_M20

20 минут

PERIOD_M30

30 минут

PERIOD_H1

1 час

PERIOD_H2

2 часа

PERIOD_H3

3 часа

PERIOD_H4

4 часа

PERIOD_H6

6 часов

PERIOD_H8

8 часов

PERIOD_H12

12 часов

PERIOD_D1

1 день

PERIOD_W1

1 неделя

PERIOD_MN1

1 месяц


Обратите внимание: "одно из значений ПЕРЕЧИСЛЕНИЯ ...". То есть это может быть PERIOD_H6 или PERIOD_M1 или любое значение из ПЕРЕЧИСЛЕНИЯ. А вот внутренне представления перечисления - это вообще никого не должно интересовать. Сегодня это '15', а завтра может стать "15478899662'. Но Вам, как программиста это вообще не должно волновать - Вы должны работать со значениями (PERIOD_M4, PERIOD_M15 ...), а не со внутренним представлением.

Документация по MQL5: Проверка состояния / Period
Документация по MQL5: Проверка состояния / Period
  • www.mql5.com
Period - Проверка состояния - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

Сначала смотрим Period()

... Значение может быть одним из значений перечисления ENUM_TIMEFRAMES:



Обратите внимание: "одно из значений ПЕРЕЧИСЛЕНИЯ ...". То есть это может быть PERIOD_H6 или PERIOD_M1 или любое значение из ПЕРЕЧИСЛЕНИЯ. А вот внутренне представления перечисления - это вообще никого не должно интересовать. Сегодня это '15', а завтра может стать "15478899662'. Но Вам, как программиста это вообще не должно волновать - Вы должны работать со значениями (PERIOD_M4, PERIOD_M15 ...), а не со внутренним представлением.

Я думал в файл запишется что-то более понятное)

 Более понятно(как раз вида Perod_H1)   в файл не записать по простому?

 
Aleksei Skrypnev:

Я думал в файл запишется что-то более понятное)

 Более понятно(как раз вида Perod_H1)   в файл не записать по простому?

Если нужно чтобы было очень понятно - пишите в файл в виде текста 'PERIOD_H1' и тому подобное.

 

всем добрый день! такая вот проблема случилась! тестировал советника на МТ4, весь день тестировал, в итоге смотрю к вечеру не осталось памяти на жёстком диске, сразу понял что это из-за тестов, решил почистить , зашёл в винде в папку  MetaQuotes, и поудалял дурак там многое, в итоге все платформы слетели, и мт4 и мт5, штук 10 было в общем количестве, они запускаются, но они совсем "чистые" -ни индикаторов из маркета, ни советников, ничего нет! мне был дорог один советник в одном терминале мт5, копию я не сохранял, активаций нет больше, что делать ?!

решил при помощи программы восстановить удалённые файлы, файл советника удалось восстановить, закинув в папку expert при обновлениии терминал его просто не видит, а скачать с аккаунта маркета просто не получается, пишет установка не удалась! может кто сталкивался с таким? подскажите

Файлы:
 

Помогите пожалуйста справиться с одной проблемой! 

Я только учусь писать коды и в связи с этим прошу Вас быть снисходительными к моей не грамотности.

  

Помогите разобраться с функцией OnChartEvent, которая при изменении тайм фрейма, или изменении настроек в меню индикатора - будет обновлять графические объекты на графике, а при закрытии индикатора - будет полностью удалять с графика все графические объекты - этого индикатора. 

Я так понял, что надо сперва удалить графические объекты, а потом обратно создать. Но, если объекты удалены, то доступ к его свойствам уже отсутствует и тогда,  как по новой создать эти объекты....... , или я что то не понимаю ? А может быть есть другой способ - обновления графических объектов на графике?

Прошу Вас написать пример с комментариями, как это сделать.


 
Sprut 185:

Помогите пожалуйста справиться с одной проблемой! 

Я только учусь писать коды и в связи с этим прошу Вас быть снисходительными к моей не грамотности.

  

Помогите разобраться с функцией OnChartEvent, которая при изменении тайм фрейма, или изменении настроек в меню индикатора - будет обновлять графические объекты на графике, а при закрытии индикатора - будет полностью удалять с графика все графические объекты - этого индикатора. 

Я так понял, что надо сперва удалить графические объекты, а потом обратно создать. Но, если объекты удалены, то доступ к его свойствам уже отсутствует и тогда,  как по новой создать эти объекты....... , или я что то не понимаю ? А может быть есть другой способ - обновления графических объектов на графике?

Прошу Вас написать пример с комментариями, как это сделать.


Не сочтите за грубость, но ведь в документации есть все примеры. Вам только надо обратить внимание на функции ObjectSet*** которые изменяют параметры графического объекта.

Документация по MQL5: Графические объекты / ObjectSetDouble
Документация по MQL5: Графические объекты / ObjectSetDouble
  • www.mql5.com
ObjectSetDouble - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Не сочтите за грубость, но ведь в документации есть все примеры. Вам только надо обратить внимание на функции ObjectSet*** которые изменяют параметры графического объекта.

Спасибо за участие.

К сожалению функция  ObjectSet***  не подошла для моей задачи.

С проблемой разобрался сам с помощью функции OnDeinit().
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll (0, -1, -1);
  }

теперь всё работает - как надо.

Причина обращения: