MT4 HTTP клиент или не одним MQL писать экспертов...

 

Основная проблема (для меня) в МТ4 - это отсутствие отдельного потока для програмного принятия решений. Событийная Модель хороша только для выполнения очень узкого набора действий. а т.к. для меня "родным" языком является java, то пришлось перейти на него. Думаю не я один такой "глупый", что не смог реализовать задуманое из-за ограничений MQL.

Пришёл к следуюшему Apache Tomcat Web Server + Apache Derby DB + собственно мой код.

Собственно какой Web сервер неважно, важен язык на котором будет происходить обработка.

Для связки нарисовал http клиента.

Основа Microsoft WinHTTP 5.1

Работает в синхронном режиме т.е. ждёт завершения операций на сервере. В моём случае это ~0.1 секунд(добавление данных в базу, получение сигнала).

Обмен данными в строковом формате.

Файл http51.mqh

#import "http51.dll"

string httpGET    (string URL, int  status []);
string httpDELETE (string URL, int  status []);
string httpPUT    (string URL, string RequestBody, int  status []);
string httpPOST   (string URL, string RequestBody, int  status []);
string httpTRACE  (string URL, string RequestBody, int  status []);

Как Вы будете обрабатывать URL и/или RequestBody на сервере - это ваше дело.

Если status[0]==-1 то это внутреняя ошибка. в return string описание проблемы. в другом случае статус возвращает HTTP Status Code

ежели кому понадобиться асинхронный т.е. отправили запрос, что-то делается на mql,получили результат по хттп. Шлите письма - сделаю

Файлы:
http51_1.zip  5 kb
 
Спасибо, посмотрю.
 
Спасибо что ткнули носом в багу httpPOST - fixed. Архив обновлён
 
 
JavaDev писал(а) >>

Moved to Code Base / Libraries.

Столкнулся с проблемой асинхронного выполнения функций постановки и закрытия ордеров OrderClose() и OrderSend() на MQL4.

Подскажите, пожалуйста, не встречалась ли Вам библиотека или хотябы примеры подобной реализации.

Возможно, существуют к.л. др. способы ассинхронного выставления и закрытия ордеров.

Спасибо.

 
Непонимаю зачем нужен такой наворот из протокола http, когда можно использовать TCP/IP. И написать свой сервер для обработки входящих соединений не представляет большого труда.
Причина обращения: