Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1044

 
Galim_V:

Есть простое программное решение моей проблемы?

Есть!


 
Yevhenii Levchenko:

Есть!


Спасибо, что ответили. Да, мы узнаем текущее значение свопа. А мне нужен результат сравнения со вчерашним значением.

 
Galim_V:

Спасибо, что ответили. Да, мы узнаем текущее значение свопа. А мне нужен результат сравнения со вчерашним значением.

Сохраните вчерашнее значение в переменной и сравнивайте! :)

 
Yevhenii Levchenko:

Сохраните вчерашнее значение в переменной и сравнивайте! :)

При перезапуске терминала разве она сохранится? Или вы о глобальной переменной терминала?

 
Galim_V:

При перезапуске терминала разве она сохранится? Или вы о глобальной переменной терминала?

Нет, не сохранятся. Чтобы сохранялись нужно нужно либо глобальную переменную, либо сохранять у файл
 
Yevhenii Levchenko:
Нет, не сохранятся. Чтобы сохранялись нужно нужно либо глобальную переменную, либо сохранять у файл

Я мастерил информ-панель, но исходники утратил. При этом избегал всяких записей, пользовался функциями информерами. Решил все восстановить и добавить эту проблему со свопом. Поэтому и задал вопрос. Не оставляет ли своп следов в истории, которую пишет сам терминал? Но если другого варианта, кроме записи нет, хотелось бы получить подсказку,поскольку с файлами и глобальной не работал. Учитывая, что сравнивать нужно раз в сутки по 20-ти инструментам. Спасибо за время.

 
Galim_V:

Я мастерил информ-панель, но исходники утратил. При этом избегал всяких записей, пользовался функциями информерами. Решил все восстановить и добавить эту проблему со свопом. Поэтому и задал вопрос. Не оставляет ли своп следов в истории, которую пишет сам терминал? Но если другого варианта, кроме записи нет, хотелось бы получить подсказку,поскольку с файлами и глобальной не работал. Учитывая, что сравнивать нужно раз в сутки по 20-ти инструментам. Спасибо за время.

Проще глобальную переменную... С файлами мороки больше...
 

Доделал индикатор на мт5 (переводил с мт4). Вчера об этом писал. У меня нормально работал, а у клиента - плохо. Проблемы вылетали, как я понимаю, когда индикатор добавлял или удалял программно другие индикаторы. Я грешу на функцию IndicatorRelease... Во время деинициализации происходит удаление индикаторов (кроме текущего) из графика через  ChartIndicatorDelete, затем освобождение хэндла через IndicatorRelease. В справке указано:

IndicatorRelease()

Удаляет хэндл индикатора и освобождает расчетную часть индикатора, если ею больше никто не пользуется.
Функция позволяет удалять хэндл индикатора, если он больше не нужен, и таким образом позволяет экономить память. Удаление хендла производится сразу, 
удаление расчетной части индикатора производится через некоторое небольшое время (если обращений к ней больше нет). 

Во время инициализации, хэндлы создаются обратно. И при первом подсчете в OnCalculate индикаторы вновь добавляются на график. Я добавил пустой цикл в OnDeinit на 1000 проходов, чтобы добавить какую-то задержку. У меня нет уверенности в этом решении. У меня и раньше работало нормально (хотя сегодня раз завис терминал), а у клиента начал работать сегодня нормально (по крайней мере пока что).

Алгоритм на мт4 работает нормально (там не висло ни разу). Отличие мт5 в том, что здесь программно добавляются индикаторы (и расчетные значения индикаторов нужно постоянно копировать, чтоб ими пользоваться). Тогда как в мт4 просто копировались буферы для визуализации (мувинги и зиг-заг... типа "программное добавление" индикаторов).

Подскажите, может ли быть проблема связана с удалением и повторным созданием хэндлов (при смене параметров деинициализация и инициализация же сразу шуруют друг за другом...)? Можно как-то проверить программно, есть ли хэндл такого индикатора или нет?

 

У меня после нормализации всё равно выскакивают не нормализованные значения - MQL5

up    = NormalizeDouble((up == 0 ? 1 * point : up),_Digits);
down  = NormalizeDouble((down == 0 ? 1 * point : down),_Digits);
sum   = NormalizeDouble((sum == 0 ? 1 * point : sum),_Digits);
minus = NormalizeDouble((minus == 0 ? 1 * point : minus),_Digits);
if(index <= 65 && index >= 55) Print(index," ",up," ",down," ",sum," ",minus);

Наиболее неблагоприятное 1е-05, Что делать?

 

Подскажите как решить проблему с вызовом индикатора на МТ5 windows 10 X64, делаю вот таким способом:

#resource "\\Indicators\\MyIndicator.ex5"

handle=iCustom(NULL,0,"\\Indicators\\MyIndicator");

Раньше работало и без #resource, потом с #resource только стало работать, сейчас ни чего не получается, пишет ошибку 4804

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