Karputov Vladimir: Нет. Работа с буфером обмена - это системные функции (Windows API). В MQL5 нет прямого доступа к WinAPI. И зачем работать с буфером обмена? Ведь Вы сами формируете сообщение - значит у Вас есть и исходный текст сообщения.
Да, исходный текст есть, но он мне нужен, по определённому условию, в буфере обмена.
Извините, не уточнила, нужна реализация в MQL4.
Может все-таки можно как-то через #import "user32.dll" открыть буфер обмена?
Да, исходный текст есть, но он мне нужен, по определённому условию, в буфере обмена.
Извините, не уточнила, нужна реализация в MQL4.
Может все-таки можно как-то через #import "user32.dll" открыть буфер обмена?
Пора уже давно писать на MQL5. Использование dll - верх безрассудства.
Как я понял, Вы хотите считывать информацию сторонней программой. Тогда используйте запись в файл, в общую папку всех клиентских терминалов \Terminal\Common\Files. Уже из этой директории можете читать файл сторонней программой.
Пора уже давно писать на MQL5. Использование dll - верх безрассудства.
Как я понял, Вы хотите считывать информацию сторонней программой. Тогда используйте запись в файл, в общую папку всех клиентских терминалов \Terminal\Common\Files. Уже из этой директории можете читать файл сторонней программой.
Спасибо, за рекомендации, но сейчас мне нужно скопировать текст в буфер обмена из программы MQL4.
Прикрепите его на график и скриншот графика в студию, а также записи из вкладок "Журнал" и "Советники" (если они там появятся).
Здравствуйте !!!
Для начала я перезагрузил платформу МТ5. Скомпилировал Ваш шаблон. Результат компиляции представлен ниже. Из-за большого обьема скриншоты пришлось выбросить
Для начала я перезагрузил платформу МТ5. Скомпилировал Ваш шаблон. Результат компиляции представлен ниже. Из-за большого обьема скриншоты пришлось выбросить
Пора уже давно писать на MQL5. Использование dll - верх безрассудства.
Как я понял, Вы хотите считывать информацию сторонней программой. Тогда используйте запись в файл, в общую папку всех клиентских терминалов \Terminal\Common\Files. Уже из этой директории можете читать файл сторонней программой.
Если бы это было прям "верх безрассудства", оно было бы запрещено.
WinAPI значительно расширяет возможности MQL. А наделать глупостей можно и без dll.
А вот пример передачи строки в буфер обмена:
#define CF_UNICODETEXT 13#define GHND 0x0042#import "User32.dll"int OpenClipboard( uint );
int EmptyClipboard();
int CloseClipboard();
uint SetClipboardData( uint uFormat, uint hMem );
#import "Kernel32.dll"uint GlobalAlloc( uint uFlags, uint dwBytes );
uint GlobalLock( uint hMem );
int GlobalUnlock( uint hMem );
#import "msvcrt.dll"uint memcpy( uint dest, string src, uint count );
#import
string str = "АБВГД";
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
uint hwnd = (uint)ChartGetInteger( 0, CHART_WINDOW_HANDLE );
int strSize = StringLen( str ) * 2 + 2; // Получаем размер строки в байтахif( OpenClipboard( hwnd ) ) // Открываем буфер
{
EmptyClipboard(); // Очищаем буферuint hMem = GlobalAlloc( GHND, strSize ); // Выделяем памятьuint pMem = GlobalLock( hMem ); // Получаем адрес выделенной памяти
memcpy( pMem, str, strSize ); // Копируем строку в память
GlobalUnlock( hMem );
SetClipboardData( CF_UNICODETEXT, hMem ); // Передаём память со строкой в буфер
CloseClipboard(); // Закрываем буфер
}
}
Артем, подскажите, если я все это вставлю из под ф-ии On Start в функцию On Tick, скрипт будет исполняться так же, только на каждом тике, верно?
Или что-то нужно менять?
И т.к. предыдущие свечи, кроме текущей, не меняются на каждом тике, то я так понимаю, что нужно прописать условие, чтобы проверка делалась 1 раз, например за 1 - 2 секунды до закрытия очередной текущей свечи? Или нет в этом смысла и можно оставить проверку на каждом тике?
Артем, подскажите, если я все это вставлю из под ф-ии On Start в функцию On Tick, скрипт будет исполняться так же, только на каждом тике, верно?
Или что-то нужно менять?
И т.к. предыдущие свечи, кроме текущей, не меняются на каждом тике, то я так понимаю, что нужно прописать условие, чтобы проверка делалась 1 раз, например за 1 - 2 секунды до закрытия очередной текущей свечи? Или нет в этом смысла и можно оставить проверку на каждом тике?
Ну я бы оформил всё это в функцию, и вызывал бы её когда мне это нужно - хоть на каждом тике (если оправдано и необходимо), хоть на открытии новой свечи - раз в час например, если на Н1 работаем.
Artyom Trishkin: Ну я бы оформил всё это в функцию, и вызывал бы её когда мне это нужно - хоть на каждом тике (если оправдано и необходимо), хоть на открытии новой свечи - раз в час например, если на Н1 работаем.
С функцией удобно конечно. Код я разобрал что к чему. Теперь стало понятно. Буду думать, как его привести к тем целям, которые я хочу и понять, когда и на каком этапе вынимать нужные данные.
Нет. Работа с буфером обмена - это системные функции (Windows API). В MQL5 нет прямого доступа к WinAPI. И зачем работать с буфером обмена? Ведь Вы сами формируете сообщение - значит у Вас есть и исходный текст сообщения.
Да, исходный текст есть, но он мне нужен, по определённому условию, в буфере обмена.
Извините, не уточнила, нужна реализация в MQL4.
Может все-таки можно как-то через #import "user32.dll" открыть буфер обмена?
Да, исходный текст есть, но он мне нужен, по определённому условию, в буфере обмена.
Извините, не уточнила, нужна реализация в MQL4.
Может все-таки можно как-то через #import "user32.dll" открыть буфер обмена?
Пора уже давно писать на MQL5. Использование dll - верх безрассудства.
Как я понял, Вы хотите считывать информацию сторонней программой. Тогда используйте запись в файл, в общую папку всех клиентских терминалов \Terminal\Common\Files. Уже из этой директории можете читать файл сторонней программой.
Пора уже давно писать на MQL5. Использование dll - верх безрассудства.
Как я понял, Вы хотите считывать информацию сторонней программой. Тогда используйте запись в файл, в общую папку всех клиентских терминалов \Terminal\Common\Files. Уже из этой директории можете читать файл сторонней программой.
Спасибо, за рекомендации, но сейчас мне нужно скопировать текст в буфер обмена из программы MQL4.
Давайте по порядку. Вот шаблон:
Прикрепите его на график и скриншот графика в студию, а также записи из вкладок "Журнал" и "Советники" (если они там появятся).
Здравствуйте !!!
Для начала я перезагрузил платформу МТ5. Скомпилировал Ваш шаблон. Результат компиляции представлен ниже. Из-за большого обьема скриншоты пришлось выбросить
В навигаторе появился советник:
Бросил советник на график и разрешил торговлю в 3-х местах:
Получил на графике не смайлик с рожицей, а иконку советника
Вот выдержка из журнала 2016.05.11 12:44:47.139 Experts expert Test (GBPUSD,H1) loaded successfully
Ниже привожу содержание сообщения о загрузке советника:
CO 0 10:35:45.020 Terminal Alpari Limited MT5 x64 build 1325 started (Alpari Limited)
HD 0 10:35:45.020 Terminal Windows 8.1 (x64 based PC), IE 11.00, UAC, Intel Core i5-2320 @ 3.00GHz, RAM: 2209 / 4078 Mb, HDD: 45023 / 149999 Mb, GMT+03:00
ND 0 10:35:45.020 Terminal C:\Users\Борис\AppData\Roaming\MetaQuotes\Terminal\73D45AFCBD5653CAF29C407A081F030C
LI 0 10:35:47.200 Network '50016841': authorized on Alpari-Ltd-MT5 through mt5.nl.3 (ping: 57.34 ms)
NG 0 10:35:47.200 Network '50016841': previous successful authorization performed from 79.172.69.175 on 2016.05.10 23:47:58
FK 0 10:35:47.617 Network '50016841': terminal synchronized with Alpari Limited
RM 0 10:35:47.617 Network '50016841': trading has been enabled - netting mode
OH 0 10:35:48.253 Network '50016841': scanning network for access points
CL 0 10:35:51.446 Network '50016841': scanning network finished
ND 1 12:00:49.011 Network '50016841': connection to Alpari-Ltd-MT5 lost
MR 0 12:01:08.842 Network '50016841': authorized on Alpari-Ltd-MT5 through mt5.nl.3 (ping: 56.41 ms)
HR 0 12:01:08.842 Network '50016841': previous successful authorization performed from 79.172.69.175 on 2016.05.11 10:35:52
PQ 0 12:01:08.907 Network '50016841': terminal synchronized with Alpari Limited
PH 0 12:01:08.907 Network '50016841': trading has been enabled - netting mode
KL 0 12:41:45.169 Experts expert Test (GBPUSD,H1) loaded successfully
Посмотрите пожалуйста. Может быть найдете причину. Я в тупике, может быть проблема с билдом?
Спасибо !!!
Спасибо за помощь !!!
Здравствуйте !!!
Для начала я перезагрузил платформу МТ5. Скомпилировал Ваш шаблон. Результат компиляции представлен ниже. Из-за большого обьема скриншоты пришлось выбросить
В навигаторе появился советник:
Бросил советник на график и разрешил торговлю в 3-х местах:
Получил на графике не смайлик с рожицей, а иконку советника
Вот выдержка из журнала 2016.05.11 12:44:47.139 Experts expert Test (GBPUSD,H1) loaded successfully
Ниже привожу содержание сообщения о загрузке советника:
CO 0 10:35:45.020 Terminal Alpari Limited MT5 x64 build 1325 started (Alpari Limited)
HD 0 10:35:45.020 Terminal Windows 8.1 (x64 based PC), IE 11.00, UAC, Intel Core i5-2320 @ 3.00GHz, RAM: 2209 / 4078 Mb, HDD: 45023 / 149999 Mb, GMT+03:00
ND 0 10:35:45.020 Terminal C:\Users\Борис\AppData\Roaming\MetaQuotes\Terminal\73D45AFCBD5653CAF29C407A081F030C
LI 0 10:35:47.200 Network '50016841': authorized on Alpari-Ltd-MT5 through mt5.nl.3 (ping: 57.34 ms)
NG 0 10:35:47.200 Network '50016841': previous successful authorization performed from 79.172.69.175 on 2016.05.10 23:47:58
FK 0 10:35:47.617 Network '50016841': terminal synchronized with Alpari Limited
RM 0 10:35:47.617 Network '50016841': trading has been enabled - netting mode
OH 0 10:35:48.253 Network '50016841': scanning network for access points
CL 0 10:35:51.446 Network '50016841': scanning network finished
ND 1 12:00:49.011 Network '50016841': connection to Alpari-Ltd-MT5 lost
MR 0 12:01:08.842 Network '50016841': authorized on Alpari-Ltd-MT5 through mt5.nl.3 (ping: 56.41 ms)
HR 0 12:01:08.842 Network '50016841': previous successful authorization performed from 79.172.69.175 on 2016.05.11 10:35:52
PQ 0 12:01:08.907 Network '50016841': terminal synchronized with Alpari Limited
PH 0 12:01:08.907 Network '50016841': trading has been enabled - netting mode
KL 0 12:41:45.169 Experts expert Test (GBPUSD,H1) loaded successfully
Посмотрите пожалуйста. Может быть найдете причину. Я в тупике, может быть проблема с билдом?
Спасибо !!!
Спасибо за помощь !!!
Пора уже давно писать на MQL5. Использование dll - верх безрассудства.
Как я понял, Вы хотите считывать информацию сторонней программой. Тогда используйте запись в файл, в общую папку всех клиентских терминалов \Terminal\Common\Files. Уже из этой директории можете читать файл сторонней программой.
Если бы это было прям "верх безрассудства", оно было бы запрещено.
WinAPI значительно расширяет возможности MQL. А наделать глупостей можно и без dll.
А вот пример передачи строки в буфер обмена:
Артем, подскажите, если я все это вставлю из под ф-ии On Start в функцию On Tick, скрипт будет исполняться так же, только на каждом тике, верно?
Или что-то нужно менять?
И т.к. предыдущие свечи, кроме текущей, не меняются на каждом тике, то я так понимаю, что нужно прописать условие, чтобы проверка делалась 1 раз, например за 1 - 2 секунды до закрытия очередной текущей свечи? Или нет в этом смысла и можно оставить проверку на каждом тике?
Артем, подскажите, если я все это вставлю из под ф-ии On Start в функцию On Tick, скрипт будет исполняться так же, только на каждом тике, верно?
Или что-то нужно менять?
И т.к. предыдущие свечи, кроме текущей, не меняются на каждом тике, то я так понимаю, что нужно прописать условие, чтобы проверка делалась 1 раз, например за 1 - 2 секунды до закрытия очередной текущей свечи? Или нет в этом смысла и можно оставить проверку на каждом тике?
Ну я бы оформил всё это в функцию, и вызывал бы её когда мне это нужно - хоть на каждом тике (если оправдано и необходимо), хоть на открытии новой свечи - раз в час например, если на Н1 работаем.
С функцией удобно конечно. Код я разобрал что к чему. Теперь стало понятно. Буду думать, как его привести к тем целям, которые я хочу и понять, когда и на каком этапе вынимать нужные данные.
Если бы это было прям "верх безрассудства", оно было бы запрещено.
WinAPI значительно расширяет возможности MQL. А наделать глупостей можно и без dll.
А вот пример передачи строки в буфер обмена:
Отлично, ещё и с комментариями.
Благодарю.
Ещё вопрос.
Нельзя - ли сделать эмуляцию клика "мышки" по заданным координатам?