Примеры: Взаимодействие между MetaTrader 4 и Matlab посредством DDE - страница 2

 

Для тех, у кого не получается:

Не обязательно читать всё, что здесь написано. Эта статья на 90% не о DEE в Matlab, а о том, как продемонстрировать DEE в Matlab.

Всё, что вам надо - это:

1. Запустить терминал MT4
2. Убедиться, что MT4 связался с сервером и котировки поступают.
3. Разрешить DDE-сервер в MT4.
3. Написать в консоли Mathlab

channel = ddeinit('MT4','QUOTE'); % Инициализация
rc = ddeadv(channel, 'GBPUSD','display(x)','x',[1 1]); % Установка соединения


Вместо display() - можете использовать свою функцию. Для этого текст функции сохраните в файл *.m
Например "myFunction.m" с текстом:

function myFunction(simbols)
parts = sscanf(simbols, '%i/%i/%i %i:%i %f %f' ); % Разобрать в соответствии с форматом
display(['Bid = ' num2str(parts(6)) '; Ask = ' num2str(parts(7))]); % Вывести в консоль


Тогда установка соединения будет выглядеть как:

rc = ddeadv(channel, 'GBPUSD','myFunction(x)','x',[1 1]);


По окончании - не забудьте разорвать соединение и деинициализировать канал:

ddeunadv(channel,'GBPUSD');
rc = ddeterm(channel);

=====

PS: Matlab Version 7.0.1.24704 SP1, Sept-13-2004
Файлы ...\toolbox\matlab\winfun\ddeadv.m и ...\toolbox\matlab\winfun\ja\ddeadv - пустые (только Help).
Файл ...\toolbox\compiler\mcr\matlab\winfun\ddeadv.m - прилагаю.

 

Подскажите пжста: на Сегодня данная структура взаимодействия всё ещё функционирует?

Я что то не нашёл данной темы в документации.

Если же ДДЕ не работает ( отключена) может быть есть данные по скорости файловым обменом для SSD накопителя для передачи 1 целочисленного числа

от внешней программы в МТ4. Реально ли на каждом тике опрашивать данный файл с 1 числом?