Сообщение В МТ4 формирую и посылаю из МТ4 но в Дельфи получить его не получается.
А с помощью какой технологии Вы это делаете(короче как пытаетесь отправить, могут быть несколько вариантов)
Сообщение В МТ4 формирую и посылаю из МТ4 но в Дельфи получить его не получается.
А ещё сделать правильно ожидание обновления не получается.
А ещё сделать правильно ожидание обновления не получается.
Приведите примеры MQL4 кода, пожалуйста.
В ДЕЛФИ делаю так:
1. str := Direct+'terminal.exe '+ Direct+'"'+'config\start.ini'+'"';
winexec(PChar(str),SW_SHOWMINIMIZED);
В директ - путь к МТ4
2. Затем
type
TForm1 = class(TForm)
.........
private
Procedure WM_Get(var a: TMessage); message WM_USER+7;
implementation
Procedure TForm1.WM_Get(var a: TMessage);
begin
if a.LParam=1 then
begin
form1.StatusBar1.Panels.Items[2].Text:='Обработка в Метатрейдере ВЫПОЛНЕНА !!!';
// Просмотр созданного файла
OpenDialog2.InitialDir:=Direct+'experts\files\ANALIZ_SIT\';
OpenDialog2.Filter := 'TXT files (*.txt)|*.txt';
opendialog2.title:='';
if form1.OpenDialog2.Execute then
begin
form1.Memo1.Lines.Clear;
form1.Memo1.Font.Name:='Fixedsys';
form1.Memo1.Lines.LoadFromFile(form1.OpenDialog2.FileName);
PostMessage(HWin('MetaTrader '),WM_CLOSE,0,0);
end;//if1
end//if2
else
begin
form1.StatusBar1.Panels.Items[2].Text:='Обработка в Метатрейдере НЕ ВЫПОЛНЕНА !!!';
end;
end;
(HWin - определяет соотв-но дескриптор окна МТ4 по части имени заголовка)
В файле старт.ини записано:
Profile=TRENDS_COMMON
Template=shablon1.tpl
Script=SS_trend_COMMON
ScriptParameters=param.set
В МетаЭдиторе делаю след:
1. Ожидаю подключения и жду обновления данных на графиках открытого профиля
while (!IsConnected())
{ Comment("Не подключен !!!");}
Comment(" ");
RefreshRates();
2. После подключения и обработки посылаю сообщение
hwnd = FindWindowA("TForm1","Создание списка просматриваемых инструментов");
Print(hwnd);
hwnd = PostMessageA(hwnd,WM_USER+7,0,ready);
Comment("Сделано !!!",ready,hwnd);
3. Ну и соответственно в подключенной библиотеке WinUser32.mqh
добавил строчку
#define WM_USER 0x0400
Сегодня добился следующего:
Из делфи МТ запускается, но сообщение при этом не приходит, как будто не запускается эксперт.....???
Если программа в Дельфи уже запущена и из неё запущен МТ4, то при ручном добавлении скрипта в МТ4, сообщение посылается, программой на Дельфи принимается и всё выполняется.
Ощущение, что тонкий момент где-то при запуске МТ4 с параметрами.... Надеюсь более-менее понятно изложил ?
1. str := Direct+'terminal.exe '+ Direct+'"'+'config\start.ini'+'"';
winexec(PChar(str),SW_SHOWMINIMIZED);
В директ - путь к МТ4
2. Затем
type
TForm1 = class(TForm)
.........
private
Procedure WM_Get(var a: TMessage); message WM_USER+7;
implementation
Procedure TForm1.WM_Get(var a: TMessage);
begin
if a.LParam=1 then
begin
form1.StatusBar1.Panels.Items[2].Text:='Обработка в Метатрейдере ВЫПОЛНЕНА !!!';
// Просмотр созданного файла
OpenDialog2.InitialDir:=Direct+'experts\files\ANALIZ_SIT\';
OpenDialog2.Filter := 'TXT files (*.txt)|*.txt';
opendialog2.title:='';
if form1.OpenDialog2.Execute then
begin
form1.Memo1.Lines.Clear;
form1.Memo1.Font.Name:='Fixedsys';
form1.Memo1.Lines.LoadFromFile(form1.OpenDialog2.FileName);
PostMessage(HWin('MetaTrader '),WM_CLOSE,0,0);
end;//if1
end//if2
else
begin
form1.StatusBar1.Panels.Items[2].Text:='Обработка в Метатрейдере НЕ ВЫПОЛНЕНА !!!';
end;
end;
(HWin - определяет соотв-но дескриптор окна МТ4 по части имени заголовка)
В файле старт.ини записано:
Profile=TRENDS_COMMON
Template=shablon1.tpl
Script=SS_trend_COMMON
ScriptParameters=param.set
В МетаЭдиторе делаю след:
1. Ожидаю подключения и жду обновления данных на графиках открытого профиля
while (!IsConnected())
{ Comment("Не подключен !!!");}
Comment(" ");
RefreshRates();
2. После подключения и обработки посылаю сообщение
hwnd = FindWindowA("TForm1","Создание списка просматриваемых инструментов");
Print(hwnd);
hwnd = PostMessageA(hwnd,WM_USER+7,0,ready);
Comment("Сделано !!!",ready,hwnd);
3. Ну и соответственно в подключенной библиотеке WinUser32.mqh
добавил строчку
#define WM_USER 0x0400
Сегодня добился следующего:
Из делфи МТ запускается, но сообщение при этом не приходит, как будто не запускается эксперт.....???
Если программа в Дельфи уже запущена и из неё запущен МТ4, то при ручном добавлении скрипта в МТ4, сообщение посылается, программой на Дельфи принимается и всё выполняется.
Ощущение, что тонкий момент где-то при запуске МТ4 с параметрами.... Надеюсь более-менее понятно изложил ?
Из делфи МТ запускается, но сообщение при этом не приходит, как будто не запускается эксперт.....???
А Вы в этот момент где находитесь, нет возможности посмотреть в правый верхний угол чарта?(если мордочка с улыбкой значит эксперт работает :) )
Гдето на форуме поднимался вопрос о том что при запуске терминала планировщиком эксперты не работают, но я в эту ветку не глядел и чем дело закончилось не знаю. Я пробовал терминал запускать и из приложения сбацанного на делфи и из автозагрузки. И каждый раз все было окей, только для начала надо все запустить проверить работоспособность, а потом закрыть терминал, после этого он и запускается точно также. Я пока остановился на автозагрузке для моих задач этого достаточно.
Вот прикладываю набросок того что делал когда-то я, был реализован только запуск и проверка соединения, но потом я это дело забросил.
http://www.fxfilecheng.narod.ru/ExpertAdvisor.rar
На счет сообщений я так понял у Вас все нормально.
Гдето на форуме поднимался вопрос о том что при запуске терминала планировщиком эксперты не работают, но я в эту ветку не глядел и чем дело закончилось не знаю.
Это давно уже исправили в одном из билдов.
Попробуйте через SendMessage.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
1. Надо из программы написанной на Делфи открыть Метатрейдер через старт.ини открыть нужный профиль и запустить эксперта.
2. В эксперте надо чтобы на графиках профиля обновились данные, после анализа вывели сообщения в файл, и сформировали сообщение программе на Дельфи , допустим с параметром = 1.
3. В программе если пришёл параметр=1 открыть сформированный файл с анализом.
4. Послать сообщение МТ о закрытии.
Может кто уже делал нечто подобное. Неплохо было бы посмотреть на кусочки кода.
МТ4 я открываю, профиль тоже
Из Дельфи МТ4 при помощи сообщения закрываю.
Сообщение В МТ4 формирую и посылаю из МТ4 но в Дельфи получить его не получается.
А ещё сделать правильно ожидание обновления не получается.