Особенности языка mql5, тонкости и приёмы работы - страница 333

 
Alain Verleyen #:
Что делать?

Прошу передать в MQ просьбу с добавлением такого функционала, может быть это возможно реализовать. Я думаю, что возможно.

До завершения деинициализации я хочу изменить некоторые графические объекты на графике в зависимости он новых символа и периода.

Я, конечно, могу это сделать в последующем OnInit, но я хочу делать это ещё в OnDeinit, чтобы быстрее видеть изменения в графических объектах на графике.

 
Andrei Iakovlev #:

Пожалуйста, передайте в MQ запрос с добавлением такой функциональности, возможно, ее удастся реализовать. Я думаю, что это возможно.

Перед завершением деинициализации я хочу изменить некоторые графические объекты на графике в зависимости от его нового характера и периода.

Конечно, я могу сделать это в последующем OnInit, но я хочу сделать это и в OnDeinit, чтобы быстрее видеть изменения графических объектов на графике.

Это не имеет смысла, извините.
 
Комментарии, не относящиеся к этой теме, были перенесены в "Новая версия платформы MetaTrader 5 build 5830: общие улучшения".
 
Комментарии, не относящиеся к этой теме, были перенесены в "Новая версия платформы MetaTrader 5 build 5830: общие улучшения".
 
Botan626 #:

Например, если вы добавите в график в таком порядке, то получите следующее сообщение.

Исправлено в сборке 5867.
 
На базе данного обсуждения сделал быстрое вычисление (нужна производительность, т.к. используется в этом проекте) длительности позиции.
за вычетом выходных по правилам форекс - суббота/воскресенье, католические Рождество/Страстная пятница и Новый год.
#include <fxsaber\BestInterval\Holiday.mqh> // https://www.mql5.com/ru/code/22710

datetime PositionOpenTime = OrderOpenTime();
datetime PositionCloseTime = OrderCloseTime();

int PositionLength = HOLIDAY::GetDealLength(PositionOpenTime, PositionCloseTime);
 
fxsaber #:
Исходя из этого обсуждения, я провел быстрый расчет (производительность необходима, так как она используется в этом проекте) продолжительности позиции.
Оптимизированная версия с использованием кэша сумм Prefix[]
/*
 Holiday2 (EURUSD,H1)   GetDealLength: 146056 мкс (сумма = 5034828067200)
 Holiday2 (EURUSD,H1)   GetDealLength_Cached: 563 мкс (сумма = 5035790304000)
*/
Файлы:
Holiday2.mq5  14 kb
 
amrali #:
Оптимизированная версия с использованием кэша сумм Prefix[]

Некоторые незначительные исправления.

Файлы:
Holiday3.mq5  16 kb
 
amrali #:

Некоторые незначительные исправления.

Спасибо, пока не совпадает.
void OnStart()
{
  const datetime OpenTime = D'2026.04.03 23:44:57';
  const datetime CloseTime = D'2026.04.06 01:07:17';    

  Print(HOLIDAY::GetDealLength(OpenTime, CloseTime)); // 4940
  Print(HOLIDAY::GetDealLength_Cached(OpenTime, CloseTime)); // -81460
}
 
fxsaber #:
Спасибо, пока не совпадает.
Здравствуйте,
Вы не можете открыть сделку в пятницу, 03.04.2026, так как рынок закрыт (Страстная пятница перед Пасхальным воскресеньем).