错误、漏洞、问题 - 页 479 1...472473474475476477478479480481482483484485486...3184 新评论 --- 2011.08.05 19:54 #4781 然后写信给servicedesk并附上代码。 Renat Fatkhullin 2011.08.05 23:13 #4782 sergeev: 然后写信给服务台并附上代码。是的,最好给服务台写信并附上专家代码。不要担心代码--我们在测试后会擦除一切。我们的主要和唯一的任务是发现错误。 Stanislav Korotky 2011.08.06 22:05 #4783 另一个问题。我正在使用CopyTime函数。呼叫。CopyTime("EURUSD", PERIOD_MN1, D'2011.06.30', D'2011.08.01', Array)由于某些原因,只返回一个值为D'2011.08.01'的元素。D'2011.07.01'究竟在哪里?有什么诀窍?P.S. Array[] 是一个动态数组。 Mykola Demko 2011.08.06 22:47 #4784 marketeer:另一个问题。我正在使用CopyTime函数。呼叫。由于某些原因,只返回一个值为D'2011.08.01'的元素。D'2011.07.01'究竟在哪里?有什么好处呢?P.S. 数组Array[] 是动态的。是的,由于某些原因,第一个元素被跳过,写到servicedesk。datetime Array[]; CopyTime("EURUSD", PERIOD_MN1, D'2011.06.01', D'2011.08.01', Array); for(int i=0;i<ArraySize(Array);i++) { Print(i," ",Array[i]); }1 2011.08.01 00:00:000 2011.07.01 00:00:00 Alexey Da 2011.08.08 08:04 #4785 marketeer:另一个问题。我正在使用CopyTime函数。已经有一个类似的应用程序。想明白了。 Stanislav Korotky 2011.08.08 09:34 #4786 这里有另一个谜团。我抓不住这个毛病--我不知道是我的还是终端的。有一个微不足道的代码可以计算专家顾问下的订单数量。计数器被存储在全局变量中。它看起来像这样。int Count; int OnInit() { Count = (int)GlobalVariableGet("Count"); return(0); } void OnTick() { // bla-bla-bla if(успешно отправлен ордер) { Count++; if(!MQL5InfoInteger(MQL5_TESTING)) { if(GlobalVariableSet("Count", Count) == 0) { Print("GlobalVariableSet error ", GetLastError()); } } } } 这个数字用于订单评论。因此,我偶尔会注意到,下一个订单数比已经进入市场的头寸数要低(一些单位)。日志中没有任何错误。你有什么想法吗?也许有人遇到过类似的全局变量的 最后值"消失 "的情况,例如,在某些情况下退出时终端没有保存这些变量(好吧,也许是在失去连接的情况下--只是一个版本)? Документация по MQL5: Глобальные переменные терминала / GlobalVariableGet www.mql5.com Глобальные переменные терминала / GlobalVariableGet - Документация по MQL5 Anatoli Kazharski 2011.08.08 11:56 #4787 marketeer:这里有另一个难题。我抓不住这个毛病--我不知道是我的还是终端的。试试这样的方法。我还没有在全球范围内真正做到这一点。但它算得上是正确的。 int Amount_Orders = 0; for(count = 0; count < OrdersTotal(); count++) { if(OrderSelect(OrderGetTicket(count))) { int tp_ord = (ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); if(tp_ord == ORDER_TYPE_BUY_STOP || tp_ord == ORDER_TYPE_SELL_STOP || tp_ord == ORDER_TYPE_BUY_LIMIT || tp_ord == ORDER_TYPE_SELL_LIMIT) Amount_Orders++; } } Stanislav Korotky 2011.08.08 13:38 #4788 tol64:试试这样的方法。我还没有在全球范围内真正做到这一点。但它算得上是正确的。 我遇到的问题是,写入全局变量 的值会丢失,即不完全丢失(如按月超时删除时),但旧的值会保留。你当然可以重新计算订单,但我的方法应该也可以。 Валерий 2011.08.08 14:32 #4789 papaklass:对开发商而言。 如果一个订单在到期前 关闭,OnTrade是否不打算对其进行跟踪? PS:交易事件OnTrade的处理程序的目的一点也不清楚。 如果止损或止盈没有被抓住,如果挂单在其到期时间前被关闭,也没有被抓住。在算法运行过程中,我们必须反复检查一切。这种方法会造成混乱,因为我们依赖交易事件处理程序,但又不得不反复检查。更有甚者,在反复检查之后,我们必须捕捉那些没有被OnTrade()处理的事件。但现在我们可以玩俄罗斯方块,在图表上画出各种胡言乱语。开发者们,请把平台的交易部分带到它的逻辑终点。我不能说任何关于待定订单的情况,我还没有与他们合作过。例如,正是OnTrade处理程序将这些行输出到日志中。 2011.08.08 09:03:05 ChTestExp (EURUSD,H1) EURAUD的多头头寸将被止损关闭。 2011.08.08:09:03:05 ChTestExp (EURUSD,H1) -----------------Deal #5263582 [sl 1.37819] 2011.08.08 09:03:05 ChTestExp (EURUSD,H1) oldDealsTotal=558 newDealsTotal=559 Валерий 2011.08.08 15:30 #4790 papaklass: 把函数Print(__FUNCTION__)放在OnTrade()函数中。当你的日志里有了它 触发止损买入0.10 AUDUSD 0.89783 sl: 0.89544 tp: 0.90024 [#15在0.89544卖出0.10 AUDUSD] 交易#7在0.89544卖出0.10澳元兑美元完成(基于订单#15) 交易执行[#7在0.89544卖出0.10澳元兑美元] 订单执行在0.89544卖出0.10[#15在0.89544卖出0.10澳元兑美元] 你会检查OnTrade()是否起作用吗?对我来说,即使没有你的插入,一切都能正常进行,因为所有的交易、交易量、利润都是计算出来的,都是在OnDeinite中对每个符号分别进行汇总和显示。由于所有加起来的参数(交易数量、利润)与测试者的报告完全一致,我没有理由怀疑OnTrade()。唯一没有在OnTrade()中处理的是在测试结束时平仓的交易(有 "测试结束 "的注释)和在测试器中通过止损平仓的交易(注释 "所以..."),在测试模式中,我们必须在OnDeinit中额外处理它们。摘自测试人员的日志。 2011.08.09 00:06:43 Core 1日志文件 "E:\Program Files\MetaTrader 5\Tester\Agent-127.0.0.1-3000\logs\20110809.log "写道 2011.08.09 00:06:43 Core 1 EURUSD,H1: 在13962毫秒内产生了888296个点(275个条)(历史上总条数6479,总时间16177毫秒)。 2011.08.09 00:06:43 核心1在测试间隔的8%处发生了停止。 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 退出结束 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 所有利润 = -9072.04 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 总计交易:17..... 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 ---------------------------------------- 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 总利润 EURGBP = -4738.97 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 本周盈利 欧元兑英镑 = 319.68 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 英镑兑美元总利润 = -3775.86 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 本周盈利 GBPUSD = -1798.83 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 总利润 EURUSD = -557.21 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 本周利润 EURUSD = 65.85 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 余额=927.96 等额=927.96 利润=0.00 保证金级别=0.00 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 ---------------Report------------------- 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 平衡=10000.00 等价=927.96 利润=0.00 保证金级别=0.00 2011.08.09 00:06:43 2011.01.18 10:11:00 核心 1 开场错误:1 闭场错误:0 修改错误:0 引用:1 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 运行时间:0分钟。14秒。 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 ChTestExp专家顾问完成了对欧元兑美元图表的工作,H1期间 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 脱机执行 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 OnDeinit_UninitReason = 另一个原因 2011.08.09 00:06:43 Core 1 OnTester result 0 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 订单 买入 1.65 at 1.59804 [#69 买入 1.65 GBPUSD at 1.59804] 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 交易执行 [#68在1.59804买入1.65英镑兑美元] 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 交易 #68 在1.59804买入1.65 GBPUSD 完成(基于订单 #69)。 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 由于在1.59804的测试结束而平仓 [sell 1.65 GBPUSD 1.57341182 tp: 1.57247] 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 订单 买入 0.45 at 0.83931 [#68 买入 0.45 EURGBP at 0.83931] 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 订单执行 [#67 在0.83931买入0.45 EURGBP] 。 2011.08.09 00:06:43 2011.01.18 10:11:00 交易#67在0.83931买入0.45欧元英镑完成(基于订单#68)。 2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 触发了29.09%的止损 [卖出0.45 EURGBP 0.83930333 tp: 0.80463] 。 2011.08.09 00:06:43 核心 1 2011.01.17 14:39:39 欧元兑美元的多头头寸将被关闭止损。 2011.08.09 00:06:43 核心 1 2011.01.17 14:39:39 -----------------Deal #66 sl 1.329002011.08.09 00:06:43 核心 1 2011.01.17 14:39:39 oldDealsTotal=65 newDealsTotal=66来自测试人员的报告。结果 故事质量。 100% 酒吧。 275 提基。 888296 净利润。 -9 072.04 总利润。 1 652.29 全部损失。 -10 724.33 盈利能力。 0.15 预期回报。 -533.65 恢复系数。 -0.92 夏普比率。 -0.35 资产负债表的缩减。 绝对的资产负债表缩减。 9 072.04 资产负债表上的最大提款额。 10 392.34 (91.80%) 按资产负债表的相对缩减。 91.80% (10 392.34) 提取资金。 资金的绝对缩水。 9 072.04 资金的最大提取量。 9 852.02 (91.39%) 资金的相对缩减。 91.39% (9 852.02) 总交易量。 17 空头交易(占赢家的百分比)。 10 (70.00%) 多头交易(胜率)。 7 (85.71%) 总交易量。 67 盈利的交易(占所有交易的百分比)。 13 (76.47%) 亏损交易(占全部的百分比)。 4 (23.53%) 最大的赢利交易。 263.25 最大的亏损交易。 -5 036.39 平均盈利的交易。 127.10 平均亏损交易。 -2 681.08 最大的连续胜利次数(利润)。 10 (1 320.30) 连续损失的最大数量(损失)。 2 (-4 084.59) 连续获利的最大数量(赢的数量)。 1 320.30 (10) 最大的连续损失(损失的数量)。 -5 036.39 (1) 平均连续赢利。 4 平均连续损失。 1 正如你所看到的,独立计算的总数字是一致的,这意味着一切都很正确。故意把停止的例子拿出来。 Errors, bugs, questions 交易货币对组合 创建一个交易机器人 1...472473474475476477478479480481482483484485486...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
然后写信给服务台并附上代码。
是的,最好给服务台写信并附上专家代码。
不要担心代码--我们在测试后会擦除一切。我们的主要和唯一的任务是发现错误。
另一个问题。我正在使用CopyTime函数。呼叫。
由于某些原因,只返回一个值为D'2011.08.01'的元素。D'2011.07.01'究竟在哪里?有什么诀窍?
P.S. Array[] 是一个动态数组。
另一个问题。我正在使用CopyTime函数。呼叫。
由于某些原因,只返回一个值为D'2011.08.01'的元素。D'2011.07.01'究竟在哪里?有什么好处呢?
P.S. 数组Array[] 是动态的。
是的,由于某些原因,第一个元素被跳过,写到servicedesk。
1 2011.08.01 00:00:00
0 2011.07.01 00:00:00
另一个问题。我正在使用CopyTime函数。
已经有一个类似的应用程序。
想明白了。
这里有另一个谜团。我抓不住这个毛病--我不知道是我的还是终端的。
有一个微不足道的代码可以计算专家顾问下的订单数量。计数器被存储在全局变量中。它看起来像这样。
这个数字用于订单评论。因此,我偶尔会注意到,下一个订单数比已经进入市场的头寸数要低(一些单位)。日志中没有任何错误。
你有什么想法吗?也许有人遇到过类似的全局变量的 最后值"消失 "的情况,例如,在某些情况下退出时终端没有保存这些变量(好吧,也许是在失去连接的情况下--只是一个版本)?
这里有另一个难题。我抓不住这个毛病--我不知道是我的还是终端的。
试试这样的方法。我还没有在全球范围内真正做到这一点。但它算得上是正确的。
试试这样的方法。我还没有在全球范围内真正做到这一点。但它算得上是正确的。
对开发商而言。
如果一个订单在到期前 关闭,OnTrade是否不打算对其进行跟踪?
PS:交易事件OnTrade的处理程序的目的一点也不清楚。 如果止损或止盈没有被抓住,如果挂单在其到期时间前被关闭,也没有被抓住。在算法运行过程中,我们必须反复检查一切。这种方法会造成混乱,因为我们依赖交易事件处理程序,但又不得不反复检查。更有甚者,在反复检查之后,我们必须捕捉那些没有被OnTrade()处理的事件。但现在我们可以玩俄罗斯方块,在图表上画出各种胡言乱语。开发者们,请把平台的交易部分带到它的逻辑终点。
我不能说任何关于待定订单的情况,我还没有与他们合作过。
例如,正是OnTrade处理程序将这些行输出到日志中。
2011.08.08 09:03:05 ChTestExp (EURUSD,H1) EURAUD的多头头寸将被止损关闭。2011.08.08:09:03:05 ChTestExp (EURUSD,H1) -----------------Deal #5263582 [sl 1.37819]
2011.08.08 09:03:05 ChTestExp (EURUSD,H1) oldDealsTotal=558 newDealsTotal=559
把函数Print(__FUNCTION__)放在OnTrade()函数中。当你的日志里有了它
触发止损买入0.10 AUDUSD 0.89783 sl: 0.89544 tp: 0.90024 [#15在0.89544卖出0.10 AUDUSD]
交易#7在0.89544卖出0.10澳元兑美元完成(基于订单#15)
交易执行[#7在0.89544卖出0.10澳元兑美元]
订单执行在0.89544卖出0.10[#15在0.89544卖出0.10澳元兑美元]
你会检查OnTrade()是否起作用吗?
对我来说,即使没有你的插入,一切都能正常进行,因为所有的交易、交易量、利润都是计算出来的,都是在OnDeinite中对每个符号分别进行汇总和显示。由于所有加起来的参数(交易数量、利润)与测试者的报告完全一致,我没有理由怀疑OnTrade()。
唯一没有在OnTrade()中处理的是在测试结束时平仓的交易(有 "测试结束 "的注释)和在测试器中通过止损平仓的交易(注释 "所以..."),在测试模式中,我们必须在OnDeinit中额外处理它们。摘自测试人员的日志。
2011.08.09 00:06:43 Core 1日志文件 "E:\Program Files\MetaTrader 5\Tester\Agent-127.0.0.1-3000\logs\20110809.log "写道2011.08.09 00:06:43 Core 1 EURUSD,H1: 在13962毫秒内产生了888296个点(275个条)(历史上总条数6479,总时间16177毫秒)。
2011.08.09 00:06:43 核心1在测试间隔的8%处发生了停止。
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 退出结束
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 所有利润 = -9072.04
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 总计交易:17
.....
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 ----------------------------------------
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 总利润 EURGBP = -4738.97
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 本周盈利 欧元兑英镑 = 319.68
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 英镑兑美元总利润 = -3775.86
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 本周盈利 GBPUSD = -1798.83
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 总利润 EURUSD = -557.21
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 本周利润 EURUSD = 65.85
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 余额=927.96 等额=927.96 利润=0.00 保证金级别=0.00
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 ---------------Report-------------------
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 平衡=10000.00 等价=927.96 利润=0.00 保证金级别=0.00
2011.08.09 00:06:43 2011.01.18 10:11:00 核心 1 开场错误:1 闭场错误:0 修改错误:0 引用:1
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 运行时间:0分钟。14秒。
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 ChTestExp专家顾问完成了对欧元兑美元图表的工作,H1期间
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 脱机执行
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 OnDeinit_UninitReason = 另一个原因
2011.08.09 00:06:43 Core 1 OnTester result 0
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 订单 买入 1.65 at 1.59804 [#69 买入 1.65 GBPUSD at 1.59804]
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 交易执行 [#68在1.59804买入1.65英镑兑美元]
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 交易 #68 在1.59804买入1.65 GBPUSD 完成(基于订单 #69)。
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 由于在1.59804的测试结束而平仓 [sell 1.65 GBPUSD 1.57341182 tp: 1.57247]
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 订单 买入 0.45 at 0.83931 [#68 买入 0.45 EURGBP at 0.83931]
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 订单执行 [#67 在0.83931买入0.45 EURGBP] 。
2011.08.09 00:06:43 2011.01.18 10:11:00 交易#67在0.83931买入0.45欧元英镑完成(基于订单#68)。
2011.08.09 00:06:43 核心 1 2011.01.18 10:11:00 触发了29.09%的止损 [卖出0.45 EURGBP 0.83930333 tp: 0.80463] 。
2011.08.09 00:06:43 核心 1 2011.01.17 14:39:39 欧元兑美元的多头头寸将被关闭止损。
2011.08.09 00:06:43 核心 1 2011.01.17 14:39:39 -----------------Deal #66 sl 1.32900
2011.08.09 00:06:43 核心 1 2011.01.17 14:39:39 oldDealsTotal=65 newDealsTotal=66
来自测试人员的报告。
正如你所看到的,独立计算的总数字是一致的,这意味着一切都很正确。故意把停止的例子拿出来。