Артем, подскажите, пожалуйста, где можно прочитать про данные проверки. Или если есть примеры кода. Ранее обходился без таких проверок.
Я так понимаю, синхронизацию данных необходимо проводить перед запуском основного кода программы. А вот провеверку, что возвращают iTime() и iLow() ....
Если правильно понял Артёма, то:
datetime time_ = iTime(Symbol(),Period(),20);
double price_ = iLow(Symbol(),Period(),20);
if(time_ > 0 && price_ > 0)
{
// далее выполняем то, что планировалось выполнить
}
Eugeni Neumoin #: А вот если не синхронизировано с сервером, то можно получить от данных функций значения и >0, но, тем не менее, неправильные.
Так глубоко не копал. Перед проверкой просто делал сброс последней ошибки:
ResetLastError(); // сбросим значение последней ошибки в ноль
а потом ставил проверку на синхронизированность:
//--- проверка синхронизированности данных по текущему символу между терминалом и серверомif(!SymbolIsSynchronized(_Symbol))
{
Print("Ошибка синхронизированности данных по текущему символу! ",GetLastError());
return;
}
Есть проблема с переводом индикатора с MQL4 на MQL5.
В свое время в 2009 - 2015 годах насоздавал много индикаторов для терминала МТ4. Все они распространялись в свободном доступе.
Индикаторы, скажем так, не самые простые. В последние годы обращаются с просьбами перевести некоторые индикаторы.
В частности, есть такой индикатор - MZZ9 - выводит зигзаги со старших таймфреймов на текущий таймфрейм. Где-то в 2019 году пытался перевести его на MQL5. Тогда не получилось.
Сейчас опять возобновил попытки. Проверяю. Рачеты делаются - в буферы данные поступают. Но на график зигзаги не выводятся.
Смотрел и документацию, и тексты индикаторов из поставки метатрейдера 5. Перепробовал разные варианты задания параметров зигзагов... и через #property, и динамическое задание.
Не вовыдится.
Буду благодарен, если кто поможет понять, где я ошибаюсь.
Выкладываю два варианта. Один вариант - версия под МТ4 - одна из последних версий.
И версия под МТ5 - переделана из какой-то более раннней версии идикатора под МТ4.
Есть проблема с переводом индикатора с MQL4 на MQL5.
В свое время в 2009 - 2015 годах насоздавал много индикаторов для терминала МТ4. Все они распространялись в свободном доступе.
Индикаторы, скажем так, не самые простые. В последние годы обращаются с просьбами перевести некоторые индикаторы.
В частности, есть такой индикатор - MZZ9 - выводит зигзаги со старших таймфреймов на текущий таймфрейм. Где-то в 2019 году пытался перевести его на MQL5. Тогда не получилось.
Сейчас опять возобновил попытки. Проверяю. Рачеты делаются - в буферы данные поступают. Но на график зигзаги не выводятся.
Смотрел и документацию, и тексты индикаторов из поставки метатрейдера 5. Перепробовал разные варианты задания параметров зигзагов... и через #property, и динамическое задание.
Не вовыдится.
Буду благодарен, если кто поможет понять, где я ошибаюсь.
Выкладываю два варианта. Один вариант - версия под МТ4 - одна из последних версий.
И версия под МТ5 - переделана из какой-то более раннней версии идикатора под МТ4.
Инициализация должна быть закончена return(INIT_SUCCEEDED);
Alexey Viktorov #: Инициализация должна быть закончена return(INIT_SUCCEEDED);
... Тяжело разобраться… Непривычно…
Функция инициализации может быть типа void или int. Почему она должна быть закончена return(INIT_SUCCEEDED); ? И что это дает? Это же индикатор, а не советник.
К тому же индикатор, как было написано, заполняет индикаторные буферы. То есть инициализация проходит успешно.
...........
Это одна из самых простых моих программ... Можно сказать, самая простая...
Артем, подскажите, пожалуйста, где можно прочитать про данные проверки. Или если есть примеры кода. Ранее обходился без таких проверок.
Я так понимаю, синхронизацию данных необходимо проводить перед запуском основного кода программы. А вот провеверку, что возвращают iTime() и iLow() ....
Если правильно понял Артёма, то:
С уважением, Владимир.
Если правильно понял Артёма, то:
С уважением, Владимир.
Похоже на то. А если значение будет ==0, то .... вариантов несколько:
1.Прерывать выполнение модуля/подпрограммы...
2. Выход из обработчика события
....
А вот если не синхронизировано с сервером, то можно получить от данных функций значения и >0, но, тем не менее, неправильные.
А вот если не синхронизировано с сервером, то можно получить от данных функций значения и >0, но, тем не менее, неправильные.
Так глубоко не копал. Перед проверкой просто делал сброс последней ошибки:
а потом ставил проверку на синхронизированность:
и этого вполне хватало.
С уважением, Владимир.
Похоже на то. А если значение будет ==0, то .... вариантов несколько:
1.Прерывать выполнение модуля/подпрограммы...
2. Выход из обработчика события
....
А вот если не синхронизировано с сервером, то можно получить от данных функций значения и >0, но, тем не менее, неправильные.
если с сервером не синхронизировано, значит нет связи
а если нет связи, то и отдать торговый приказ не получится
все на поверхности и все правильно
если с сервером не синхронизировано, значит нет связи
а если нет связи, то и отдать торговый приказ не получится
все на поверхности и все правильно
Рена, как можно проверить синхронность данных при отсутствии связи?
Логика нарушена.
Рена, как можно проверить синхронность данных при отсутствии связи?
Логика нарушена.
а серверов (адресов/портов/процессов) физически 2.
Один транслирует котировки и данные, второй исполняет приказы и отдаёт их результаты.
может быть даже 3-й который хранит и отдаёт историю.
Это просто нормальная организация процесса.
Достопамятный FIX - транслирует потоки, его собрат FAST исполняет приказы
---
Ситуации когда котировки идут, а приказы никак и даже наоборот приказы исполняются а котировки подзаткнулись встречаются в реальной жизни.
а серверов (адресов/портов/процессов) физически 2.
Один транслирует котировки и данные, второй исполняет приказы и отдаёт их результаты.
может быть даже 3-й который хранит и отдаёт историю.
Это просто нормальная организация процесса.
Достопамятный FIX - транслирует потоки, его собрат FAST исполняет приказы
---
Ситуации когда котировки идут, а приказы никак и даже наоборот приказы исполняются а котировки подзаткнулись встречаются в реальной жизни.
Не знал что бывает по нескольку серверов с разделением по функциям. Спасибо за науку.
Есть проблема с переводом индикатора с MQL4 на MQL5.
В свое время в 2009 - 2015 годах насоздавал много индикаторов для терминала МТ4. Все они распространялись в свободном доступе.
Индикаторы, скажем так, не самые простые. В последние годы обращаются с просьбами перевести некоторые индикаторы.
В частности, есть такой индикатор - MZZ9 - выводит зигзаги со старших таймфреймов на текущий таймфрейм. Где-то в 2019 году пытался перевести его на MQL5. Тогда не получилось.
Сейчас опять возобновил попытки. Проверяю. Рачеты делаются - в буферы данные поступают. Но на график зигзаги не выводятся.
Смотрел и документацию, и тексты индикаторов из поставки метатрейдера 5. Перепробовал разные варианты задания параметров зигзагов... и через #property, и динамическое задание.
Не вовыдится.
Буду благодарен, если кто поможет понять, где я ошибаюсь.
Выкладываю два варианта. Один вариант - версия под МТ4 - одна из последних версий.
И версия под МТ5 - переделана из какой-то более раннней версии идикатора под МТ4.
Есть проблема с переводом индикатора с MQL4 на MQL5.
В свое время в 2009 - 2015 годах насоздавал много индикаторов для терминала МТ4. Все они распространялись в свободном доступе.
Индикаторы, скажем так, не самые простые. В последние годы обращаются с просьбами перевести некоторые индикаторы.
В частности, есть такой индикатор - MZZ9 - выводит зигзаги со старших таймфреймов на текущий таймфрейм. Где-то в 2019 году пытался перевести его на MQL5. Тогда не получилось.
Сейчас опять возобновил попытки. Проверяю. Рачеты делаются - в буферы данные поступают. Но на график зигзаги не выводятся.
Смотрел и документацию, и тексты индикаторов из поставки метатрейдера 5. Перепробовал разные варианты задания параметров зигзагов... и через #property, и динамическое задание.
Не вовыдится.
Буду благодарен, если кто поможет понять, где я ошибаюсь.
Выкладываю два варианта. Один вариант - версия под МТ4 - одна из последних версий.
И версия под МТ5 - переделана из какой-то более раннней версии идикатора под МТ4.
Инициализация должна быть закончена return(INIT_SUCCEEDED);
А у вас¿¿¿
Дальше смотреть не буду. Стиль написания как-то не по мне… Тяжело разобраться… Непривычно…
Alexey Viktorov #:
Инициализация должна быть закончена return(INIT_SUCCEEDED);
... Тяжело разобраться… Непривычно…
Функция инициализации может быть типа void или int. Почему она должна быть закончена return(INIT_SUCCEEDED); ? И что это дает? Это же индикатор, а не советник.
К тому же индикатор, как было написано, заполняет индикаторные буферы. То есть инициализация проходит успешно.
...........
Это одна из самых простых моих программ... Можно сказать, самая простая...