В библиотеке "ServicesMT4.dll" функция, открывающая удалённый график, возвращает дескриптор открытого окна.
Автору легче ориентироваться в своём детище, а я не вижу в упомянутой библиотеке функции, открывающей удалённый график:
//21. Функция открывает окно графика символа, расположенного в окне "Обзор рынка" по имени инструмента, и устанавливает период графика. // Функция, в случае удачи, возвращает системный дескриптор открытого графика. Иначе - NULL. int ServiceOpenChartByName(string sNameTool, // Имя инструмента в окне "Обзор рынка". string sTimeFrame); // Имя устанавливаемого ТФ: "" пустая строка или NULL не меняет ТФ открытого графика. // "M1" 1 минута; // "M5" 5 минут; // "M15" 15 минут; // "M30" 30 минут; // "H1" 1 час; // "H4" 4 часа; // "D1" 1 день; // "W1" 1 неделя; // "MN1" 1 месяц. //=================================================================================================================================================== //22. Функция открывает окно графика символа, расположенного в строке nLine окна "Обзор рынка". // Функция, в случае удачи, возвращает системный дескриптор открытого графика. Иначе - NULL. int ServiceOpenChartByNumber(int nLine, // Номер строки в окне "Обзор рынка". string szSymbol); // Указатель на буфер со строкой символа инструмента, находящегося в указанной строке списка. // Строка должна быть инициализирована не менее 12-ю символами. //=================================================================================================================================================== //23. Функция открывает окно автономного графика. Функция, в случае удачи, возвращает системный дескриптор открытого графика. Иначе - NULL. int ServiceOpenOfflineChart(string sSymbol, // Имя инструмента. string sPeriod); // Период. Примеры: M1, M2, M5, H1, H12, Daily, Weekly, Monthly, D90, D360, D1440.
"Обзор рынка" здесь ни при чём и оффлайн (автономный график) тоже не из "той оперы"... :(
Мне нужен дескриптор именно последнего удалённого, а затем восстановленного окна, на котором находятся нужные мне индикаторы.
// 5.6. Функция открывает окно удалённого графика и возвращает его системный дескриптор. int ServiceOpenDeletetChart(int nChart); // Номер графика в списке удалённых графиков.
А ниже посмотреть?
СПАСИБО!!! У меня не та версия Вашей библиотеки!... :)
Только, что новую версию выложил (0.12.6.1). Завтра, наверно, появится.
Имхо, Вы зря изменили тип функции ServiceCloseChart (int hChart) с bool на void заменили - приходится лишнюю проверку (ServiceIsChart (int hChart)) производить - лишние телодвижения...
Кстати, используя Вашу функцию ServiceOpenDeletetChart (int nChart) - закрытый чарт открывает, но затем фиксирует ошибку при попытке получить дескриптор открытого окна (Ошибка в методе: "MetaTrader4:: Windows::OpenDeletetChart()". Системный дескриптор окна графика не получен.). Несколько раз пытался произвести данную опреацию (в 3-ёх случаях из 10) терминал вообще вылетал с критической ошибкой.
Используемые функции:
//+------------------------------------------------------------------+ // Закрывает\открывает окно удаленного графика с дескриптором hwnd | //+------------------------------------------------------------------+ bool fRefreshChart (int hwnd, int i_Period = 0, bool bCondition = false) { int err = GetLastError(); if (ServiceIsChart (hwnd)) { ServiceCloseChart (hwnd); Print ("Закрыли окно ", hwnd, "!!!"); Sleep (PAUZE); } else {Print ("Окна с дескриптором ", hwnd, " НЕ СУЩЕСТВУЕТ !!!");} if (!ServiceIsChart (hwnd)) { Sleep (PAUZE); if (OpenDeletedChart (0, i_Period, bCondition)) {return (true);} else {Print ("fRefreshChart(): Удалённое окно НЕ ВОССТАНОВИЛИ !!!");} } //---- Контролируем возможные ошибки fGetLastError ("fRefreshChart():"); //---- return (false); }
и
//+------------------------------------------------------------------+ // Открывает окно удаленного графика с номером NumChart (нумерация с нуля) //+------------------------------------------------------------------+ bool OpenDeletedChart (int NumChart, int iPeriod = 0, bool Condition = false) { int hWnd = ServiceOpenDeletetChart (NumChart); //---- if (hWnd > 0) { if (Condition && iPeriod > 0) { if (ServiceIsChart (hWnd)) {ServiceSetTimeframeByPeriod (hWnd, iPeriod);} } return (true); } else {Print ("OpenDeletedChart(): Удалённое окно НЕ ВОССТАНОВИЛИ !!!");} //---- Контролируем возможные ошибки fGetLastError ("OpenDeletedChart():"); //---- return (false); }
В новой версии библиотеки что-то исправлено в методе, дающем такую ошибку???
Имхо, Вы зря изменили тип функции ServiceCloseChart (int hChart) с bool на void заменили - приходится лишнюю проверку (ServiceIsChart (int hChart)) производить - лишние телодвижения...
Кстати, используя Вашу функцию ServiceOpenDeletetChart (int nChart) - закрытый чарт открывает, но затем фиксирует ошибку при попытке получить дескриптор открытого окна (Ошибка в методе: "MetaTrader4:: Windows::OpenDeletetChart()". Системный дескриптор окна графика не получен.). Несколько раз пытался произвести данную опреацию (в 3-ёх случаях из 10) терминал вообще вылетал с критической ошибкой.
Используемые функции:
и
В новой версии библиотеки что-то исправлено в методе, дающем такую ошибку???
Да. Именно это исправил. У меня на Висте всё работает. А на ХР возможны проблемы. По этому вернул обратно всё.
Я на второй раздел винта (для ближайшего знакомства) поставил параллельно XP Windows 7. Если я правильно Вас понял, то для 7-ки нужно оставить "предыдущую" версию "ServicesMT4.dll"? А для XP положить последнюю - "завтрашнюю"? :)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
и вторая, используемая функция:
Функции :
из Библиотеки "ServicesMT4.dll" - сервисные функции для терминала МТ4.