samyu813 2023-03-28 16:30 采纳率: 0%
浏览 324
已结题

網頁顯示MT4後台數據

你好
我想做一個網頁版的實時報倉系統,數據從MT4 SERVER同步報價,倉位出來,想問你有沒有關的技術?

  • 写回答

11条回答 默认 最新

  • 小逸2023 2023-03-28 16:48
    关注
    该回答引用ChatGPT
    你好,要实现从MT4后台同步数据到网页上显示,可以使用以下技术:
    1. MT4 API:MT4提供了API接口,可以通过API获取MT4后台的数据,包括报价、持仓等信息。可以使用C++或者其他编程语言编写API程序,然后在网页上调用API获取数据。
    2. WebSocket:WebSocket是一种在单个TCP连接上进行全双工通信的协议。可以使用WebSocket在MT4后台和网页之间建立实时通信,将MT4后台的数据实时推送到网页上。
    3. PHP和MySQL:可以使用PHP编写脚本,通过MT4提供的DLL文件获取MT4后台的数据,然后将数据存储到MySQL数据库中。网页通过PHP连接MySQL数据库获取数据并显示。
    下面是一个使用PHP和MySQL实现的例子:
    1. 在MT4后台编写一个DLL文件,用于获取报价和持仓信息,并将数据存储到MySQL数据库中。
    c++
    #include
    #include
    #include "MT4API.h"
    // MySQL连接信息
    const char* server = "localhost";
    const char* user = "root";
    const char* password = "password";
    const char* database = "mt4";
    // MySQL连接句柄
    MYSQL* conn;
    // 初始化MySQL连接
    void init_mysql() {
    conn = mysql_init(NULL);
    mysql_real_connect(conn, server, user, password, database, 0, NULL, 0);
    }
    // 获取报价信息
    void get_quotes() {
    int count = MT4API::GetQuotesCount();
    for (int i = 0; i < count; i++) {
    MT4API::Quote quote = MT4API::GetQuote(i);
    char sql[1024];
    sprintf(sql, "INSERT INTO quotes (symbol, bid, ask) VALUES ('%s', %f, %f)", quote.symbol, quote.bid, quote.ask);
    mysql_query(conn, sql);
    }
    }
    // 获取持仓信息
    void get_positions() {
    int count = MT4API::GetPositionsCount();
    for (int i = 0; i < count; i++) {
    MT4API::Position position = MT4API::GetPosition(i);
    char sql[1024];
    sprintf(sql, "INSERT INTO positions (symbol, volume, direction, open_price, profit) VALUES ('%s', %d, %d, %f, %f)", position.symbol, position.volume, position.direction, position.open_price, position.profit);
    mysql_query(conn, sql);
    }
    }
    // 导出函数
    extern "C" __declspec(dllexport) void __stdcall SyncData() {
    init_mysql();
    get_quotes();
    get_positions();
    mysql_close(conn);
    }

    2. 在网页上使用PHP连接MySQL数据库,获取数据并显示。
    php
    // MySQL连接信息
    $servername = "localhost";
    $username = "root";
    $password = "password";
    $dbname = "mt4";
    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // 检查连接
    if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
    }
    // 查询报价信息
    $sql = "SELECT * FROM quotes";
    $result = $conn->query($sql);
    // 显示报价信息
    if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
    echo "Symbol: " . $row["symbol"]. " - Bid: " . $row["bid"]. " - Ask: " . $row["ask"]. "
    ";
    }
    } else {
    echo "0 结果";
    }
    // 查询持仓信息
    $sql = "SELECT * FROM positions";
    $result = $conn->query($sql);
    // 显示持仓信息
    if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
    echo "Symbol: " . $row["symbol"]. " - Volume: " . $row["volume"]. " - Direction: " . $row["direction"]. " - Open Price: " . $row["open_price"]. " - Profit: " . $row["profit"]. "
    ";
    }
    } else {
    echo "0 结果";
    }
    $conn->close();
    ?>

    以上是一个简单的例子,你可以根据自己的需求进行修改和扩展。
    评论

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 创建了问题 3月28日

悬赏问题

  • ¥15 微信小程序web-view嵌套H5页面IOS左滑会出现相同的页面,有什么解决方法吗?
  • ¥60 如何批量获取json的url
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼