[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 308
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Решение действительно оригинальное, надо попробовать. Вот только при переобъявлении массива не потеряются ли данные из-за переинициализации?
При увеличении размера массива данные, внесённые ранее, не теряются. А "захваченные" (новые) ячейки будут содержать мусор оперативной памяти. Если же массив урезать, то данные, которые лежали в урезаемых ячейках будут безвозвратно потеряны. Это азы программирования.
через какое время отложенный ордер MODE_TRADE, становиться MODE_HISTORY?
Через никакое. Отложенные ордера в истории не сохраняются.
Как только он преобразуется в рыночный и будет закрыт - вот тогда он и станет в истории, но уже с типом не отложенного, а рыночного.
Например:
Если был OP_BUYSTOP, затем он преобразовался в OP_BUY. После его закрытия он попадёт в историю.
НО, после преобразования из OP_BUYSTOP в OP_BUY, первоначальный OP_BUYSTOP в истории не будет.
Добрый вечер! Подскажите пожалуйста. Есть два значения индикатора на разных барах. Как провести линию через них и как с ней работать в индикаторе? Спасибо!
Линию провести меж ними можно, при помощи объекта OBJ_TREND. Первая координата - время и цена первого бара, вторая координата - время и цена второго бара.
Функция:
Надеюсь, тут всё ясно в ней.
cl - цвет объекта, nm - имя объекта, t1, p1 - координаты начала, t2, p2 - координаты конца, st - стиль линии, sz - размер.
Можете добавить ещё и ray: 1 - луч, 0 - отрезок. В последней строке данной функции задан отрезок. Вместо 0 можно поставить имя передаваемого параметра.
А вот насчёт того, как с ней (с этой линией) работать в индикаторе - тут нужно знать, чего вам от неё нужно. Но данные о ней (линии) можно брать, используя стандартную функцию
ObjectGet("имя объекта",нужное свойство объекта);
Линию провести меж ними можно, при помощи объекта OBJ_TREND. Первая координата - время и цена первого бара, вторая координата - время и цена второго бара.
Функция:
Надеюсь, тут всё ясно в ней.
cl - цвет объекта, nm - имя объекта, t1, p1 - координаты начала, t2, p2 - координаты конца, st - стиль линии, sz - размер.
Можете добавить ещё и ray: 1 - луч, 0 - отрезок. В последней строке данной функции задан отрезок. Вместо 0 можно поставить имя передаваемого параметра.
А вот насчёт того, как с ней (с этой линией) работать в индикаторе - тут нужно знать, чего вам от неё нужно. Но данные о ней (линии) можно брать, используя стандартную функцию
ObjectGet("имя объекта",нужное свойство объекта);
Большое спасибо! Еще вопрос, если можно. Как работать (нужно знать какое значение принимает трендовая на определенном баре), как работать стрендовой в советнике. iCustom тормозит хочу часть индикатора перенести в советник(расчеты).
Решение действительно оригинальное, надо попробовать.
Пожалуй процитирую Вам маленький кусочек текста из учебника по Делфи. Это знать не помешает.
"Динамические массивы " являются динамическими структурами данных, поэтому по окончании работы с ними в программе должно быть предусмотрено явное удаление их из памяти компьютера. Процесс удаления ненужных динамических переменных из памяти компьютера иногда называют уборкой мусора."
Вариант, который подойдёт для языка MQL4 - это изменить размерность динамического массива до нулевой длины с помощью функции ArrayResize() https://docs.mql4.com/ru/array/ArrayResize по окончании работы с ним.
Пожалуй процитирую Вам маленький кусочек текста из учебника по Делфи. Это знать не помешает.
"Динамические массивы " являются динамическими структурами данных, поэтому по окончании работы с ними в программе должно быть предусмотрено явное удаление их из памяти компьютера. Процесс удаления ненужных динамических переменных из памяти компьютера иногда называют уборкой мусора."
Вариант, который подойдёт для языка MQL4 - это изменить размерность динамического массива до нулевой длины с помощью функции ArrayResize() https://docs.mql4.com/ru/array/ArrayResize по окончании работы с ним.
Это всё правильно: мусор за собой подчищать - правило хорошего тона...
Только в данном контексте как определить, что вот сейчас "мусор" подчистить нужно или наоборот: это не мусор - это нужные данные для дальнейших расчётов.
Как я понимаю, выполнять за собой уборку нужно в deinit(), но... он исполняется не только при удалении графика торгового инструмента, снятии с него советника, но и при смене рабочего ТФ. В данном случае все накопленные данные для ТФ будут утеряны и при возврате на прежний таймфрейм, советник начнёт работу заново с нулевым массивом. То же произойдёт и при изменении любого из параметров советника.
Получается, что в некоторых ситуациях "уборка мусора" - сложный логический процесс, а не простое изменение размера массива.
Большое спасибо! Еще вопрос, если можно. Как работать (нужно знать какое значение принимает трендовая на определенном баре), как работать стрендовой в советнике. iCustom тормозит хочу часть индикатора перенести в советник(расчеты).
ObjectGetValueByShift() вам в помощь
А уж как вы там с ней работать собираетесь - только вам и известно...