错误、漏洞、问题 - 页 2411 1...240424052406240724082409241024112412241324142415241624172418...3184 新评论 Vladimir Karputov 2019.03.24 06:45 #24101 Aleksey Sergan: 请运行此代码:多币种iMA趋势2。 在设置(符号 参数)中指定 "EURUSD,GBPUSD"。 关于我的配置 MetaTrader 5 x64 build 2009 started (MetaQuotes Software Corp.) Windows 10 (build 17763) x64, IE 11, UAC, Intel Core i3-3120 M @ 2.50 GHz, Memory: 3518 / 8077 Mb, Disk: 86 / 415 Gb, GMT+2 C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075 所有SL都以其符号价格收盘。也就是说,不存在价格重叠的错误。 Aleksey Sergan 2019.03.24 07:10 #24102 Vladimir Karputov:请运行此代码:多币种iMA趋势2。 在设置(符号 参数)中指定 "EURUSD,GBPUSD"。 关于我的配置 所有SL都以其符号价格收盘。也就是说,不存在价格重叠的错误。谢谢你,这个错误已经被本地化了。下面的帖子。 Aleksey Sergan 2019.03.24 07:10 #24103 Andrey Barinov:有两个错误。 №1.你的错误。在代码的某个地方。你正在用英镑兑美元的价格为欧元兑美元的头寸设置SL。终端应该没有什么反对意见。 №2.终端中的错误。如果这个SL被触发的价格在当时的欧元兑美元流中不存在,使用英镑兑美元的价格。 安德烈-巴里诺夫。https://www.mql5.com/ru/docs/constants/structures/mqltraderequest 显然,在发送修改请求时,位置字段比符号更有优先权。打印req.position是的,事实证明你是对的,我的错误是符合逻辑的。 在结构中。 MqlTradeRequest m_request; m_request.position = #3 m_request.symbol = GBPUSD m_request.sl = 1.60704 英镑兑美元的实际仓位数#4 当OrderSend被执行时,测试者为3号位置对应的符号设置了一个止损,这个位置是eurusd。 测试器的缺陷。 - 未能检查 m_request.position和m_request.symbol是否匹配。 - 在1.60704设置买入位置的止损,符号eurusd,其当前价格为1.30935。 - 在下一个交易日设置的止损为1.60704,尽管实际价格为1.30935。 谢谢大家。我希望平台的开发者能看到这个帖子。 Andrey Barinov 2019.03.24 07:28 #24104 Aleksey Sergan: 是的,事实证明你是对的,我的错误是符合逻辑的。 在结构上。 MqlTradeRequest m_request; m_request.position = #3 m_request.symbol = GBPUSD m_request.sl = 1.60704 英镑兑美元的实际仓位数#4 当OrderSend被执行时,测试者为3号位置对应的符号设置了一个止损,这个位置是eurusd。 测试器的缺陷。 - 未能检查 m_request.position和m_request.symbol是否匹配。 - 在1.60704设置买入位置的止损,符号eurusd,其当前价格为1.30935。 - 在下一个交易日设置的止损为1.60704,尽管实际价格为1.30935。 谢谢大家。我希望平台的开发者能看到这个帖子。在当前价格1.30935执行1.60704的买入头寸的止损,这不是一个错误。但在目前1.30935的价格上,将买入止损点设置在1.60704的水平上是一个错误。 Andrey Dik 2019.03.24 13:30 #24105 建设2007年 职能。 bool GetDialLastProfit (string symbol, datetime startDate, datetime endDate, long magic, double &profit, double &lot) { HistorySelect (startDate, endDate); int deals = HistoryDealsTotal (); ulong ticket; for (int i = deals - 1; i >= 0; i--) //for (int i = 0; i < deals; i++) { ticket = HistoryDealGetTicket (i); if (ticket != 0) { if (HistoryDealGetInteger(ticket, DEAL_MAGIC) == magic) { profit = HistoryDealGetDouble (ticket, DEAL_PROFIT); //if (!HistoryDealGetDouble(ticket, DEAL_PROFIT, profit)) // return false; lot = HistoryDealGetDouble (ticket, DEAL_VOLUME); return (true); } } } return (false); } 应该将交易的 财务结果 输出到利润变量中,但结果总是0.0,而手数变量中的值总是正确的。 是否有错误?- 还是我做错了什么? Andrey Barinov 2019.03.24 13:33 #24106 Andrey Dik:建设2007年 职能。 应该将交易的 财务结果 输出到利润变量中,但结果总是0.0,而手数变量中的值总是正确的。 是否有错误?- 还是我做错了什么?应检查DEAL_ENTRY_OUT或INOUT。_IN交易的利润为0 Andrey Dik 2019.03.24 13:35 #24107 Andrey Barinov:DEAL_ENTRY_OUT或INOUT应该被关注。_IN交易的利润为0好吧,从名单的末尾开始,第一个就被拿走了,应该是OUT了。 Andrey Barinov 2019.03.24 13:40 #24108 Andrey Dik:嗯,这是名单末尾的第一个,应该是OUT了。如果你 在endDate中传递TimeCurrent(),就用TimeCurrent()+60或类似的东西代替。这应该有帮助。 Andrey Dik 2019.03.24 13:42 #24109 Andrey Barinov:如果你在endDate中传递TimeCurrent(),用TimeCurrent()+60或类似的东西代替。这应该有帮助。不,它仍然是0.0。 Andrey Barinov 2019.03.24 13:43 #24110 Andrey Dik:不,它仍然是0.0。然后进行调试。打印交易票据,并在测试器中看到那里实际选择的内容。添加一个按交易类型 的过滤器。 1...240424052406240724082409241024112412241324142415241624172418...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
请运行此代码:多币种iMA趋势2。
在设置(符号 参数)中指定 "EURUSD,GBPUSD"。
关于我的配置
所有SL都以其符号价格收盘。也就是说,不存在价格重叠的错误。
请运行此代码:多币种iMA趋势2。
在设置(符号 参数)中指定 "EURUSD,GBPUSD"。
关于我的配置
所有SL都以其符号价格收盘。也就是说,不存在价格重叠的错误。
谢谢你,这个错误已经被本地化了。下面的帖子。
有两个错误。
№1.你的错误。在代码的某个地方。你正在用英镑兑美元的价格为欧元兑美元的头寸设置SL。终端应该没有什么反对意见。
№2.终端中的错误。如果这个SL被触发的价格在当时的欧元兑美元流中不存在,使用英镑兑美元的价格。
https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
显然,在发送修改请求时,位置字段比符号更有优先权。打印req.position
是的,事实证明你是对的,我的错误是符合逻辑的。
在结构中。
MqlTradeRequest m_request;
m_request.position = #3
m_request.symbol = GBPUSD
m_request.sl = 1.60704
英镑兑美元的实际仓位数#4
当OrderSend被执行时,测试者为3号位置对应的符号设置了一个止损,这个位置是eurusd。
测试器的缺陷。
- 未能检查 m_request.position和m_request.symbol是否匹配。
- 在1.60704设置买入位置的止损,符号eurusd,其当前价格为1.30935。
- 在下一个交易日设置的止损为1.60704,尽管实际价格为1.30935。
谢谢大家。我希望平台的开发者能看到这个帖子。
是的,事实证明你是对的,我的错误是符合逻辑的。
在结构上。
MqlTradeRequest m_request;
m_request.position = #3
m_request.symbol = GBPUSD
m_request.sl = 1.60704
英镑兑美元的实际仓位数#4
当OrderSend被执行时,测试者为3号位置对应的符号设置了一个止损,这个位置是eurusd。
测试器的缺陷。
- 未能检查 m_request.position和m_request.symbol是否匹配。
- 在1.60704设置买入位置的止损,符号eurusd,其当前价格为1.30935。
- 在下一个交易日设置的止损为1.60704,尽管实际价格为1.30935。
谢谢大家。我希望平台的开发者能看到这个帖子。
在当前价格1.30935执行1.60704的买入头寸的止损,这不是一个错误。但在目前1.30935的价格上,将买入止损点设置在1.60704的水平上是一个错误。
建设2007年
职能。
应该将交易的 财务结果 输出到利润变量中,但结果总是0.0,而手数变量中的值总是正确的。
是否有错误?- 还是我做错了什么?
建设2007年
职能。
应该将交易的 财务结果 输出到利润变量中,但结果总是0.0,而手数变量中的值总是正确的。
是否有错误?- 还是我做错了什么?
应检查DEAL_ENTRY_OUT或INOUT。_IN交易的利润为0
DEAL_ENTRY_OUT或INOUT应该被关注。_IN交易的利润为0
好吧,从名单的末尾开始,第一个就被拿走了,应该是OUT了。
嗯,这是名单末尾的第一个,应该是OUT了。
如果你 在endDate中传递TimeCurrent(),就用TimeCurrent()+60或类似的东西代替。这应该有帮助。
如果你在endDate中传递TimeCurrent(),用TimeCurrent()+60或类似的东西代替。这应该有帮助。
不,它仍然是0.0。
不,它仍然是0.0。
然后进行调试。打印交易票据,并在测试器中看到那里实际选择的内容。添加一个按交易类型 的过滤器。