From ac1153c0914bcde0cebee04271eb48f6047e7c85 Mon Sep 17 00:00:00 2001 From: gavindiaz Date: Fri, 3 Jul 2026 17:29:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=91=E7=AB=AF=E9=83=A8=E7=BD=B2=E6=96=B9?= =?UTF-8?q?=E6=A1=88=E8=90=BD=E5=9C=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Program.cs | 16 +- README.md.md | 731 +++++++++++------- bin/Debug/net8.0/Mt5Bridge.dll | Bin 52224 -> 53760 bytes bin/Debug/net8.0/Mt5Bridge.exe | Bin 151552 -> 151552 bytes bin/Debug/net8.0/Mt5Bridge.pdb | Bin 25484 -> 25776 bytes obj/Debug/net8.0/Mt5Bridge.AssemblyInfo.cs | 2 +- .../net8.0/Mt5Bridge.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 4 +- obj/Debug/net8.0/Mt5Bridge.assets.cache | Bin 160 -> 160 bytes .../Mt5Bridge.csproj.AssemblyReference.cache | Bin 3997 -> 3982 bytes .../Mt5Bridge.csproj.CoreCompileInputs.cache | 2 +- .../Mt5Bridge.csproj.FileListAbsolute.txt | 28 + obj/Debug/net8.0/Mt5Bridge.dll | Bin 52224 -> 53760 bytes .../net8.0/Mt5Bridge.genruntimeconfig.cache | 2 +- obj/Debug/net8.0/Mt5Bridge.pdb | Bin 25484 -> 25776 bytes obj/Debug/net8.0/apphost.exe | Bin 151552 -> 151552 bytes obj/Debug/net8.0/ref/Mt5Bridge.dll | Bin 9216 -> 9216 bytes obj/Debug/net8.0/refint/Mt5Bridge.dll | Bin 9216 -> 9216 bytes obj/Mt5Bridge.csproj.nuget.dgspec.json | 10 +- obj/project.assets.json | 6 +- obj/project.nuget.cache | 4 +- 21 files changed, 490 insertions(+), 317 deletions(-) diff --git a/Program.cs b/Program.cs index 20409df..251e3ad 100644 --- a/Program.cs +++ b/Program.cs @@ -2,7 +2,7 @@ using MtApi5; using System.Reflection; var builder = WebApplication.CreateBuilder(args); -builder.WebHost.UseUrls("http://localhost:8080"); +builder.WebHost.UseUrls("http://0.0.0.0:8080"); builder.Services.AddSingleton(sp => { var client = new MtApi5Client(); @@ -30,6 +30,20 @@ builder.Services.AddSingleton(sp => builder.Services.AddHostedService(); var app = builder.Build(); +// API Key 认证 +const string API_KEY = "UiHMqtaYLZzwBdcuS4RFmEGhgDO8N2eI"; +app.Use(async (context, next) => +{ + var key = context.Request.Headers["X-API-Key"].FirstOrDefault(); + if (key != API_KEY) + { + context.Response.StatusCode = 401; + await context.Response.WriteAsync("Unauthorized"); + return; + } + await next(); +}); + app.MapGet("/health", (MtApi5Client mt) => { var connected = mt.ConnectionState == Mt5ConnectionState.Connected; diff --git a/README.md.md b/README.md.md index 5e8def0..1f900ef 100644 --- a/README.md.md +++ b/README.md.md @@ -1,15 +1,17 @@ # Mt5Bridge — MT5 HTTP API 网关 -通过 HTTP REST 接口操控 MetaTrader 5,零依赖、可独立部署。 +通过 HTTP REST API 操控 MetaTrader 5,可部署在 Windows 云服务器上 7×24 运行。 + +--- ## 架构 ``` -任何语言的项目 (Rust / Python / Node / Go / ...) +任意语言 (Python / Rust / Node / Go / ...) │ - ▼ HTTP REST API (localhost:8080) + ▼ HTTP REST API (带 API Key 认证) │ - Mt5Bridge (C# + MtApi5) + Mt5Bridge (C# + MtApi5) ← 通过端口映射暴露到公网 │ ▼ localhost:8228 MtApi5 EA (MT5 图表上运行) @@ -18,43 +20,179 @@ MetaTrader 5 客户端 ``` -## 快速开始 +--- -### 前置条件 +## 前置条件 -| 依赖 | 说明 | -| ------------------- | ------------------------------------------------------- | -| .NET 8 SDK | 编译运行 | -| MetaTrader 5 客户端 | 已登录任意账户 | -| MtApi5 EA | 挂载在 MT5 任意图表上,默认监听端口 8228 | -| MtApi5 已安装 | `C:\Program Files\MtApi5\`(本项目 `libs/` 下已有 DLL) | +| 依赖 | 说明 | +|------|------| +| .NET 8 SDK | 本地编译(只需编译一次) | +| .NET 8 ASP.NET Core Runtime | 部署目标主机上安装 | +| MetaTrader 5 客户端 | 已登录任意账户 | +| MtApi5 EA | 挂载在 MT5 任意图表上,默认监听端口 8228 | +| MtApi5 安装包 | 安装后生成 `MT5Connector.dll` 等依赖 | -### 启动 +--- -```bash +## 一、本地编译 + +```powershell cd Mt5Bridge -dotnet run +dotnet build -c Debug ``` -看到以下输出即启动成功: +编译产物在 `bin\Debug\net8.0\`,包含以下文件: + +| 文件 | 说明 | +|------|------| +| `Mt5Bridge.exe` | 可执行入口 | +| `Mt5Bridge.dll` | 编译后的主程序 | +| `Mt5Bridge.runtimeconfig.json` | .NET 运行时配置 | +| `Mt5Bridge.deps.json` | 依赖描述 | +| `MtApi5.dll` | C# 端 MT5 通信库 | +| `MtClient.dll` | MT5 客户端通信库 | +| `Newtonsoft.Json.dll` | JSON 序列化 | + +--- + +## 二、部署到目标主机 + +### 1. 安装 .NET 8 Runtime + +下载 .NET 8 ASP.NET Core Runtime(Windows x64):https://dotnet.microsoft.com/en-us/download/dotnet/8.0 + +如果是下载 SDK 压缩包,解压后将内容复制到 `C:\Program Files\dotnet\`: + +```powershell +Copy-Item -Path "解压目录\*" -Destination "C:\Program Files\dotnet\" -Recurse -Force +``` + +验证安装: + +```powershell +dotnet --list-runtimes +``` + +应看到 `Microsoft.NETCore.App 8.0.x` 和 `Microsoft.AspNetCore.App 8.0.x`。 + +### 2. 部署文件 + +将 `bin\Debug\net8.0\` 整个文件夹复制到目标主机,例如 `C:\Mt5Bridge\`。 + +### 3. 安装 MtApi5 + +在目标主机上运行 MtApi5 安装包(MSI),这会安装 `MT5Connector.dll` 等系统级依赖。 + +### 4. 挂载 EA + +将 `MtApi5.ex5` 复制到 MT5 的 `MQL5\Experts\` 目录,在 MT5 任意图表上挂载运行。 + +### 5. 启动验证 + +```powershell +cd C:\Mt5Bridge +dotnet Mt5Bridge.dll +``` + +看到以下输出即成功: ``` -info: MtConnectionService[0] - Connecting to MT5 via MtApi5 on port 8228... -info: MtConnectionService[0] - MT5 Connection: Connected -info: MtConnectionService[0] - MT5 Bridge ready on http://localhost:8080 +CommandTimeout set to 120000ms +Connecting to MT5 via MtApi5 on port 8228... +MT5 Connection: Connected +MT5 Bridge ready on http://localhost:8080 +``` + +--- + +## 三、配置 API Key + +编辑 [Program.cs](Program.cs),修改第 34 行的 API Key: + +```csharp +const string API_KEY = "你的随机密码"; +``` + +生成随机密码: + +```powershell +-join ((48..57) + (65..90) + (97..122) | Get-Random -Count 32 | %{[char]$_}) +``` + +修改后重新编译,将新的 `Mt5Bridge.dll` 覆盖到目标主机。 + +--- + +## 四、端口映射(公网访问) + +### 云服务商端口映射 + +在云服务商控制台配置端口映射,例如: + +| 字段 | 值 | +|------|-----| +| 类型 | TCP | +| 公网端口 | 13485 | +| 内网端口 | 8080 | +| 说明 | Mt5Bridge | + +### Windows 防火墙 + +如果云服务商不自动放通,手动添加防火墙规则: + +```powershell +New-NetFirewallRule -Name "Mt5Bridge" -DisplayName "Mt5Bridge 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow +``` + +--- + +## 五、注册为后台服务(开机自启) + +使用 Windows 任务计划程序,让 Bridge 开机自动启动、崩溃自动重启。 + +### 安装 + +```powershell +$action = New-ScheduledTaskAction -Execute "C:\Program Files\dotnet\dotnet.exe" -Argument "Mt5Bridge.dll" -WorkingDirectory "C:\Mt5Bridge" +$trigger = New-ScheduledTaskTrigger -AtStartup +$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1) +Register-ScheduledTask -TaskName "Mt5Bridge" -Action $action -Trigger $trigger -Settings $settings +Start-ScheduledTask -TaskName "Mt5Bridge" +``` + +### 管理命令 + +```powershell +# 查看状态 +Get-ScheduledTask -TaskName "Mt5Bridge" | Get-ScheduledTaskInfo + +# 停止 +Stop-ScheduledTask -TaskName "Mt5Bridge" + +# 重启 +Start-ScheduledTask -TaskName "Mt5Bridge" + +# 删除 +Unregister-ScheduledTask -TaskName "Mt5Bridge" -Confirm:$false +``` + +--- + +## 六、API 接口 + +所有接口均需在 Header 中携带 API Key: + +``` +X-API-Key: 你的密码 ``` ### 健康检查 -```bash -curl http://localhost:8080/health +``` +GET /health ``` -响应示例: - +**响应示例:** ```json { "status": "healthy", @@ -64,350 +202,343 @@ curl http://localhost:8080/health } ``` ---- +### 账户信息 -## API 接口 - -### 账户 - -#### `GET /health` - -健康检查,返回 MT5 连接状态。 - -#### `GET /account` - -获取当前账户信息。 +``` +GET /account +``` **响应字段:** -| 字段 | 类型 | 说明 | -| ------------- | ------ | ---------------- | -| login | number | 账户号 | -| leverage | number | 杠杆 | -| balance | number | 余额 | -| equity | number | 净值 | -| profit | number | 浮动盈亏 | -| margin | number | 已用保证金 | -| margin_free | number | 可用保证金 | -| margin_level | number | 保证金比例 | -| currency | string | 账户币种 | -| server | string | 服务器名 | -| name | string | 账户名称 | -| company | string | 经纪商 | -| trade_allowed | bool | 是否允许交易 | -| trade_expert | bool | 是否允许 EA 交易 | +| 字段 | 类型 | 说明 | +|------|------|------| +| login | number | 账户号 | +| leverage | number | 杠杆 | +| balance | number | 余额 | +| equity | number | 净值 | +| profit | number | 浮动盈亏 | +| margin | number | 已用保证金 | +| margin_free | number | 可用保证金 | +| margin_level | number | 保证金比例 | +| currency | string | 账户币种 | +| server | string | 服务器名 | +| name | string | 账户名称 | +| company | string | 经纪商 | +| trade_allowed | bool | 是否允许交易 | +| trade_expert | bool | 是否允许 EA 交易 | ---- +### 品种信息 -### 品种 +``` +GET /symbols/{symbol} +``` -#### `GET /symbols/{symbol}` - -获取品种详细信息。 - -**示例:** `GET /symbols/XAUUSDc` +**示例:** `/symbols/XAUUSDc` **响应字段:** -| 字段 | 类型 | 说明 | -| ------------------- | ------ | ------------ | -| name | string | 品种名 | -| description | string | 描述 | -| digits | int | 小数位数 | -| point | double | 点值 | -| spread | int | 点差 | -| spread_float | bool | 是否浮动点差 | -| bid | double | 卖价 | -| ask | double | 买价 | -| volume_min | double | 最小手数 | -| volume_max | double | 最大手数 | -| volume_step | double | 手数步长 | -| trade_contract_size | double | 合约大小 | -| currency_base | string | 基础货币 | -| currency_profit | string | 盈亏货币 | -| category | string | 品种路径 | +| 字段 | 类型 | 说明 | +|------|------|------| +| name | string | 品种名称 | +| description | string | 描述 | +| digits | number | 小数位数 | +| point | number | 点值 | +| bid | number | 卖价 | +| ask | number | 买价 | +| spread | number | 点差 | +| spread_float | bool | 是否浮动点差 | +| volume_min | number | 最小手数 | +| volume_max | number | 最大手数 | +| volume_step | number | 手数步长 | +| trade_contract_size | number | 合约大小 | +| currency_base | string | 基础货币 | +| currency_profit | string | 利润货币 | +| category | string | 分类路径 | -#### `GET /symbols/{symbol}/tick` +### 实时 Tick -获取品种最新报价。 +``` +GET /symbols/{symbol}/tick +``` + +**示例:** `/symbols/XAUUSDc/tick` **响应字段:** -| 字段 | 类型 | 说明 | -| ----------- | ------ | ------------------- | -| time | string | 报价时间 (ISO 8601) | -| bid | double | 卖价 | -| ask | double | 买价 | -| last | double | 最新成交价 | -| volume | double | 成交量 | -| volume_real | double | 真实成交量 | +| 字段 | 类型 | 说明 | +|------|------|------| +| time | string | 时间 | +| bid | number | 卖价 | +| ask | number | 买价 | +| last | number | 最新成交价 | +| volume | number | 成交量 | +| time_msc | string | 毫秒级时间 | +| volume_real | number | 真实成交量 | ---- +### 历史 K 线 -### 行情数据 +``` +GET /rates/from-pos?symbol={symbol}&timeframe={timeframe}&start_pos={start}&count={count} +``` -#### `GET /rates/from-pos` +**参数说明:** -从指定位置获取历史 K 线。 +| 参数 | 说明 | +|------|------| +| symbol | 品种名称 | +| timeframe | 周期:`TIMEFRAME_M1` / `M5` / `M15` / `M30` / `H1` / `H4` / `D1` | +| start_pos | 起始位置(0=最新) | +| count | 获取数量 | -**参数:** - -| 参数 | 类型 | 说明 | -| --------- | ------ | ----------------------- | -| symbol | string | 品种名 | -| timeframe | string | 周期,如 `TIMEFRAME_M5` | -| start_pos | int | 起始位置(0 为最新) | -| count | int | 获取数量 | - -**支持的周期:** - -| 值 | 含义 | -| --------------- | ------- | -| `TIMEFRAME_M1` | 1 分钟 | -| `TIMEFRAME_M5` | 5 分钟 | -| `TIMEFRAME_M15` | 15 分钟 | -| `TIMEFRAME_M30` | 30 分钟 | -| `TIMEFRAME_H1` | 1 小时 | -| `TIMEFRAME_H4` | 4 小时 | -| `TIMEFRAME_D1` | 日线 | - -**响应:** 每根 K 线包含 `time`, `open`, `high`, `low`, `close`, `tick_volume`, `spread`, `real_volume`。 - -> 单次请求最大 50000 根,内部自动分批(每批 1000 根)。 - ---- - -### 持仓 - -#### `GET /positions` - -获取当前所有持仓。 +**示例:** `/rates/from-pos?symbol=XAUUSDc&timeframe=TIMEFRAME_H1&start_pos=0&count=100` **响应字段:** -| 字段 | 类型 | 说明 | -| ------------- | ------ | ------------- | -| ticket | number | 持仓号 | -| symbol | string | 品种 | -| type | int | 0=Buy, 1=Sell | -| volume | double | 手数 | -| price_open | double | 开仓价 | -| sl | double | 止损 | -| tp | double | 止盈 | -| price_current | double | 当前价 | -| swap | double | 库存费 | -| profit | double | 浮动盈亏 | -| comment | string | 注释 | -| magic | number | Magic Number | +| 字段 | 类型 | 说明 | +|------|------|------| +| time | string | 开盘时间 | +| open | number | 开盘价 | +| high | number | 最高价 | +| low | number | 最低价 | +| close | number | 收盘价 | +| tick_volume | number | Tick 成交量 | +| spread | number | 点差 | +| real_volume | number | 真实成交量 | ---- +### 当前持仓 + +``` +GET /positions +``` + +**响应字段:** + +| 字段 | 类型 | 说明 | +|------|------|------| +| ticket | number | 持仓编号 | +| symbol | string | 品种 | +| type | number | 类型(0=买, 1=卖) | +| volume | number | 手数 | +| price_open | number | 开仓价 | +| sl | number | 止损价 | +| tp | number | 止盈价 | +| price_current | number | 当前价 | +| swap | number | 隔夜息 | +| profit | number | 盈亏 | +| comment | string | 注释 | +| magic | number | Magic Number | ### 挂单 -#### `GET /orders?symbol={symbol}` +``` +GET /orders?symbol={symbol} +``` -获取挂单列表。可选参数 `symbol` 过滤品种。 +symbol 为可选参数,不传则返回所有挂单。 -**响应字段:** +### 订单预检 -| 字段 | 类型 | 说明 | -| -------------- | ------ | ------------ | -| ticket | number | 订单号 | -| symbol | string | 品种 | -| type | int | 订单类型 | -| volume_initial | double | 原始手数 | -| price_open | double | 挂单价 | -| sl | double | 止损 | -| tp | double | 止盈 | -| magic | number | Magic Number | -| comment | string | 注释 | - ---- - -### 交易 - -#### `POST /order/check` - -校验订单参数(不实际下单),检查保证金是否足够。 +``` +POST /order/check +``` **请求体:** - ```json { "action": 1, "symbol": "XAUUSDc", "volume": 0.01, "order_type": 0, - "price": 4170.50, - "sl": 4168.00, - "tp": 4175.00, - "magic": 12345, - "comment": "test" + "price": 4180.0, + "sl": 4170.0, + "tp": 4190.0, + "magic": 123456, + "comment": "test", + "deviation": 10 } ``` -**action 取值:** +| 字段 | 类型 | 说明 | +|------|------|------| +| action | number | 交易操作类型 | +| symbol | string | 品种 | +| volume | number | 手数 | +| order_type | number | 订单类型 | +| price | number | 价格 | +| sl | number | 止损 | +| tp | number | 止盈 | +| magic | number | Magic Number | +| comment | string | 注释 | +| deviation | number | 偏差 | -| 值 | 含义 | -| ---- | -------- | -| 1 | 市价单 | -| 6 | 限价挂单 | +### 下单 -**order_type 取值:** - -| 值 | 含义 | -| ---- | ---------- | -| 0 | Buy | -| 1 | Sell | -| 2 | Buy Limit | -| 3 | Sell Limit | -| 4 | Buy Stop | -| 5 | Sell Stop | - -**响应字段:** - -| 字段 | 类型 | 说明 | -| ----------- | ------ | ------------------ | -| retcode | uint | 返回码,0 表示成功 | -| balance | double | 模拟下单后余额 | -| equity | double | 净值 | -| margin | double | 所需保证金 | -| margin_free | double | 可用保证金 | -| comment | string | 错误描述 | - -#### `POST /order/send` - -实际下单/改单/平仓。 - -**请求体(嵌套结构):** +``` +POST /order/send +``` +**请求体:** ```json { "request": { - "action": 6, + "action": 1, "symbol": "XAUUSDc", "volume": 0.01, - "order_type": 2, - "price": 4165.00, - "sl": 4160.00, - "tp": 4175.00, - "magic": 12345, - "comment": "my_bot", - "order": 0, - "position": 0, + "order_type": 0, + "price": 4180.0, + "sl": 4170.0, + "tp": 4190.0, + "magic": 123456, + "comment": "test", "deviation": 10 } } ``` -**字段说明:** +### 历史成交 -| 字段 | 类型 | 说明 | -| ---------- | ------ | -------------------------- | -| action | uint | 参考上表 | -| symbol | string | 品种 | -| volume | double | 手数 | -| order_type | uint | 订单类型 | -| price | double | 价格(市价单可不填) | -| sl | double | 止损价 | -| tp | double | 止盈价 | -| magic | ulong | 自定义标识 | -| comment | string | 注释 | -| order | ulong | 要修改的订单号(改单时用) | -| position | ulong | 要平仓的持仓号(平仓时用) | -| deviation | ulong | 最大滑点 | +``` +GET /history/deals?date_from={from}&date_to={to}&symbol={symbol} +``` -**修改订单:** 设置 `order` 为目标订单号,只需传要修改的字段。 - -**平仓:** 设置 `position` 为持仓号,`action=1`,`order_type` 与持仓方向相反。 - -**响应字段:** - -| 字段 | 类型 | 说明 | -| ------- | ------ | ------------------------ | -| retcode | uint | 返回码,`10009` 表示成功 | -| order | ulong | 成交/挂单号 | -| comment | string | 服务器返回信息 | +**示例:** `/history/deals?date_from=2026-07-01&date_to=2026-07-03&symbol=XAUUSDc` --- -### 历史记录 +## 七、调用示例 -#### `GET /history/deals` +### PowerShell -查询历史成交记录。 +```powershell +# 健康检查 +Invoke-RestMethod -Uri "http://IP:端口/health" -Headers @{"X-API-Key"="你的密码"} -**参数:** +# 账户信息 +Invoke-RestMethod -Uri "http://IP:端口/account" -Headers @{"X-API-Key"="你的密码"} -| 参数 | 类型 | 说明 | -| --------- | ------ | --------------------- | -| date_from | string | 起始日期 `yyyy-MM-dd` | -| date_to | string | 结束日期 `yyyy-MM-dd` | -| symbol | string | 可选,过滤品种 | +# 实时行情 +Invoke-RestMethod -Uri "http://IP:端口/symbols/XAUUSDc/tick" -Headers @{"X-API-Key"="你的密码"} -**响应字段:** +# 获取 100 根 H1 K 线 +Invoke-RestMethod -Uri "http://IP:端口/rates/from-pos?symbol=XAUUSDc&timeframe=TIMEFRAME_H1&start_pos=0&count=100" -Headers @{"X-API-Key"="你的密码"} +``` -| 字段 | 类型 | 说明 | -| ---------- | ------ | ------------ | -| ticket | number | 成交号 | -| time | string | 成交时间 | -| entry | int | 0=In, 1=Out | -| magic | number | Magic Number | -| volume | double | 手数 | -| price | double | 成交价 | -| profit | double | 盈亏 | -| commission | double | 佣金 | -| swap | double | 库存费 | -| symbol | string | 品种 | -| comment | string | 注释 | +### Python + +```python +import requests + +BRIDGE = "http://IP:端口" +HEADERS = {"X-API-Key": "你的密码"} + +# 健康检查 +resp = requests.get(f"{BRIDGE}/health", headers=HEADERS) +print(resp.json()) + +# 账户信息 +resp = requests.get(f"{BRIDGE}/account", headers=HEADERS) +print(resp.json()) + +# 实时行情 +resp = requests.get(f"{BRIDGE}/symbols/XAUUSDc/tick", headers=HEADERS) +tick = resp.json() +print(f"Bid: {tick['data'][0]['bid']}, Ask: {tick['data'][0]['ask']}") + +# 获取 K 线 +resp = requests.get(f"{BRIDGE}/rates/from-pos", headers=HEADERS, params={ + "symbol": "XAUUSDc", + "timeframe": "TIMEFRAME_H1", + "start_pos": 0, + "count": 100 +}) +print(resp.json()) + +# 下单 +resp = requests.post(f"{BRIDGE}/order/send", headers=HEADERS, json={ + "request": { + "action": 1, + "symbol": "XAUUSDc", + "volume": 0.01, + "order_type": 0, + "price": 4180.0, + "sl": 4170.0, + "tp": 4190.0, + "magic": 123456, + "comment": "test", + "deviation": 10 + } +}) +print(resp.json()) +``` + +### curl + +```bash +# 健康检查 +curl -H "X-API-Key: 你的密码" http://IP:端口/health + +# 账户信息 +curl -H "X-API-Key: 你的密码" http://IP:端口/account + +# 下单 +curl -X POST http://IP:端口/order/send \ + -H "Content-Type: application/json" \ + -H "X-API-Key: 你的密码" \ + -d '{"request":{"action":1,"symbol":"XAUUSDc","volume":0.01,"order_type":0,"price":4180.0,"sl":4170.0,"tp":4190.0,"magic":123456,"comment":"test","deviation":10}}' +``` --- -## 项目结构 +## 八、迁移到新主机 -``` -Mt5Bridge/ -├── Program.cs # 全部代码(单文件 ASP.NET Core) -├── Mt5Bridge.csproj # 项目文件 -├── libs/ # MtApi5 依赖 DLL -│ ├── MtApi5.dll -│ ├── MtClient.dll -│ └── Newtonsoft.Json.dll -└── README.md +### 需要复制的内容 + +| 从哪里 | 复制什么 | 放到哪里 | +|--------|---------|---------| +| 本地 `bin\Debug\net8.0\` | 整个文件夹 | 新主机 `C:\Mt5Bridge\` | +| MtApi5 安装包 | 运行 MSI 安装 | 新主机 | +| MtApi5 项目 | `MtApi5.ex5` | 新主机 MT5 的 `MQL5\Experts\` | + +### 新主机操作步骤 + +1. 安装 .NET 8 ASP.NET Core Runtime +2. 运行 MtApi5 MSI 安装包 +3. 复制 `bin\Debug\net8.0\` 到 `C:\Mt5Bridge\` +4. 复制 `MtApi5.ex5` 到 MT5 Experts 目录 +5. 在 MT5 图表上挂载 MtApi5 EA +6. 配置云服务商端口映射(如需要外网访问) +7. 配置 Windows 防火墙 +8. 注册任务计划程序实现开机自启 +9. 验证:`Invoke-RestMethod -Uri "http://localhost:8080/health" -Headers @{"X-API-Key"="密码"}` + +--- + +## 九、常用维护命令 + +```powershell +# 查看 Bridge 是否在运行 +Get-ScheduledTask -TaskName "Mt5Bridge" | Get-ScheduledTaskInfo + +# 查看是否在监听端口 +netstat -ano | findstr 8080 + +# 查看 .NET 运行时版本 +dotnet --list-runtimes + +# 手动启动 Bridge(前台调试) +cd C:\Mt5Bridge +dotnet Mt5Bridge.dll + +# 杀死 Bridge 进程 +Stop-ScheduledTask -TaskName "Mt5Bridge" ``` -## 部署到其他机器 +--- -1. 拷贝整个 `Mt5Bridge/` 文件夹 -2. 确保目标机器安装了 .NET 8 SDK -3. 确保 MT5 客户端已登录 + MtApi5 EA 挂载在图表上 -4. `dotnet run` 即可启动 - -## 修改端口 - -编辑 `Program.cs` 第 5 行: - -```csharp -builder.WebHost.UseUrls("http://localhost:8080"); -``` - -将 `8080` 改为其他端口即可。 - -## 连接超时 - -当前 CommandTimeout 设为 120 秒(通过反射设置),适用于请求大量历史 K 线的场景。如需调整,修改 `Program.cs` 第 14 行即可。 - -## 常见问题 - -**Q: 启动后一直显示 "Connecting..."?** - -A: 确保 MT5 已打开并登录,且 MtApi5 EA 已挂载在任意图表上。EA 默认监听 8228 端口。 - -**Q: 请求返回 500 错误?** - -A: 查看 Bridge 控制台输出的错误日志,常见原因:品种名不存在、MT5 断连、数据量过大超时。 - -**Q: 能用在其他语言的项目中吗?** - -A: 可以。Bridge 是标准 HTTP REST API,任何语言的 HTTP 客户端都能调用。详见上方 API 文档。 +## 十、安全建议 +1. **API Key 必须修改**:部署前把默认的 `mt5bridge-2024-secret-key` 改成随机字符串 +2. **端口号不要用默认的**:使用 13485-13489 范围内的随机端口 +3. **防火墙白名单**:如果只有固定 IP 访问,在云服务商安全组里限制来源 IP +4. **不要用 HTTP 明文传输敏感数据**:可配合 Nginx Proxy Manager 加 HTTPS +5. **定期更换 API Key**:修改 `Program.cs` 中的 Key 后重新编译部署 \ No newline at end of file diff --git a/bin/Debug/net8.0/Mt5Bridge.dll b/bin/Debug/net8.0/Mt5Bridge.dll index 1f3ac7d8f3f315e214bee507cb4090e260e93b53..0cd8ecf135b38b5de368912096e33be44487bea0 100644 GIT binary patch delta 19579 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 agm)!XwO#g?R#n}8dRySg7s{3j=l=m432V{- delta 17857 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 diff --git a/bin/Debug/net8.0/Mt5Bridge.exe b/bin/Debug/net8.0/Mt5Bridge.exe index 07fe1d2389170541e627c39f3c409ceb37ec3b15..9b91761c1a4addf3d99108b343bc5f172ceb3bbe 100644 GIT binary patch delta 99 zcmZozz}WyqEsR^3IDGw$7|a delta 99 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 NoRKjjkw6HMR7_eh7$E=v delta 55 zcmV-70LcHK0iXdXP)kQa3;+NCX(BJ*a3>ABsq1tazs|gdu=K`hZg^O?&uaH;Nr3vS NoRKjjkw6HMR7_d47vTT^ diff --git a/obj/Debug/net8.0/Mt5Bridge.csproj.AssemblyReference.cache b/obj/Debug/net8.0/Mt5Bridge.csproj.AssemblyReference.cache index adc239f5b2ceef543e45a2fade4cb07e3d74995c..d62b2a8cee3a98aabf9f82ebf94b223604c4a050 100644 GIT binary patch delta 43 tcmbO$-zU$(#>mXTz`$rR`8JdMMxAv`j8-7l=KoBOm>3mXTz`$rbkwcy(u_(28quP2VMtc}<^B1PaOpI=D?l;yMoB(=r58D6$ diff --git a/obj/Debug/net8.0/Mt5Bridge.csproj.CoreCompileInputs.cache b/obj/Debug/net8.0/Mt5Bridge.csproj.CoreCompileInputs.cache index 626a4dd..de21020 100644 --- a/obj/Debug/net8.0/Mt5Bridge.csproj.CoreCompileInputs.cache +++ b/obj/Debug/net8.0/Mt5Bridge.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -24217677bf38b3110e8f08546d3dc4465f97487641f8f2dc6cd22a663bb79f21 +e4a3bf35146236aef5bb528777d38d0e2ac57b458c987684a599a9692351687b diff --git a/obj/Debug/net8.0/Mt5Bridge.csproj.FileListAbsolute.txt b/obj/Debug/net8.0/Mt5Bridge.csproj.FileListAbsolute.txt index 0906da1..869d32c 100644 --- a/obj/Debug/net8.0/Mt5Bridge.csproj.FileListAbsolute.txt +++ b/obj/Debug/net8.0/Mt5Bridge.csproj.FileListAbsolute.txt @@ -26,3 +26,31 @@ C:\Users\Administrator\Desktop\ares\Mt5Bridge\obj\Debug\net8.0\refint\Mt5Bridge. C:\Users\Administrator\Desktop\ares\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.pdb C:\Users\Administrator\Desktop\ares\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.genruntimeconfig.cache C:\Users\Administrator\Desktop\ares\Mt5Bridge\obj\Debug\net8.0\ref\Mt5Bridge.dll +C:\Users\Administrator\Desktop\Mt5Bridge\bin\Debug\net8.0\Mt5Bridge.exe +C:\Users\Administrator\Desktop\Mt5Bridge\bin\Debug\net8.0\Mt5Bridge.deps.json +C:\Users\Administrator\Desktop\Mt5Bridge\bin\Debug\net8.0\Mt5Bridge.runtimeconfig.json +C:\Users\Administrator\Desktop\Mt5Bridge\bin\Debug\net8.0\Mt5Bridge.dll +C:\Users\Administrator\Desktop\Mt5Bridge\bin\Debug\net8.0\Mt5Bridge.pdb +C:\Users\Administrator\Desktop\Mt5Bridge\bin\Debug\net8.0\MtApi5.dll +C:\Users\Administrator\Desktop\Mt5Bridge\bin\Debug\net8.0\MtClient.dll +C:\Users\Administrator\Desktop\Mt5Bridge\bin\Debug\net8.0\Newtonsoft.Json.dll +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.csproj.AssemblyReference.cache +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.AssemblyInfoInputs.cache +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.AssemblyInfo.cs +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.csproj.CoreCompileInputs.cache +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.MvcApplicationPartsAssemblyInfo.cache +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\staticwebassets.build.json +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\staticwebassets.development.json +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\staticwebassets\msbuild.Mt5Bridge.Microsoft.AspNetCore.StaticWebAssets.props +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\staticwebassets\msbuild.build.Mt5Bridge.props +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\staticwebassets\msbuild.buildMultiTargeting.Mt5Bridge.props +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\staticwebassets\msbuild.buildTransitive.Mt5Bridge.props +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\staticwebassets.pack.json +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\scopedcss\bundle\Mt5Bridge.styles.css +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.csproj.Up2Date +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.dll +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\refint\Mt5Bridge.dll +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.pdb +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\Mt5Bridge.genruntimeconfig.cache +C:\Users\Administrator\Desktop\Mt5Bridge\obj\Debug\net8.0\ref\Mt5Bridge.dll diff --git a/obj/Debug/net8.0/Mt5Bridge.dll b/obj/Debug/net8.0/Mt5Bridge.dll index 1f3ac7d8f3f315e214bee507cb4090e260e93b53..0cd8ecf135b38b5de368912096e33be44487bea0 100644 GIT binary patch delta 19579 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 agm)!XwO#g?R#n}8dRySg7s{3j=l=m432V{- delta 17857 zcmb_@d3+RA*7m9D>gww1Exjfr9nu{V2qa*Dfb1p)K}K+axM2{&rZ`|jf)2>ii6Ee& zh=sm@iezMXaRwJAilUy92bb%-o+U8!L zj`~vy`JveV2ckMFtyWlvnwzm7;N?VHMw3|($*IU}#u)?eR6 zzmrWYI^D!?*u-OEf_qMwc$J4PwrYk)qmN7H;x3(kw2CV8&e|>d8@lMf;z>(Rx4)O| zKOsZ8r|e0H$i^SAuCFXM99Cj&t<1|J8zi#ql)+f$X{fMzeTvnx0v7v#L@QmCM4P|@ zQtHrQC%za1oW;r0h-Wo`LE3TbQReq%4J$$)+dw zGM`7yyluTXuwV8a^qBMpc0?)r9puK*h`;PzNIp-j>^-y*(srU6XQjq4CyBqV-=#71Vjl%#< z9T+0V2lj## zYOZcjIU3&RsN0qM1C8#=`+>&eDk{xIi?WAd;ODuG=W}*{Vq?K_3J3d80rI<9Au8njNOKj1GoPY+jtQ~1h@6@aEMj-~ zA?9R0!<4-iKj`(H)|-1;Z^itm|FrJ-Y2EXqffK#Cw+**0IkRZ;|G@K! z1^XOwnTCTJ4SsxXG(?S;VHsVGi-6&fedNC6A%_6exV(#+Phu>Rb1Xg*$1j`{i^aUqKs)xEi12abJVznSTg=Blu6jZv{^b?ZD7cGB&AaaE~;bjsi~P`W@t0ETTCf zYh}8)B%=>JR_e4@B`UJQLtADfLU8##hWDL1$hLiRDYR#-E&|=a$dY8fTxR zXO&;6HQsoV4lchyYrOX)tt_wB8g~n|z8QK>_TO;f3u=CMUz%^jQ?(*V_%^ro8dcSH1zTL(Hv^5fX{G_9JR)JTlVpoA09hYUGPxiDFK!nKCsU!8PxE+j$IOEoH??kP=HLdH&otj| zl6F&QHwAW6+8M=Q*fD7d?82)6_Z4bjwVrsKzt zdpwyRWMUu_zT%>lUU~xI_K;OCyNln)H9ewadcsmquLm~^ysKW2u#{0HR&taVFSExq z9FV477~tIR%OD2I$9popA$T%i}pSuLB_l%KLdTRS-OxL4t#UC){R#WH|ekqlTCXXBF?cWoKfJsY!#| zfbPi*fud(n%M3;9mopehM71Gr^S%ag^fJTH5yhU$Sv0~%g?q@OcAq{*4ivJT!Fu!ROY-Gypa}m~ZFXKzcz|kHdJ`Qc) zS~XE>$`h>WS#}fq^{e)ytb*rkKaA7w$KYK{UBaC{btyN;;uqolOpQA;Ve35D>e(fL z6VHi>V@fvQtw^61clYp#xW{7}{r*)P*RFYOJlQXK4QWI_r7ExEQ8&VU*#u0>oDYa< z5v}Y32z}2{b5GYPzJXR0bY1uA$ccTCb%*VxvfLA`UA4Ibnt4rQ_Cb~t684r&;)FjgP>YV) zN2qIeS)KJ=ZFi;A`qMe(qv|Vh8^)2}k9I!ZSb9ua*f{6ftD1N%hfE@x8G-KNNp$Zl zq8#XYjJ#kLj764I0M_yGAeL^)Oz1FzNvP@WLgB4xlAPTwA1ueT6!$5_~yyC>f&iLe^iJb2O~eyzn(~onFbgCW~fG z4wGL97E6aA^5;2hVrPi4E_^7d)8C8w#&o&_=5+eA;QSnxKf)N3Ru)tgnDlO~rEe@kzJk87ARS4yt67~!s(oV#dLVUiB1ppud1xmz`7}X! z*sar3kaap9=McXU+!N=?Inj1CNSC>J{E8&Ic?#x&^ebR@I_$qMQcO|h5OV!QLMf7D zhDo^P(OZzx_}D99Jxhn^7EGQgjvonfu4gHX+hA0uaRt7@e5#O87DqUgBw{z|S>)Q2 z3c5E(deXxM&5=H|G+q<$Lmw2@#Jkg@z<%_7VMRed+KiF?=-Ps(B05b7ap+eg=pYT( z7_$qKoWVZ>Z2ERA4h9uo6CXfnL>;7gAs%!@hRzUt-Nl;MMSeo$^B@nV2a7IF==3xK z9Y$k{-o|QuCE*^Uhux#-&OipMd$-Ig6!)sgk7cD9A*z(fO9fTY9D##k8r%I)xR~Z7 zc`*wm#LhGa>Q`>Tks?~hXAlPxM^DM2DLA1cPqJRZ+=S;@^fd`H_*wwF1uQ!f<(M8q zUxJa5)RXwml|%V3IufUUxG+?Bz|Nqt!hQx%Bk4@S6^4S4`iIuHG&IRW^!sVHfB)9VJ_@AU$&@dSXnFAOa7#DT+o-GGD4LSToH z2G)2=fwPU?z-v5gd90T$?`25ok|J=e>ozxS}| zcRXx*jLD|+d~AA|1ie@s9G5J68ytGO*k9ve`@hoJ{-YB5nFia>+7osf98tbZcta+9 zDHAq%P6hOc@#C?r~JKNy(n4%*x<_Zn_7Vle#2}MR4DhmJJA>N|-U7}*p>KRk@Ja7s-*Vs$z82t}zBRxZBEKZq z%g_4pzIDKfejYj8&vHQUL(%`#e|OfGrf*W4flHEGe1oap_20e(9`Anzyq_KiZcttX z9#%dBj#e2DC|?0vRUMbiel-p}qV@(Vu2H~guE{_zE%58qTzE6^ugTkh8$x#h-!0e( z92L6{$h}#Go}{1S^X7B39r%#)u>Zmot|3}w{HAE6TcOJw7SQ*gf11M{j6Dl>wZrzr z_JPf}S>Ef(Z!vG9u$QQ{aKGP8dAOX3UZUc_YP_ecaai}r_AK5K#}sqtDr1Fvq}xO1 zJ8V*VkKaR=IP7;t&w^cPGq~8GduXXJ+l5Jo9mXzvG@^&?5H83^ZwXsv+z=b-_S1(B zn;qEW&-&?)4sFz*_50~_hs{Xu1N+KhpQR6iedn+xMQ?$rC3e_PC*K1z9o9Q|2rS|- zv$zv1-(iWsr(nenn^^pX-=C#E4xOF)8#)I#Y+dXduwf3nB=8;B*$#UldK_%L&9D}i z>VA4hn7tMSw6v$4J+DQQj_@-K7N6H5N%Qe(j#s;PaHPACvWpzLFTTfLNX-tLkL50; zH4ZxqYf(sdIBcbU5NxBvDx+_KZFSfu?)SiUIIN@S5ZI#*+Z^izd(vUQO@9iuH|x-< z#229Z9o8298`v8TD+zrA_P)awq`m{|a9E=FIM@-J$yyYm5@hGgN3VkN`r3@wqA#uN zXER=lzU1$Zk4L;1zl)A^_oG;UVK6h-(~nAo*-Lr`UEwe`Q%Or5#%3z%d3&BQ9!uJv ze(SK6xMKR#TMny?J`47t!xmyi`_mu$qZrNZ*98xPe(rR>>wXLDD~C-kd=Kn9hn*EY z1f~r*5$GmQf2tE^2Rf9h2Xdc%sSP84mCZQNVRY>vnJ0k`r|ZGsf0Z#Ww#Pr5mOGvA zMV2SK;VS_^l!R~fgCioWE7KicP52x)8%i=m1PLJ9QE4s;pCkZ@SaA>?S zwe%&ktP|;Idh$%WlOr8X`9qnlGA>Mwbe}`T4m%p%<3ES`I7|;c3pT)E>w^2hhB@rY z*g>$f9Ttkc1@;q%jZM4-xD87DZAt{=s0RaP>bM9XbzaE6m;mBTp0Np!oz zE{N^}yW3%$;UwDPFwSriZFd-FIEfy1*k<=3u-y)er#r#++AJ^odh%D^NtAb%9UJdV zJ*BE`#%FyBX*D+ExTnw^XER%63=52OUr8GsmcXs_O4{nMiN()??Qq!a)IP9B9kvc( zUrA3o?2>HYEzrFVeIfcD*nWq_u`yTD8#a?8bS0%~?O-_2+2kK>GY<4Bdf#Cj=v6dq z%&9=Hrn4RPZNVP@)$|jG#nahmK_}W2E;i^_(|lp}9{!ZxcNn{vOO<#4K5;9ZOD_qt z59vI5&0*t%d;Ih0U5E9+TFj%59k$uM5A0Ki;j+(y{>7os`QHNjr^9Ba-UB=4umiC} zVEVasPJBq`QP5#Wqo0B$9L9%q9;IxCls204XpJyCrA73@I6DbWDZ7~7`N^rA7Sm%W zQxUBvg|xs8^#1wGR>6#pPrrwSSu_h(#3kgvfcq?bQqBo1rJM_8q){H%&1ID5u)*=% zz%oiZ>}Yg59?g3@OpE2v@+=K-=(=DskfmV`+Z-$bt996sVBbJ9o#(J`gM+~89QK?) z8EBz;haK>jfX#APD3%P|Nb?+)h?Rg{@366nWMBnlmpkhi!I`3aq4c4%_A) z1Gdp&@$`1OiMBc{jgKHV(Sr{AwqR6X7434Ek{ko}l*8_gj|!}&=NeXZ#&F|&NXz%X0rG<)8CxF+tL>VZl-@ZY*V@pOu0xFUq;?STt>4uZF1lisucDD z9dKV2SW8QVS=14kAGnQnUnK8;>+^n>ye@D%J%4f{J`2;U!dBpIaxwZgPGqAiXa_Y1 z*3ml-yHB|-a0k7L4}#qHXJuz#J#}1cvkB_Xzy`YG5}W-}eJt=_wCHl1y{$YKxR3T< zF7JOU=uP#Fz!q9F+3x(i+8MZ?F1*5Krt9lKE5+(OOmmxWa?a*{JJ0gwLlM zJp;sZahT2UpF*qgfm5YR@eJ#t4>11p-sKpt(lsatx#)V>(da6Sbki3=ow6A3q34qP zRhPa&B5#(0#rQ`u%EttsJni~vd5X(P77PVxGV~$ZAN`>lo~+W#adxu?Mm4GxH*4Th zrz(v1&}RtLpu_0((iT`V={1b;(U1h;do)iVr2u8iP{az-b#NJ?e1vj(HXrDgH+i*mu#OVF5R+yx@@0Ew$J$SxmircBRUp@V?5oooiQ)Ci+W*eG|9j% zdFyl#H4%?EGw2|)Kanx7ke%`A)|OyX6go%N^+R~Hd-3^?&-VWh{HJWtQZYRWK`8Vh zj-EoJu@MUW3B5Lw{3)`PYF0WSXr58E{7t)4d5jWzp!X|h!^ zEr}Ri5|QSZ=Gav_AZznhFivk`fnUeJ359_=bpx8z8<<1=1&0dO2#yoHNbqvO2B1Q7 zfI2M@&CS3#tT6R?2x2(p}_1)ysTIDw7mpYbT>R5iMWBH|ywOH)L z=%&=w6vG2{BR=V|oD{i4(ic;>(ic;>&=*s< z&=*s<&=*rs=*yzvN?%OjN?%OjN?%OjN?%OjN?%OjN?%OjN?%OjN?%gpN?(b>g}V}% zI|s;>z7mBieI*K)u}T!K^pz-F=_^sV(pMqlD-@y(l;8WCjhz9H(KFJ z-)My^eWNixpp2LC;}x#-jfZ9&9!oiaI^=y0upAcZV1ELTSEx?mLSLPd08FKHUuagOPyIk4r zl!{kE{tLc&vQt@)PsQytGkCW9F-QJGZ~`=s`_Bdri87WX&UXLC>Ak}}85%DhRom&$ z1uUz<<+!3Tgd zig&uZDMO3ffcJ-<0d5PoL%-7hvO6vExKw`!xB(hpau4vnKs&Hkw%R~#)WCdb-}wl+5XB|P<@YS zn>?Dz?l-A_h_}OB-{S6u9~zx@sn^FUj83X89AMO7WHoR)HUg-RF~+IbUf3_Xu&^N$WAUlWJtvg2)>00VO*WS$5Lp$#t0gS>SH(Xbk-oWOwwCcRb`x zo;sO4PU#oW&2fquSnnC9j4fuoBE`5835-+5h`tSLIZpX^YCD3n{3)|u=FSwnNGx2W zd{S_i=OP)ii>kAs>1HSWtLSRre2Fe!qWei?J~WldMZmp*W^*n~Y&171yNZsu!>(|A zx4BS#KlL(@S7IqJs&&#=?yt<=t|`UGFiTG1viNPU3AX%MiM&IX<*`bkuf z4b_M_{^zsnL$&l%^5ry$W`<~HKyyz{i)dDeW(72V&Dn~N=k{x z==X_!AN0o~FCg3{p$_Tol-^IIH~R^?2S!O@bBe;5xfBk?rTmmWjiyD@Lo_|0X^qv0 zrdBky(5#F%h-QXpW|^sbQJ73l4oyH)h9qJJPO9S@-6=G?u~(JmeP zMBgErPSJd#+zO+gz;v5mQ6*57H7=DkY0>l$O%Ku3h^AKMWEw=CA##hzD@1Npvux-A zA??!9DX6$upBAhUY!GY_T~Qh=b&8B{+VEOxY#}9bTI6bxYea4kY|)ys z7}P4HU9eM7af^Gw8o>s^7Qt4*ZEg;tUF1$dMdw+X&ib^-)jEe#Bl0wn8$@mvxdn2z zEwoigt8}yrc8I1^Wb#Nh9?3@Jw8+&W*N8mY!!8>{ZV_x1Y!~blR18T;utsp20n6D? zgOFw>p%#%>8fXj(ky}J=6}eU9c9Gjf?i9IG z3AGDS2;Uz=bRmm6L#YruOGDltDhaWhYSGj{^ViTcksBbt6KWA`1%4lD$H+E+hxB%e zOgU^PC0H%kki%nI1X~67hIvc}FnfLIaG0G@gjHIE<&?-JklXyt5niE{B5#fG4QH!p z_6l|g9+qB;^2n56wcs?tX2Gq3dj(&JvX>5)v!TNvEg_2WWGyD{MJ|Ed=C2lcnqafw zO3`l>d2j4i%-t(;hsYfwAC@r`mw*JT1xLr(*EErv1?yIdYO9bAK}ztnX^DGiHSht* z9SP36I+t;pV6!0Qu_h&0E!dIAt7vVX+o!~EC*4!s%iOoR58?aZTl8~1M?9Uzx5iv= zyVo?U&0m`bP3vEChh_H`jljqIuwDavD288UpyqZS5RWauOVh0XposO$W30I*z?$oI z)?Ah5kzb@Q1ZIma20oXZ4D1`^vPrObCNMuR2Y5;GwZP>mE;3m${7e9~nPtHJ+31aE z`Uctb%W*cnMx51(=`}i=u8Okh&)jVKa1oo{5@XY^rP=h51e<;$%%;miZ2Gzso6aw0 z%O6D9@>H?EMv|owKLsg-F5E2xNG&r`kVTn@Y|)?o*O(5c}k3W;|b$)BkUdEo$9^M`>FS9Zy$4j zxyIaU{*M{;mH4z~E{1je%c6{EbWu$6ak{7JvNXpRLgAC^QeFSrg`Ph7K2$MJn~b@B zRJ2alP4f->58WK!&h9@PH^+Awbl9k_PUiS-{E>n0{)p}=lzLB}JI$B>!|V{?y8j5K z(f2kg+|FG1m%nMg461ebN;>M+G1TMYc=4Y`JMn`CZl6lU9-f$lL;+GBd%LF?%>D6xR*rez3*s)1>=Cfmys=Bdblitf^$0qH{Wydfe z>uu73d{C6aCrSW8x7{HeVb9v=*oCI>{_FPbk&>v;XA~ap*N9X~WAAw_D z`UtJf;{fnem^_{LKSJXqfCyFO^9n?$XE$Df2$q^xAVLMQ^!NdtoROI0Am%uTISyh} zlE)5Wj)NFG5N_L#VLscB!5$j?v^AcKQaKBn9Fhcm&fky(|Ee1sN??yU(ggOH4JEM0 zyj2OuKpqV6{5-l?_Bzke=Q{!BV%$qMAtzwlxtIzVOp!w=zdQzJfA3yo^O@6JZ^P@5ms+DqUsLgJ>?bSR@Lph zOC5~YMONveIo9gMMb`F3Ro3A}J*?p3m6m=(+}ghQ;`pecQ>Ru=?LUx4jF`|c=h{&v zqoz-tYUSN9x9$ELmb<#0vuM_g>lV(cXj#`fIK2(ArBqZDTh)p@bI9o!GE&Ruk1`<}Ze1O}YEmZNvX-k<#|u z#xoS_-a4bVCb#+T_4}1_>%c?hZPh#a=(xX(?bg0= z?D(GN-`!{ThSBk=TI;aDJTga(%!@2=r&J}G7tT>I;3)pL_1#G`mB<2b4rj({rlU1Xy*MZ% z7Q`cl7F2^lKe-|;-bhOz7-f$jI^Nh@|;8B)dM+d{<|INtLCEv*a7!8- z-9ay@7;+o_$1GLWDCte{tYEmMx0WPD3AzdC2l0z&^~74hW4NWimGk(RoIx;zp+nIG z!Yw1CR_o(YYw_b_2j+XihH3=tKg*Gp`G!aF8bwZoW@;CbG;h(3_IpfN7ZM@InUP8%A)0u*w8%M|PFCoZqz^W)>$r%sM;A1my(&#>2j78*0$GRNMAdDgTi2Mv~k zSK#sD5|Bga3nHP@%*fX9(ZJN}?5T^bSDq|aeqrr;CTij!sF8-8Nb@hO*q(CbL92RC zF7UEF>8J!13}4>GqP2EUx9~FFTVJ@Ph4&WiP1f!`RoUBug-MS2fPy2Y;7(ECF^zb* z`FFS&>(p@b2dYi@EZ&81Th`-n9`xbRpOEz&g|H|tQ^E1%wb_JqhDo$4E7%q*#HLxP zs(f|ibXQChrb}%{IO~z-b|c*UBA?&p4?HHjj?^J>xVy_b@>FeP7p{Jn9vSb2ZTr4q zUGVgPNhYXssYmUe)3z)KU6SBh><_I@OdD-kM^)VES9Pp znvTnz;YD;@hz`k+6(3kre)DJ{2W;@Q+>Rj{Dc&I7M-`-m%YU9V^qGok>;$f&$O1Fv z=BtTsQ8_6r?5RT^Stg28=PR-xoH}_@tR2scipW`#n-t6`N$gJBzn;la%Bp71XqeG3 zcwqnOg9cO$nKgUp(1xl3Lx;>BFr#Yv;D&~ogR5pvKXb_JfmY>nXIa*BaclQ;wQbto zxyC@cA$I+{q)fPw-=}BcmF&Rlc?ixQzrXWycQ3qJI`Del`uYCioXTJKnZ36C;_8R$ za()(|;s3DS+22EJXq?q#{d0f+0Z#9a~U62q|sB-+Z~y=R diff --git a/obj/Debug/net8.0/Mt5Bridge.genruntimeconfig.cache b/obj/Debug/net8.0/Mt5Bridge.genruntimeconfig.cache index b0d1370..c936662 100644 --- a/obj/Debug/net8.0/Mt5Bridge.genruntimeconfig.cache +++ b/obj/Debug/net8.0/Mt5Bridge.genruntimeconfig.cache @@ -1 +1 @@ -d1ebbd23b71aef41cd0fc60ac0cb097334a2e9c856ee1cb44e91c163c704c5fc +553e1529407b4931cc01fed3b677a250cf906214d6ce2c116197797f05fc988d diff --git a/obj/Debug/net8.0/Mt5Bridge.pdb b/obj/Debug/net8.0/Mt5Bridge.pdb index 9baf395b264934311c48cf893c95e3024f99f709..9b052314711b623db45591acdc89745963582bb3 100644 GIT binary patch delta 3417 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 delta 99 zcmZozz}WyqEsR^3IDGw07}6M$84|(RjKP?}kRge|l);F>gu#L#6)0y3go!|&5sEDL~o;NG36ugJq4khx;cJ}scukY45yZ#_PCr#ogVBOhHeHONRQ9|Q{Bz6dwD6P`?Y@eIZ z)~#!oQW@AYh2qqS8*3%N$Ce_24@CpLi)4NE zqewF8%PFE{lt`d~E`Lz9_V(CBYrjc!4)v-a_`az}j*j0qsqcC*LKHx~HocFQ!NZzw zPw&`<`YQAh{{^+dYl8}*)T6Yb)SyTdbVEA}yb5&#if&DySOreB#nhTekr{YaDVk&a zqnuaO^mC>C1MJ*wycbaPNZ@T#(OZVbImUAySL--X!TbY5H}s~|c-)#s>PO5ynl?j} zRMVzIr>*ru(XZjS^ntY+nLXf&)|-Dqr#E;=ml!_=y5u9rp|{m~jCKG;(H&yitfhy@ zdjm4d5Ah5?M>7J79^fu_C_RWtV;@>uE#50k(P)WJqp8(}U&t>!sjz#TdkBcmlu7YeF{ z3=yVP$nT|UTEpsTRuNju>TjGGrS)_NO^X!OQUz@TcF-Q+SIN5<)sr+1T%nV|TA}f` zbQ<_MaUR$!E(7lpSAm}R0}$gEwX~7y@ehwxvgQ$twwU>VIZ>v<>WHvPu{t$TrY?$kywl=+ zFNsrS>bx~7Y#Q|PPapi56(-1ndQi=aP)R+ePL-+a=DesV#r|%dDpSuOR#}Q&K&+&A zeyd8c*R4gNmB*7G{EhV^maI6{DW*a_FN*3ldS6_^lFJX&r&Z<^5h=@5*ldM|;8s3e zT@$~z3Yoh9Yr>O_pSZE6&`dt{meQH}h!XT;oJRjYdc`Kr;ZTz_gFP#-b~Qc)N6^#Q zh8k@;fphW%Uec@*6agxnnX@W{eV};)7^ZHXv1Fqt7yY~+ypjKt!%@tZw79n+kqW4 z4E#Jz0JqZDfnTI!z0S_g1-QR}C8|K`6&3mYzo&l(#gq(3VBL)D$(1oiZFA3hvEoS?fN9UmF;Pgd{p zuU8MsMCVdlI3nDho}S&AqvL(I_YHGe-{?|b1_mF$2T1DM2NOyPC%>*3jI4vceH9iw{ zk5*UMQaVA$ajN(VIw552H5_-h`(RBzc_QjQ8svB=7^;HzxN@9eP-nPh%|+dBh^C-Z z;}si-x>=)OHnHbc>Var8Hxsn;9is2Ld@x)Je#fvY;Mc;>9WybuVuU*|l)K8(p-Vza z6%43IZb8Ef2&574_|fy7nRz)C2Zl$TG zxw0}Qg&s}rS%Fc+FvsXPK*Dy6R_yCm^m1Ekp_^cV*ahN8>z{9J@9OSIZXQjJjU=+! z(d^i8M>0E_h-XGJ?d_T26@^O(e_g|NJA}Q@(*H`sYX7?p z5%+50!&!Sq7| delta 2897 zcma)8YitzP8U4OH&-G)N9lTEPnsi-@Vg#|Uy{zpPqIH4RE=?S;9Tz1*UfV1MT2M-& zP*F1LlF+me32S~df<)MIi3$xWtyNVhKVp*nXjP=Vr8H_3)3j=-Xo?i6N-Ono?zayw zX{C1Td+s^s`|e}z-nlb{{zCt$C(YB(9(rc_WV8Cy@brcIyr+kW1_{>~(GRTYmgRK? zqB`hrAXq#I-{zx-UwpoHK5qVno9HT%_0^A} z$fDsaQCkBMql50~Ub}76j7!w|7`l!Tz2krnJ^YQm2lgD&t$ybdnW$SwhUkyr_@~w{ zjtp!;{V~M)=x6roa2*sH({hwmC;jYiqwtoQ!eVwCNu6l4a8cL*pL7$3v-D0)J3C@Js3FIi)-Lsxu1bZQ%!K z)T*Hdd(`siQ73_M-;tqzD)^yH;upvX=%Dj=RIuk#^C~p@vb2&Pcw; zp&p<~<~V@HP4p4JY2HD@^bF>ESn23LW%w1wK1@hiF9W}3oj|mcH1C(_DqBx?5IMT@ zM`Z|>b@XY_BH9G5O`m>KQhHr|dL_hK>R?i&1^2s9cgSy0Knop9kB((R;HPosQo=i4|ZfDfhIsk(bmtD_f=3 zT3cBaGebJ=W-K4utlY3u4X{yBo79dfbyPjTW+iq~?XFVq^8j0w*md4frTVM^Otw5i zzqO;H!sG4@1f5FoBLtV!93N!261&KUtJDc+E5|Ca?>j!8qw){~_CccDdJ_IIHLwWq37B&}WQxJaVsbJI>Kx1C#VIu$5S~(^|5DU9<)G zIT`|Prd_~oxQX_Vh9q!5FiZQuR&`F~J<1_tXR(p_DNpLl(rJ691U^$Hboz ze-{3AH7EX@_zU7+5&vc3i-I3esD~uh$b5+Ystn;N!4^30saD}@_!ym4S>b)~O=C=W z4*a?*2%i!@BYYM-ZY&7Dg0>l66n;%ODLrCJ?GI69)e+sbSYyJ+gy)oQRuDcTxFEPF zNQQJFI3`#STr^J5Ikjj+=y}Hc5zxSXG36z8-ufX<(a&1X1N+n^VDBk)8P%Uzi!WOm z}1@Jqlmj!qr5HGk96cuH{I`BgOS&4#P71;2z%XBPCPtiD#@D96jWa$z^DSh+dEL~GO@FJ`P9qLZ`&-R!GXEp7o8Fa|l7r{S#YaSptmtpc($QW1 zHr3G;P5ED$|GWm6oQK4G0R;(YD*y zhFeu|cOuwsddl-!>_kx1BgV=^uya{$OexRxJg;6Z*Q-IsgN7H}9psi5lXoYAy{^P- z+?slLU$;Hab#+Ei)m=V8qZ~2s0^WP^TxN-ACM5aXbv&Sd97Q*f)(> zE$jsBqZTGs_N8~j4jLRp3g=iU+coWY;i87w;zth_B&P2_2I9FXO2i9Kgj^qkr772! zJdRbYSlOzrShZ$~f;zpLL0w%+v7SNUDGnOk6c+VajAjzYJfn?bD4yFUu8z`oTi!dsFYVcQwyWw=}A&!_gbbjq~f3&+}e$jWL*}JdV7alnf5G4jQKo z_#8@8556_>ICpyyO~dJhlSe%PHIChy!`~$8G;o}{CE7K==Toyv-AKzv@AP`--(UE% A3IG5A diff --git a/obj/Debug/net8.0/refint/Mt5Bridge.dll b/obj/Debug/net8.0/refint/Mt5Bridge.dll index 3a0e9ac7f0b98ce11127efd702557c301d1759e9..519f3cb1a06151321f25f29f7e5e252ddfaa95f4 100644 GIT binary patch delta 3125 zcmbtWZEPGz8GdK>cJ}scukY45yZ#_PCr#ogVBOhHeHONRQ9|Q{Bz6dwD6P`?Y@eIZ z)~#!oQW@AYh2qqS8*3%N$Ce_24@CpLi)4NE zqewF8%PFE{lt`d~E`Lz9_V(CBYrjc!4)v-a_`az}j*j0qsqcC*LKHx~HocFQ!NZzw zPw&`<`YQAh{{^+dYl8}*)T6Yb)SyTdbVEA}yb5&#if&DySOreB#nhTekr{YaDVk&a zqnuaO^mC>C1MJ*wycbaPNZ@T#(OZVbImUAySL--X!TbY5H}s~|c-)#s>PO5ynl?j} zRMVzIr>*ru(XZjS^ntY+nLXf&)|-Dqr#E;=ml!_=y5u9rp|{m~jCKG;(H&yitfhy@ zdjm4d5Ah5?M>7J79^fu_C_RWtV;@>uE#50k(P)WJqp8(}U&t>!sjz#TdkBcmlu7YeF{ z3=yVP$nT|UTEpsTRuNju>TjGGrS)_NO^X!OQUz@TcF-Q+SIN5<)sr+1T%nV|TA}f` zbQ<_MaUR$!E(7lpSAm}R0}$gEwX~7y@ehwxvgQ$twwU>VIZ>v<>WHvPu{t$TrY?$kywl=+ zFNsrS>bx~7Y#Q|PPapi56(-1ndQi=aP)R+ePL-+a=DesV#r|%dDpSuOR#}Q&K&+&A zeyd8c*R4gNmB*7G{EhV^maI6{DW*a_FN*3ldS6_^lFJX&r&Z<^5h=@5*ldM|;8s3e zT@$~z3Yoh9Yr>O_pSZE6&`dt{meQH}h!XT;oJRjYdc`Kr;ZTz_gFP#-b~Qc)N6^#Q zh8k@;fphW%Uec@*6agxnnX@W{eV};)7^ZHXv1Fqt7yY~+ypjKt!%@tZw79n+kqW4 z4E#Jz0JqZDfnTI!z0S_g1-QR}C8|K`6&3mYzo&l(#gq(3VBL)D$(1oiZFA3hvEoS?fN9UmF;Pgd{p zuU8MsMCVdlI3nDho}S&AqvL(I_YHGe-{?|b1_mF$2T1DM2NOyPC%>*3jI4vceH9iw{ zk5*UMQaVA$ajN(VIw552H5_-h`(RBzc_QjQ8svB=7^;HzxN@9eP-nPh%|+dBh^C-Z z;}si-x>=)OHnHbc>Var8Hxsn;9is2Ld@x)Je#fvY;Mc;>9WybuVuU*|l)K8(p-Vza z6%43IZb8Ef2&574_|fy7nRz)C2Zl$TG zxw0}Qg&s}rS%Fc+FvsXPK*Dy6R_yCm^m1Ekp_^cV*ahN8>z{9J@9OSIZXQjJjU=+! z(d^i8M>0E_h-XGJ?d_T26@^O(e_g|NJA}Q@(*H`sYX7?p z5%+50!&!Sq7| delta 2897 zcma)8YitzP8U4OH&-G)N9lTEPnsi-@Vg#|Uy{zpPqIH4RE=?S;9Tz1*UfV1MT2M-& zP*F1LlF+me32S~df<)MIi3$xWtyNVhKVp*nXjP=Vr8H_3)3j=-Xo?i6N-Ono?zayw zX{C1Td+s^s`|e}z-nlb{{zCt$C(YB(9(rc_WV8Cy@brcIyr+kW1_{>~(GRTYmgRK? zqB`hrAXq#I-{zx-UwpoHK5qVno9HT%_0^A} z$fDsaQCkBMql50~Ub}76j7!w|7`l!Tz2krnJ^YQm2lgD&t$ybdnW$SwhUkyr_@~w{ zjtp!;{V~M)=x6roa2*sH({hwmC;jYiqwtoQ!eVwCNu6l4a8cL*pL7$3v-D0)J3C@Js3FIi)-Lsxu1bZQ%!K z)T*Hdd(`siQ73_M-;tqzD)^yH;upvX=%Dj=RIuk#^C~p@vb2&Pcw; zp&p<~<~V@HP4p4JY2HD@^bF>ESn23LW%w1wK1@hiF9W}3oj|mcH1C(_DqBx?5IMT@ zM`Z|>b@XY_BH9G5O`m>KQhHr|dL_hK>R?i&1^2s9cgSy0Knop9kB((R;HPosQo=i4|ZfDfhIsk(bmtD_f=3 zT3cBaGebJ=W-K4utlY3u4X{yBo79dfbyPjTW+iq~?XFVq^8j0w*md4frTVM^Otw5i zzqO;H!sG4@1f5FoBLtV!93N!261&KUtJDc+E5|Ca?>j!8qw){~_CccDdJ_IIHLwWq37B&}WQxJaVsbJI>Kx1C#VIu$5S~(^|5DU9<)G zIT`|Prd_~oxQX_Vh9q!5FiZQuR&`F~J<1_tXR(p_DNpLl(rJ691U^$Hboz ze-{3AH7EX@_zU7+5&vc3i-I3esD~uh$b5+Ystn;N!4^30saD}@_!ym4S>b)~O=C=W z4*a?*2%i!@BYYM-ZY&7Dg0>l66n;%ODLrCJ?GI69)e+sbSYyJ+gy)oQRuDcTxFEPF zNQQJFI3`#STr^J5Ikjj+=y}Hc5zxSXG36z8-ufX<(a&1X1N+n^VDBk)8P%Uzi!WOm z}1@Jqlmj!qr5HGk96cuH{I`BgOS&4#P71;2z%XBPCPtiD#@D96jWa$z^DSh+dEL~GO@FJ`P9qLZ`&-R!GXEp7o8Fa|l7r{S#YaSptmtpc($QW1 zHr3G;P5ED$|GWm6oQK4G0R;(YD*y zhFeu|cOuwsddl-!>_kx1BgV=^uya{$OexRxJg;6Z*Q-IsgN7H}9psi5lXoYAy{^P- z+?slLU$;Hab#+Ei)m=V8qZ~2s0^WP^TxN-ACM5aXbv&Sd97Q*f)(> zE$jsBqZTGs_N8~j4jLRp3g=iU+coWY;i87w;zth_B&P2_2I9FXO2i9Kgj^qkr772! zJdRbYSlOzrShZ$~f;zpLL0w%+v7SNUDGnOk6c+VajAjzYJfn?bD4yFUu8z`oTi!dsFYVcQwyWw=}A&!_gbbjq~f3&+}e$jWL*}JdV7alnf5G4jQKo z_#8@8556_>ICpyyO~dJhlSe%PHIChy!`~$8G;o}{CE7K==Toyv-AKzv@AP`--(UE% A3IG5A diff --git a/obj/Mt5Bridge.csproj.nuget.dgspec.json b/obj/Mt5Bridge.csproj.nuget.dgspec.json index bfd94a3..337b88b 100644 --- a/obj/Mt5Bridge.csproj.nuget.dgspec.json +++ b/obj/Mt5Bridge.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "C:\\Users\\Administrator\\Desktop\\ares\\Mt5Bridge\\Mt5Bridge.csproj": {} + "C:\\Users\\Administrator\\Desktop\\Mt5Bridge\\Mt5Bridge.csproj": {} }, "projects": { - "C:\\Users\\Administrator\\Desktop\\ares\\Mt5Bridge\\Mt5Bridge.csproj": { + "C:\\Users\\Administrator\\Desktop\\Mt5Bridge\\Mt5Bridge.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\Administrator\\Desktop\\ares\\Mt5Bridge\\Mt5Bridge.csproj", + "projectUniqueName": "C:\\Users\\Administrator\\Desktop\\Mt5Bridge\\Mt5Bridge.csproj", "projectName": "Mt5Bridge", - "projectPath": "C:\\Users\\Administrator\\Desktop\\ares\\Mt5Bridge\\Mt5Bridge.csproj", + "projectPath": "C:\\Users\\Administrator\\Desktop\\Mt5Bridge\\Mt5Bridge.csproj", "packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\", - "outputPath": "C:\\Users\\Administrator\\Desktop\\ares\\Mt5Bridge\\obj\\", + "outputPath": "C:\\Users\\Administrator\\Desktop\\Mt5Bridge\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config" diff --git a/obj/project.assets.json b/obj/project.assets.json index 51edec3..26ecb14 100644 --- a/obj/project.assets.json +++ b/obj/project.assets.json @@ -13,11 +13,11 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\Administrator\\Desktop\\ares\\Mt5Bridge\\Mt5Bridge.csproj", + "projectUniqueName": "C:\\Users\\Administrator\\Desktop\\Mt5Bridge\\Mt5Bridge.csproj", "projectName": "Mt5Bridge", - "projectPath": "C:\\Users\\Administrator\\Desktop\\ares\\Mt5Bridge\\Mt5Bridge.csproj", + "projectPath": "C:\\Users\\Administrator\\Desktop\\Mt5Bridge\\Mt5Bridge.csproj", "packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\", - "outputPath": "C:\\Users\\Administrator\\Desktop\\ares\\Mt5Bridge\\obj\\", + "outputPath": "C:\\Users\\Administrator\\Desktop\\Mt5Bridge\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config" diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache index efe1280..75a67e4 100644 --- a/obj/project.nuget.cache +++ b/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "8pDiazJllfw=", + "dgSpecHash": "A5kXayphZIY=", "success": true, - "projectFilePath": "C:\\Users\\Administrator\\Desktop\\ares\\Mt5Bridge\\Mt5Bridge.csproj", + "projectFilePath": "C:\\Users\\Administrator\\Desktop\\Mt5Bridge\\Mt5Bridge.csproj", "expectedPackageFiles": [], "logs": [] } \ No newline at end of file