程序库: MT4Orders - 页 80 1...737475767778798081828384858687...95 新评论 Daniel Molnar 2022.12.08 13:34 #791 fxsaber #:试试最新版本。复制粘贴。 谢谢 fxsaber。我还需要一些时间来确认,但到目前为止,内存使用量似乎并没有降低。 出于好奇,OrderSwap() 在哪里定义?我在代码中似乎找不到。 fxsaber 2022.12.08 13:44 #792 pcdeni #:到目前为止,内存使用量似乎并没有降低。 需要数据来重现问题。出现问题的交易账户的 Laconic 代码和投资访问。也许可以在私人信息中提供。 出于好奇,OrderSwap() 定义在哪里?我在代码中似乎找不到。 MT4_ORDERFUNCTION(Swap, double, ::PositionGetDouble(POSITION_SWAP), 0, true) Filip Valkovic 2022.12.13 12:59 #793 你好,我遇到了一个奇怪的问题。 我使用这个库已经有一段时间了,我想说 "HUGE THANKS"(非常感谢),它给了我难以置信的帮助, 所以多年来,我在 EA 中使用这个库/代码从未遇到过任何问题。 现在,当我编译 MT5 EA 时,它从这段代码中返回了 3 个错误,基本上都是关于一行的:(见下面的代码) '=' - 意外令牌 MT4Orders.mqh 192 25 ')' - 意外令牌 MT4Orders.mqh 192 68 '*=' - 预期名称 MT4Orders.mqh 194 13 在我的 EA 中,我还包括: #include <stderror.mqh> #include <stdlib_mq5.mqh>#import"kernel32.dll" 你知道这里可能发生了什么吗? 库单独编译时没有错误,没有问题,和往常一样。只有在尝试编译 EA 时,才会出现这些错误。 #define ORDER_SELECT (-2) static int GetDigits( double Price ) { int Res = 0; while ((bool)(Price = ::NormalizeDouble(Price - (int)Price, 8))) // <- 行 192 所以这显然是个问题 "= :: " { Price *= 10; // LINE 194 Res++; } return(Res); } 我在 EA 中 发现了一些疑点: union Price { uchar buffer[8]; double close; }; 这个联合价格名称会覆盖 GetDigits 函数中的价格名称吗? Libraries: MT4Orders fxsaber 2022.12.13 14:58 #794 Filip Valkovic #:我在我的 EA 中 发现了一些疑点: 所以这个联合价格名称会覆盖 GetDigits 函数中的价格名称?这可能是问题所在吗? 这就是原因。 fxsaber 2023.01.02 12:24 #795 请帮我找出佣金计算中的错误。为此,请在任何可用交易账户上运行此脚本。 // 通过 MT4/MT5 样式计算和比较总佣金/隔夜利息/利润。 #define MT4ORDERS_BYPASS_MAXTIME 1000000 // 等待交易环境同步的最长时间(以微秒为单位 #include <MT4Orders.mqh> #define TOSTRING(A) (#A + " = " + DoubleToString(A, 2)) #define PRINT(A, B) Print(TOSTRING(A) + ", " + TOSTRING(B) + ", " + (string)!NormalizeDouble((A) - (B), 2)) // MT4 风格 void Calc_MT4( double &Commission, double &Swap, double &Profit ) { Commission = 0; Swap = 0; Profit = 0; for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL)) { Commission += OrderCommission(); Swap += OrderSwap(); Profit += OrderProfit(); } } // MT5 风格 void Calc_MT5( double &Commission, double &Swap, double &Profit ) { Commission = 0; Swap = 0; Profit = 0; if (HistorySelect(0, INT_MAX)) for (int i = HistoryDealsTotal() - 1; i >= 0; i--) { const ulong Ticket = HistoryDealGetTicket(i); if (HistoryDealGetInteger(Ticket, DEAL_TYPE) <= DEAL_TYPE_SELL) { Commission += HistoryDealGetDouble(Ticket, DEAL_COMMISSION); Swap += HistoryDealGetDouble(Ticket, DEAL_SWAP); Profit += HistoryDealGetDouble(Ticket, DEAL_PROFIT); } } } void OnStart() { if (PositionsTotal()) MessageBox("The script works when there are no open positions."); else { double Commission_MT4, Swap_MT4, Profit_MT4; double Commission_MT5, Swap_MT5, Profit_MT5; Calc_MT4(Commission_MT4, Swap_MT4, Profit_MT4); // MT4 风格 Calc_MT5(Commission_MT5, Swap_MT5, Profit_MT5); // MT5 风格 PRINT(Commission_MT4, Commission_MT5); PRINT(Swap_MT4, Swap_MT5); PRINT(Profit_MT4, Profit_MT5); } }它将产生如下结果。Commission_MT4 = -15591.12, Commission_MT5 = -15591.12, true Swap_MT4 = -5948.77, Swap_MT5 = -5948.77, true Profit_MT4 = 34851.13, Profit_MT5 = 34851.13, true如果高亮部分有误,请告诉我。谢谢。 Enrique Dangeroux 2023.01.02 13:26 #796 2023.01.02 13:23:28.780 fxsaber_test (EURCHF,H1) Commission_MT4 = -2875.33, Commission_MT5 = -2875.29, false 2023.01.02 13:23:28.835 fxsaber_test (EURCHF,H1) Swap_MT4 = -1051.56, Swap_MT5 = -1051.56, true 2023.01.02 13:23:28.835 fxsaber_test (EURCHF,H1) Profit_MT4 = 7198.08, Profit_MT5 = 7198.08, true fxsaber 2023.01.02 13:28 #797 Enrique Dangeroux #: 你确定编译了这一行? 交易、自动交易系统和交易策略测试论坛 库:MT4Orders fxsaber, 2023.01.02 12:24 pm. #define MT4ORDERS_BYPASS_MAXTIME 1000000 // 等待交易环境同步的最长时间(以微秒为单位 来自电报的 EX5 显示错误? Enrique Dangeroux 2023.01.02 13:31 #798 以 1:1 的复制粘贴方式编译,除了 Swap = 0 后缺少分号。 fxsaber 2023.01.02 13:34 #799 fxsaber #:电报中的 EX5 会出错吗? 这可能是排除源版本不匹配的最可靠方法。 Enrique Dangeroux 2023.01.02 13:37 #800 请给 EX5 发私信,我现在无法访问电报 1...737475767778798081828384858687...95 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
试试最新版本。复制粘贴。
谢谢 fxsaber。我还需要一些时间来确认,但到目前为止,内存使用量似乎并没有降低。
出于好奇,OrderSwap() 在哪里定义?我在代码中似乎找不到。
到目前为止,内存使用量似乎并没有降低。
需要数据来重现问题。出现问题的交易账户的 Laconic 代码和投资访问。也许可以在私人信息中提供。
出于好奇,OrderSwap() 定义在哪里?我在代码中似乎找不到。
所以多年来,我在 EA 中使用这个库/代码从未遇到过任何问题。
现在,当我编译 MT5 EA 时,它从这段代码中返回了 3 个错误,基本上都是关于一行的:(见下面的代码)
在我的 EA 中,我还包括:
#import"kernel32.dll"
你知道这里可能发生了什么吗?
库单独编译时没有错误,没有问题,和往常一样。只有在尝试编译 EA 时,才会出现这些错误。
我在 EA 中 发现了一些疑点:
这个联合价格名称会覆盖 GetDigits 函数中的价格名称吗?
所以这个联合价格名称会覆盖 GetDigits 函数中的价格名称?这可能是问题所在吗?
这就是原因。
它将产生如下结果。
如果高亮部分有误,请告诉我。谢谢。
你确定编译了这一行?
交易、自动交易系统和交易策略测试论坛
库:MT4Orders
fxsaber, 2023.01.02 12:24 pm.
电报中的 EX5 会出错吗?
这可能是排除源版本不匹配的最可靠方法。