Написал программу-коннектор для экспорта данных в облако Azure (SQL Server)  использующую для получения котировок встроенный в терминал МТ4 сервер DDE.

Известно, что «основной проблемой построения эффективной управляющей стратегии является главная особенность рынков капитала – их хаотичность» [1, c. 181]. Для торговли на рынке Forex в настоящее многие трейдеры используют терминалы популярной торговой платформы MetaTrader 4 (МТ4), однако достаточно часто возможностей встроенного в торговый терминал языка программирования MQL оказывается недостаточно для реализации сложного алгоритма программы. «В этом случае приходится использовать dll библиотеки, написанные на другом языке программирования. Разработка таких библиотек и корректный вызов функций (вопросы сопряжения программного кода разных сред разработки) относятся зачастую к разряду нетривиальных и сложно реализуемых задач прикладного программирования» [1, c. 185].  Следует отметить, что разработчики терминала по соображениям обеспечения безопасности и, возможно, по ряду других причин существенно ограничили возможности экспорта информации в режиме реального времени из терминала МТ4 Использование «моделирования, ориентированного не на подобие исходному процессу, а на достижение конечного результата, позволяет построить осцилляторную оценку и отвечающую ему простейшую стратегию, допускающую принципиальную возможность получения положительного результата. Такой подход существенно повышает устойчивость прогноза к хаотическим вариациям динамики котировок» [2, c. 147]. Для программной реализации в виде торговых роботов сложных торговых стратегий может потребоваться обработка в режиме реального времени котировок торговых инструментов поступающих с терминалов разных торговых платформ. Ниже рассматривается разработка программы в среде Delphi, которая выступает в качестве коннектора, передавая в режиме реального времени котировки торгового инструмента, используя данные встроенного в терминал МТ4 сервера DDE в таблицу базы данных (БД), размещенной в облаке. Windows Azure SQL Databases — облачный сервис от корпорации Microsoft, предоставляющий возможность хранения, обработки реляционных данных, генерации отчетности; основан на Microsoft SQL Server и предоставляет пользователям основное подмножество типов данных (https://ru.wikipedia.org/wiki/SQL_Azure).  Для начала работы необходимо в настройках МТ4 на вкладке «Сервер» установить флажок в чекбоксе «Разрешить DDE сервер». Для записи котировок в облаке была создана БД бесплатной ценовой категории (в рамках подписки DreamSpark). Таблица и хранимая процедура для записи котировок были созданы T-SQL запросом:

/* Таблица */ CREATE TABLE [dbo].[GBPUSD] ([idc] [bigint] IDENTITY (1, 1) NOT NULL ,

[ServerDateTime] [datetime] NULL ,

[iDateTime] [datetime] NULL,

[sSymbol] [char] (6) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL,

[cAsk] [numeric](18, 5) NULL ,

[cBid] [numeric](18, 5) NULL)

ON [PRIMARY]

GO

ALTER TABLE [dbo].[GBPUSD] ADD CONSTRAINT [DF_GBPUSD_ServerDateTime] DEFAULT (getdate()) FOR [ServerDateTime]

GO

/* Хранимая процедура */

CREATE PROCEDURE dbo.PR_GBPUSD     @RetCode int out ,@psSymbol char(6)  ,@piDateTime  datetime   ,@pdAsk  float   ,@pdBid  float AS insert into  GBPUSD

( sSymbol, iDateTime, cAsk, cBid   )  values  ( @psSymbol , @piDateTime,  @pdAsk ,  @pdBid) select @RetCode=0 return @RetCode.

Для доступа программы к БД, на стороне БД был разрешен доступ по протоколу TCP/IP c IP хоста на котором размещена программа. Для реализации подключения был использован ADOCommand компонент Delphi и предлагаемая облачным сервисом строка ADO.NET (проверка подлинности SQL) “

Server=tcp:fxbase.database.windows.net,1433; Initial Catalog=forexbase; Persist Security Info=False;User ID={your_username}; Password={your_password}; MultipleActiveResultSets=False; Encrypt=True; TrustServerCertificate=False; Connection Timeout=30;

”, записанная в итоге, как “

Provider=SQLOLEDB.1;Data Source=tcp:fx-base.database.windows.net, 1433; Initial Catalog=forex-base;Persist Security Info=False; User ID={your_username}; Password={your_password};MultipleActiveResultSets=False; Encrypt=True; TrustServerCertificate=False; Connection Timeout=30;

”. Обращение к хранимой процедуре задается строкой

ADOCommand1.CommandText:=‘exec [dbo].[PR_GBPUSD] @RetCode=123, @psSymbol=»GBPUSD», @piDateTime=»’ +tserv+»’,@pdAsk=’+ask+’,@pdBid=’+bid+’;‘;.

Значения переменных tserv, ask, bid получаются путем обработки извлекаемого содержимого поля Text компонента DdeClientItem: “s:=DdeClientItem1.Text; tserv:=Copy(s,1,19); if Copy(s,29,1)=’.’ Then begin {‘4-х знак} bid:=Copy(s,21,6); ask:=Copy(s,28,6); end; if Copy(s,30,1)=’.’ Then begin {5-ти знак} bid:=Copy(s,21,7); ask:=Copy(s,29,7); end;”. В поле DdeItem задано имя используемого финансового инструмента GBPUSD. Компонент DdeClientItem связан с компонентом DdeClientConv, в поле DdeService которого указан DDE сервер МТ4, а в поле DdeTopic — QUOTE (получение котировок финансового инструмента формате вида «2016/08/12 23:59:59 1.29187 1.29217«). Упрошенный исходный код разработанной программы-коннектора доступен для загрузки по ссылке https://mctrewards.ru/files/azure-gbpusd.zip.

***

***

***

***

Выполненное тестирование показало возможность успешного использования программ-коннекторов для записи котировок терминала МТ4 в режиме реального времени в таблицу БД, размещенной в облачной среде. Следует отметить, что DDE сервер МТ4 предоставляет возможность получения данных для DdeTopic ограниченных только значениями BID, ASK, HIGH, LOW, TIME, QUOTE для выбранного торгового инструмента. Поэтому видится быть целесообразной разработка также собственного DDE сервера, представленного в виде DLL, вызываемой из терминала МТ4 с передачей требуемых для экспорта значений аргументов.

Список использованной литературы:

  1. Торговые роботы и управление в хаотических средах: обзор и критический анализ. Ананченко И.В., Мусаев А.А. Труды СПИИРАН. 2014. № 3 (34). С. 178-203.
  2. Имитационное моделирование хаотического процесса на основе критерия полезности. Ананченко И.В., Мусаев И.В. В сборнике: Седьмая всероссийская научно-практическая конференция «Имитационное моделирование. Теория и практика» (ИММОД-2015) Труды конференции: в 2 томах. Институт проблем управления им. В.А. Трапезникова РАН. 2015. С. 142-147.

© И.В. Ананченко, 2016

Ананченко Игорь Викторович Контактная информация Моб. телефон: +79213201586 ICQ: 361916132 Веб-сайт: http://anantchenko.ru E-mail: igor@anantchenko.ru Вконтакте: http://vkontakte.ru/id8574436 https://mcp.microsoft.com/authenticate/validatemcp.aspx Transcript ID 793398 and the Access Code 9213201586 Microsoft Certification Status: Microsoft Certified IT Professional, Microsoft Certified Technology Specialist, Microsoft Certified Desktop Support Technician, Microsoft Certified Professional, Microsoft Certified Trainer