[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 308

 
А какое сейчас время в США? во сколько по МСК они сейчас открыватся/закрываются.. какое время в Японии во сколько открытие/закрытие по МСк ? Просто с этой отменой зимнего времени немного не ясно.. и переводят ли Европа, Азия, Сша часы ?
 
Elenn:
Решение действительно оригинальное, надо попробовать. Вот только при переобъявлении массива не потеряются ли данные из-за переинициализации?

При увеличении размера массива данные, внесённые ранее, не теряются. А "захваченные" (новые) ячейки будут содержать мусор оперативной памяти. Если же массив урезать, то данные, которые лежали в урезаемых ячейках будут безвозвратно потеряны. Это азы программирования.
 
vilard:

через какое время отложенный ордер MODE_TRADE, становиться MODE_HISTORY?

Через никакое. Отложенные ордера в истории не сохраняются.

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

Например:

Если был OP_BUYSTOP, затем он преобразовался в OP_BUY. После его закрытия он попадёт в историю.

НО, после преобразования из OP_BUYSTOP в OP_BUY, первоначальный OP_BUYSTOP в истории не будет.

 
001:

Добрый вечер! Подскажите пожалуйста. Есть два значения индикатора на разных барах. Как провести линию через них и как с ней работать в индикаторе? Спасибо!

Линию провести меж ними можно, при помощи объекта OBJ_TREND. Первая координата - время и цена первого бара, вторая координата - время и цена второго бара.

Функция:

//+----------------------------------------------------------------------------+
void SetTLine(color cl, string nm, datetime t1=0, double p1=0, datetime t2=0, double p2=0, int st=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TREND, 0, 0, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_TIME2    , t2);
   ObjectSet(nm, OBJPROP_PRICE2   , p2);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_STYLE    , st);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
   ObjectSet(nm, OBJPROP_RAY      , 0);
}
//+----------------------------------------------------------------------------+

Надеюсь, тут всё ясно в ней.

cl - цвет объекта, nm - имя объекта, t1, p1 - координаты начала, t2, p2 - координаты конца, st - стиль линии, sz - размер.

Можете добавить ещё и ray: 1 - луч, 0 - отрезок. В последней строке данной функции задан отрезок. Вместо 0 можно поставить имя передаваемого параметра.

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

ObjectGet("имя объекта",нужное свойство объекта);

 
artmedia70:

Линию провести меж ними можно, при помощи объекта OBJ_TREND. Первая координата - время и цена первого бара, вторая координата - время и цена второго бара.

Функция:

Надеюсь, тут всё ясно в ней.

cl - цвет объекта, nm - имя объекта, t1, p1 - координаты начала, t2, p2 - координаты конца, st - стиль линии, sz - размер.

Можете добавить ещё и ray: 1 - луч, 0 - отрезок. В последней строке данной функции задан отрезок. Вместо 0 можно поставить имя передаваемого параметра.

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

ObjectGet("имя объекта",нужное свойство объекта);


Большое спасибо! Еще вопрос, если можно. Как работать (нужно знать какое значение принимает трендовая на определенном баре), как работать стрендовой в советнике. iCustom тормозит хочу часть индикатора перенести в советник(расчеты).
 
Доброе утро!!! Не могу войти на счет! Что за х. эта "общая ашибка"?
 
Неужели обратно что-то с компом?
 
Elenn:
Решение действительно оригинальное, надо попробовать.


Пожалуй процитирую Вам маленький кусочек текста из учебника по Делфи. Это знать не помешает.

"Динамические массивы " являются динамическими структурами данных, поэтому по окончании работы с ними в программе должно быть предусмотрено явное удаление их из памяти компьютера. Процесс удаления ненужных динамических переменных из памяти компьютера иногда называют уборкой мусора."

Вариант, который подойдёт для языка MQL4 - это изменить размерность динамического массива до нулевой длины с помощью функции ArrayResize() https://docs.mql4.com/ru/array/ArrayResize по окончании работы с ним.

 
drknn:


Пожалуй процитирую Вам маленький кусочек текста из учебника по Делфи. Это знать не помешает.

"Динамические массивы " являются динамическими структурами данных, поэтому по окончании работы с ними в программе должно быть предусмотрено явное удаление их из памяти компьютера. Процесс удаления ненужных динамических переменных из памяти компьютера иногда называют уборкой мусора."

Вариант, который подойдёт для языка MQL4 - это изменить размерность динамического массива до нулевой длины с помощью функции ArrayResize() https://docs.mql4.com/ru/array/ArrayResize по окончании работы с ним.

Это всё правильно: мусор за собой подчищать - правило хорошего тона...

Только в данном контексте как определить, что вот сейчас "мусор" подчистить нужно или наоборот: это не мусор - это нужные данные для дальнейших расчётов.

Как я понимаю, выполнять за собой уборку нужно в deinit(), но... он исполняется не только при удалении графика торгового инструмента, снятии с него советника, но и при смене рабочего ТФ. В данном случае все накопленные данные для ТФ будут утеряны и при возврате на прежний таймфрейм, советник начнёт работу заново с нулевым массивом. То же произойдёт и при изменении любого из параметров советника.

Получается, что в некоторых ситуациях "уборка мусора" - сложный логический процесс, а не простое изменение размера массива.

 
001:

Большое спасибо! Еще вопрос, если можно. Как работать (нужно знать какое значение принимает трендовая на определенном баре), как работать стрендовой в советнике. iCustom тормозит хочу часть индикатора перенести в советник(расчеты).

ObjectGetValueByShift() вам в помощь

А уж как вы там с ней работать собираетесь - только вам и известно...

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