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

 
MakarFX:

Вопрос 1: не понял вопроса(

Программой получить начало выбранного периода или сам период

 
Andrey Sokolov:

Программой получить начало выбранного периода или сам период

Никак, "OrdersHistoryTotal  Возвращает количество закрытых и удаленных ордеров в истории текущего счета, загруженной в клиентском терминале."
 
Andrey Sokolov:

Программой получить начало выбранного периода или сам период

Когда-то не только период зависел от настроек в закладке «История» но и порядок сортировки. Сортировку, вроде как сделали неизменяемой, а вот период кажется остался зависимым. То-есть если в настройках показана история с 01.12.2020 — 04.12.2020 то и OrdersHistoryTotal() вернёт только количество ордеров за этот период. И если мои мозги не совсем высохли, то считается по времени закрытия. Время открытия в расчёт не идёт. Допустим: ордер был открыт 02.12.2020 и закрыт (пока не очень удачные даты, но всёже), 05.12.2020 то в период 01.12.2020 — 04.12.2020 он не попадёт.
 
Alexey Viktorov:
И если мои мозги не совсем высохли, то считается по времени закрытия.

Да, только закрытие или удаление

 
Alexey ViktorovMakarFX спасибо за уточнения того по какой дате учитывается. Но вопрос был не совсем про это. Допустим там выбран период "последний месяц", как программно получить дату начала этого (выбранного) периода, даже если в тот день не было торговых операций?
 
Andrey Sokolov:
Alexey ViktorovMakarFX спасибо за уточнения того по какой дате учитывается. Но вопрос был не совсем про это. Допустим там выбран период "последний месяц", как программно получить дату начала этого (выбранного) периода, даже если в тот день не было торговых операций?
Никак.
 
Andrey Sokolov:
Alexey ViktorovMakarFX спасибо за уточнения того по какой дате учитывается. Но вопрос был не совсем про это. Допустим там выбран период "последний месяц", как программно получить дату начала этого (выбранного) периода, даже если в тот день не было торговых операций?

Даты начала периода нет, есть ордер с самой ранней датой. Грусть, если честно, потому что если ордеров в истории нет, то дат периода нет. По факту все.

 
Valeriy Yastremskiy:

Даты начала периода нет, есть ордер с самой ранней датой. Грусть, если честно, потому что если ордеров в истории нет, то дат периода нет. По факту все.

эта настройка не предназначена для "ежедневного подкручивания" - настройте терминал один раз и не трожьте

в 99.9% торговых систем отлично будет работать период истории 3 месяца, ну, наверное, за исключением ТС,  в которых по нескольку десятков тысяч ордеров в месяц - тут, скорее всего период 1 мес. выставить

ЗЫ: потери производительности при большом периоде истори ордеров не замечал (понятное дело, что все можно взять и поломать ))) ) - а вот при периоде 1 мес. возможны неожиданности


ЗЫЗЫ: дали разработчики МТ возможно "покрутить" историю ордеров - плохо! не дали бы эту возможность  - опять плохо?

)))

 
Igor Makanu:

эта настройка не предназначена для "ежедневного подкручивания" - настройте терминал один раз и не трожьте

в 99.9% торговых систем отлично будет работать период истории 3 месяца, ну, наверное, за исключением ТС,  в которых по нескольку десятков тысяч ордеров в месяц - тут, скорее всего период 1 мес. выставить

ЗЫ: потери производительности при большом периоде истори ордеров не замечал (понятное дело, что все можно взять и поломать ))) ) - а вот при периоде 1 мес. возможны неожиданности


ЗЫЗЫ: дали разработчики МТ возможно "покрутить" историю ордеров - плохо! не дали бы эту возможность  - опять плохо?

)))

У меня подход более пессимистичный. Анализ на дефолтных данных типа истории не сделать, потому что он уже либо должен быть и его надо найти, а для результативного анализы нужен свой сбор данных)))) История это для оперативного управления всего лишь.

 

Дату из формы можно попробовать при помощи WinAPI вытащить. И период новый заказать тоже.

Для четвёрки, не знаю как там с пятёркой дела обстоят.


Вот нашёл, несколько лет назад делал, типа такого:

#import "user32.dll"
   int GetForegroundWindow();
   int PostMessageA(int hWnd, int msg, int wParam, int lParam);
#import

//загружает всю историю закрытых ордеров
bool DownloadOrderHistory()
   {
   int eHandle=GetForegroundWindow();
   if(eHandle<=0) return(false);
   return(PostMessageA(eHandle,0x0111,0x8122,0)==1);
   }
GetForegroundWindow лучше заменить....
Причина обращения: