Всех приветствую.
Такой вопрос: есть ли возможность узнать из эксперта, какой период выставлен в истории сделок в терминале ? И поменять его ?
Что-то сколько ни искал - не могу найти такой возможности... Плохо искал ?
Период показа истории выставленный в терминале MetaTrader 5
вообще никаким боком не влияет на функции получения истории HistorySelect
Понял.
Это радует. Я думал, что эксперт получает историю только ту, что видна во вкладке "история".
Что-то не то.
Функция OrdersHistoryTotal() в МТ4 зависит от числа ордеров в загруженной истории.
Вопрос остается - как сделать так, чтобы загружалась нужная часть истории (или вся) ?
Похоже, для скрипта в МТ4 такой возможности не предусмотрено.
Я понимаю, что МТ4 - устаревший терминал, но счета на МТ4 есть. А поэтому код должен быть универсальным. Какой функцией в МТ4 получать ордера так, чтобы это не зависело от установок в терминале ?
Что-то не то.
Функция OrdersHistoryTotal() в МТ4 зависит от числа ордеров в загруженной истории.
Вопрос остается - как сделать так, чтобы загружалась только часть истории ?
Я понимаю, что МТ4 - устаревший терминал, но счета на МТ4 есть. А поэтому код должен быть универсальным. Какой функцией в МТ4 получать ордера так, чтобы это не зависело от установок в терминале ?
Боюсь что только "заботится о зарубках в истории" самому. То есть всё сам. И в MT5 тоже. Твоя (и моя) личная история по большому счёту не волнует никого кроме каждого из нас. DC будет хранить историю сделок пока это юридически ему значимо. Дольше - исключительно по доброй воле
Да мне не надо получать ВСЮ историю.
Я просто хочу получать известную часть этой истории, лично мне надо полгода. Но для этого - я должен быть уверен, что в терминале выставлен именно такой период истории. И, хорошо бы выставить его, если он иной.
Как это можно сделать в МТ4 ? Никак ?
...Я понимаю, что МТ4 - устаревший терминал, но счета на МТ4 есть. А поэтому код должен быть универсальным. Какой функцией в МТ4 получать ордера так, чтобы это не зависело от установок в терминале ?
В этом случае универсального кода нет. В МТ4 получим то, что выбрано на вкладке "История Счёта". Если там выбрана история например за сегодня, то за вчерашний день не получим ничего. В МТ5 такой привязки нет.
В этом случае универсального кода нет. В МТ4 получим то, что выбрано на вкладке "История Счёта". Если там выбрана история например за сегодня, то за вчерашний день не получим ничего. В МТ5 такой привязки нет.
Да вот же...
Собственно, проблема возникла из-за разделения Лиги ТС на три дивизиона (три счета).
Скрипт статистики должен собирать информацию по всем счетам, переключаясь между ними, и выдавать общий список ТС, которые должны быть либо переоптимизированы, либо переведены в другой дивизион.
Но, проблема в том, что при переключении аккаунта история в МТ4 появляется не сразу. А значит, скрипт должен понять, то ли истории нет потому, что она еще не подгружена, то ли ее нет, потому, что она не отображается на вкладке "История". Вот эту задачу и решаю. Пока приходится самому следить за отображаемой историей.
Да вот же...
Собственно, проблема возникла из-за разделения Лиги ТС на три дивизиона (три счета).
Скрипт статистики должен собирать информацию по всем счетам, переключаясь между ними, и выдавать общий список ТС, которые должны быть либо переоптимизированы, либо переведены в другой дивизион.
Но, проблема в том, что при переключении аккаунта история в МТ4 появляется не сразу. А значит, скрипт должен понять, то ли истории нет потому, что она еще не подгружена, то ли ее нет, потому, что она не отображается на вкладке "История". Вот эту задачу и решаю. Пока приходится самому следить за отображаемой историей.
Если это Вам поможет.
В случае, когда ручных назначений глубины истории не было, то у MT4 в \config\terminal.ini в строке "HistoryPeriod=..." указана глубина истории, назначаемая при запуске терминала. Перед запуском ее можно менять, вручную или программно.
Варианты значений: вся история (=7) месяц (=4), три (=5), за сегодня (=1), за три дня (=2), неделю (=3), полгода (=6), иной период (=0). Не проверял их уже несколько лет, могли измениться.
P.S. Если этой строки в файле нет, я вставляю ее перед "LastScanTime=...". Почему - уже не помню.
Кажется, вот почему: "После этого ручное изменение настройки отражается в этой же строке, т.е. HistoryPeriod остается на прежнем месте, после LastScanTime.". Это не из документации, всего лишь мой комментарий в том месте, где перед запуском терминала назначается HistoryPeriod. Так ли это сейчас, сказать не могу. Различия между перед "LastScanTime=..." и после - в своем сообщении вижу, но оставил так, как у меня записано. Возможно, перед или после роли не играет.
Чистым MQL не обойтись. Только посылать сообщение через WinAPI:
#define WM_COMMAND int(0x0111) #define MENU_ALL_HISTORY_ID int(0x8122) #import "user32.dll" int GetParent(int hWnd); int SendMessageW(int hWnd, int msg, int wParam, int lParam); #import int g_hChart = WindowHandle(Symbol(), Period()); if (g_hChart <= 0) return; int g_hSymbol = GetParent(g_hChart); if (g_hSymbol <= 0) return; int g_hMDIClient = GetParent(g_hSymbol); if (g_hMDIClient <= 0) return; int g_hMT = GetParent(g_hMDIClient); if (g_hMT <= 0) return; SendMessageW(g_hMT, WM_COMMAND, MENU_ALL_HISTORY_ID, 0); // Запрос всей доступной истории счета
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всех приветствую.
Такой вопрос: есть ли возможность узнать из эксперта, какой период выставлен в истории сделок в терминале ? И поменять его ?
Что-то сколько ни искал - не могу найти такой возможности... Плохо искал ?