MT4 - Mysql соединение через PHP

Мне нужно получить / отправить данные с MT4 из / в базу данных Mysql. Я использовал "libmysql.dll" или mysql_wrapper (также основанный на libmysql.dll), но, похоже, он не стабилен.

Я думаю, может быть, я могу использовать PHP в качестве сервера (создание сокета TCP/IP на указанном порту) и MT4 EA/ скрипт в качестве клиента. Или, возможно, используя Apache в качестве сервера (создавая PHP-скрипты для работы с Mysql-соединением) и MT4 EA/scrip в качестве клиента.

Итак, PHP - это мост между MT4 и Mysql. PHP получает запрос от MT4, подключается к Mysql (и при необходимости выполняет вычисления), а затем отправляет результат обратно в MT4. Не могли бы вы дать мне подсказку, как это сделать в Windows XP (у меня на Windows XP установлены Apache, PHP, Mysql)?

Спасибо джек

3 ответа

Во-первых, я предполагаю, что вы пытаетесь подключить клиентский терминал MT4 (не сервер) к базе данных MySQL. В противном случае нет причин для проблем со стабильностью. Если вы используете советник для подключения к базе данных, просто обрабатывайте соединения осторожно, советник не является стандартным исполняемым файлом, код внутри советника запускается на каждом "тике", так что учитывайте это. Поверьте мне, поместить PhP в середину просто усложняет вещи, когда они настолько просты (и значительно снижают производительность!). Если мы можем помочь, дайте нам знать: www.mt4software.com

Я получил этот скрипт PHP, который открывает определенный порт и ждет подключения. Я могу использовать Telnet для подключения к нему. Кто-нибудь знает, как подключиться к этому порту с помощью MQL4?

Спасибо

// usage example in command prompt: telnet 192.168.7.21  168168 
// To quit, type: quit 
// To shutdown PHP server, type: shutdown // //
// **************************************************************


<?php error_reporting(E_ALL);

/* Allow the script to hang around waiting for connections. */ set_time_limit(0);

/* Turn on implicit output flushing so we see what we're getting  * as it comes in. */ ob_implicit_flush();

$address = '192.168.7.21'; $port = 168168;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; }

if (socket_bind($sock, $address, $port) === false) {
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; }

if (socket_listen($sock, 5) === false) {
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; }

do {
    if (($msgsock = socket_accept($sock)) === false) {
        echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
        break;
    }
    /* Send instructions. */
    $msg = "\nWelcome to the PHP Test Server. \n" .
        "To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
    socket_write($msgsock, $msg, strlen($msg));

    do {
        if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
            echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($msgsock)) . "\n";
            break 2;
        }
        if (!$buf = trim($buf)) {
            continue;
        }
        if ($buf == 'quit') {
            break;
        }
        if ($buf == 'shutdown') {
            socket_close($msgsock);
            break 2;
        }
        $talkback = "PHP server: You said '$buf'.\n";
        socket_write($msgsock, $talkback, strlen($talkback));
        echo "$buf\n";
    } while (true);
    socket_close($msgsock); } while (true);

socket_close($sock); ?>

Если я, где ты, я не пойду таким образом...

Может быть, вам стоит взглянуть на очереди сообщений (AMQP - RabbitMQ - ZeroMQ)...

Смотрите этот пост http://worldwide-invest.org/threads/34585-Messaging-queue-AMQP-%28RabbitMQ-ZeroMQ%29-and-MT4

Вы увидите, что я могу собирать тиковые данные, используя любой язык, и сохранять их в любой базе данных, поддерживаемой языком, который поддерживает RabbitMQ (много от Python до Java через C, C++, C# ...) .

Существует также мост между Metatrader и ZeroMQ (ZMQ) https://github.com/AustenConrad/mql4zmq

Другие вопросы по тегам