错误、漏洞、问题 - 页 452 1...445446447448449450451452453454455456457458459...3184 新评论 [删除] 2011.07.09 18:09 #4511 谢谢你! Stanislav Korotky 2011.07.09 18:24 #4512 alexvd:是的,在第一点上,我显然感到困惑。解释一下描述中到底有什么问题,应该退回一份副本?关于串联,在你的情况下,你应该写成这样的内容要澄清的是。它说:"返回一个字符串的副本,其中指定位置的字符的值已经改变。" 该函数的原型是boolStringSetCharacter(...)。很明显,你不能把一个字符串放在一个bool里。如果确实返回了一个布尔值,那么显然这是一个成功/错误的标志。通 常情况下,其他文档页面有一个单独的 返回值部分 ,但这个页面没有。应该添加,在文本描述中制定一个关于函数语义的句子,而不是返回值。 关于连接,如果你写的是正确的,那么StringConcatenate函数 的描述也应该被修改。描述中说,string_var 参数 是一个[in][out]字符串,将作为连接的结果生成。你说,这个参数只有[出]。 Stanislav Korotky 2011.07.09 18:27 #4513 新问题。当BarsCalculated 返回0时,是什么意思? 这似乎不是一个错误,但0条怎么能计算?事实上--什么都没有计算。这不是一个错误吗? Валерий 2011.07.09 21:14 #4514 MoneyJinn:不幸的是,问题是终端只在 "结果 "选项卡中公布了带有评论的平仓 订单。相应的订单不会被添加到HistoryDealsTotal()的列表中。在订单的一般列表中HistoryOrdersTotal(),即使你选择了一个有一定冗余度的时期,订单也会丢失。我可以向你保证,在'测试结束'之前关闭的情况下,订单和交易都存在于历史中。我的多币种计算每个符号赚取的利润。在 "测试结束 "前在测试器中关闭的交易在去初始化中被纠正,以反映这些交易。所有符号的总利润与测试报告的数据相吻合。这就是代码。 if(HistorySelect(0,TimeTradeServer())) // Поправка для 'end of test' { int DeelsTotal=HistoryDealsTotal(); for(int i=0;i<SymbolsNumber;i++) { ulong ticket=HistoryDealGetTicket(DeelsTotal-1-i); string comment=HistoryDealGetString(ticket,DEAL_COMMENT); if(comment!="end of test"&&StringSubstr(comment,0,3)!="so ") break; for(int j=0;j<SymbolsNumber;j++) { if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=m_expert[j].Name()) continue; m_Profit[j]=m_Profit[j]+HistoryDealGetDouble(ticket,DEAL_PROFIT)+ // Добавим профит закрытой позиции для "end of test" и "so" HistoryDealGetDouble(ticket,DEAL_SWAP)+HistoryDealGetDouble(ticket,DEAL_COMMISSION); } } } [删除] 2011.07.09 22:48 #4515 同事们,有没有办法让SymbolInfoSessionTrade 在策略测试器中发挥作用?一个微不足道的条目不起作用。void OnTick() { datetime from, to; if (SymbolInfoSessionTrade(_Symbol, FRIDAY, 0, from, to)) Print("WOW!"); } Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote www.mql5.com Получение рыночной информации / SymbolInfoSessionQuote - Документация по MQL5 [删除] 2011.07.09 22:53 #4516 如果可能的话,还有一个问题。我想了解新操作员 的含义。它背后的想法是什么?为什么不以通常的方式创建该对象?毕竟,在区块结束后,对通过new声明的对象的访问将失去,所以我们为什么需要它?P.S. 老实说,我在文件中找不到它 :) Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new www.mql5.com Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5 Vladimir Gomonov 2011.07.09 23:01 #4517 220Volt:如果可能的话,还有一个问题。我想了解新操作员 的含义。它背后的想法是什么?为什么不以通常的方式创建该对象?毕竟,在区块结束后,对通过new声明的对象的访问将失去,所以我们为什么需要它? 一切都会在某一时刻过去。这是否意味着不需要做什么......?P.S. 老实说,我在文件中找不到它 :) 我相信你...:)) Andrey Vasiliev 2011.07.10 01:17 #4518 Valmars:谢谢你!弄明白了。使用TimeTradeServer() 而不是TimeCurrent()是必要和充分的。在交易周结束时,没有新的报价,这就是为什么TimeCurrent()很长时间不更新的原因。当解除专家顾问的初始化时,TimeCurrent()显示时间为23:00;TimeTradeServer()显示时间为23:59,这与测试的结束相吻合。 Валерий 2011.07.10 03:26 #4519 MoneyJinn:谢谢你!弄明白了。使用TimeTradeServer() 而不是TimeCurrent()是必要和充分的。在交易周结束时,没有新的报价,因此TimeCurrent()在很长一段时间内不会更新。 重点不在于引号,而在于 "测试结束 "的交易是在测试期结束后执行的。所以,无论是'OnTick'还是'OnTimer'都不能从历史中获取它们。至少一年前是这样的,所以我把他们的检查转移到'OnDeinit'。 [删除] 2011.07.10 03:45 #4520 220Volt:如果可能的话,还有一个问题。我想了解新操作员 的含义。它背后的想法是什么?为什么不以通常的方式创建该对象?毕竟,在区块结束后,对通过new声明的对象的访问将失去,所以我们为什么需要它呢?P.S 老实说,在文件中找不到它 :) 不要创建动态对象--你将不必使用现在和其他一切与这些对象相关的东西(尽管那时你将无法做很多事情)。你想了解的不是现在的意义,而是与动态对象一起工作的意义......。 动态放置对象的初始化和非初始化 指向对象的指针 是一个特殊情况,因为声明一个指针并不要求初始化有关对象。动态放置的对象仅在通过new操作符 创建一个类的实例时被初始化。对象的初始化意味着调用相应类的构造函数。如果一个类中没有相应的构造函数,其简单类型 的成员将不会被自动初始化;字符串、动态数组 和复杂对象 类型的成员将被自动初始化。 指针可以被局部或全局地声明,可以用一个空的NULL 值初始化,也可以用一个相同类型的指针或生成的 指针初始化。如果new 是在本地层声明的指针上调用 的,那么该指针的删除语句也 必须在离开本地层之前执行。否则,指针将丢失,并且不能明确地删除该对象。 所有由表达式 pointer_object=new_ClassName创建的对象 必须在事后用delete(pointer_object)操作符销毁。如果由于某种原因,这个变量没有被删除操作者 销毁,那么关于它的信息将出现在专家日志中。你可以声明多个变量,并为所有这些变量分配指向同一对象的指针。 如果被动态创建的对象有一个构造函数,这个构造函数将在执行 new操作时被调用 。如果对象有一个析构器,那么 在执行删除 操作时将会调用该析构器 。 因此,动态放置的对象只有在使用 new操作符创建时才会被创建 , 并且 保证 它们在程序卸载 时被delete 操作符 或MQL5执行系统自动 删除 。动态创建的对象指针的声明顺序不影响其初始化的顺序。初始化和非初始化的顺序完全由程序员控制。 1...445446447448449450451452453454455456457458459...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你!
是的,在第一点上,我显然感到困惑。解释一下描述中到底有什么问题,应该退回一份副本?
关于串联,在你的情况下,你应该写成这样的内容
要澄清的是。它说:"返回一个字符串的副本,其中指定位置的字符的值已经改变。" 该函数的原型是boolStringSetCharacter(...)。很明显,你不能把一个字符串放在一个bool里。如果确实返回了一个布尔值,那么显然这是一个成功/错误的标志。通 常情况下,其他文档页面有一个单独的 返回值部分 ,但这个页面没有。应该添加,在文本描述中制定一个关于函数语义的句子,而不是返回值。
关于连接,如果你写的是正确的,那么StringConcatenate函数 的描述也应该被修改。描述中说,string_var 参数 是一个[in][out]字符串,将作为连接的结果生成。你说,这个参数只有[出]。
不幸的是,问题是终端只在 "结果 "选项卡中公布了带有评论的平仓 订单。
相应的订单不会被添加到HistoryDealsTotal()的列表中。
在订单的一般列表中HistoryOrdersTotal(),即使你选择了一个有一定冗余度的时期,订单也会丢失。
我可以向你保证,在'测试结束'之前关闭的情况下,订单和交易都存在于历史中。我的多币种计算每个符号赚取的利润。在 "测试结束 "前在测试器中关闭的交易在去初始化中被纠正,以反映这些交易。所有符号的总利润与测试报告的数据相吻合。这就是代码。
同事们,有没有办法让SymbolInfoSessionTrade 在策略测试器中发挥作用?
一个微不足道的条目不起作用。
如果可能的话,还有一个问题。我想了解新操作员 的含义。它背后的想法是什么?为什么不以通常的方式创建该对象?毕竟,在区块结束后,对通过new声明的对象的访问将失去,所以我们为什么需要它?
P.S. 老实说,我在文件中找不到它 :)
如果可能的话,还有一个问题。我想了解新操作员 的含义。它背后的想法是什么?为什么不以通常的方式创建该对象?毕竟,在区块结束后,对通过new声明的对象的访问将失去,所以我们为什么需要它?
P.S. 老实说,我在文件中找不到它 :)
谢谢你!弄明白了。使用TimeTradeServer() 而不是TimeCurrent()是必要和充分的。
在交易周结束时,没有新的报价,这就是为什么TimeCurrent()很长时间不更新的原因。
当解除专家顾问的初始化时,TimeCurrent()显示时间为23:00;TimeTradeServer()显示时间为23:59,这与测试的结束相吻合。
谢谢你!弄明白了。使用TimeTradeServer() 而不是TimeCurrent()是必要和充分的。
在交易周结束时,没有新的报价,因此TimeCurrent()在很长一段时间内不会更新。
如果可能的话,还有一个问题。我想了解新操作员 的含义。它背后的想法是什么?为什么不以通常的方式创建该对象?毕竟,在区块结束后,对通过new声明的对象的访问将失去,所以我们为什么需要它呢?
P.S 老实说,在文件中找不到它 :)
不要创建动态对象--你将不必使用现在和其他一切与这些对象相关的东西(尽管那时你将无法做很多事情)。
你想了解的不是现在的意义,而是与动态对象一起工作的意义......。
动态放置对象的初始化和非初始化
指向对象的指针 是一个特殊情况,因为声明一个指针并不要求初始化有关对象。动态放置的对象仅在通过new操作符 创建一个类的实例时被初始化。对象的初始化意味着调用相应类的构造函数。如果一个类中没有相应的构造函数,其简单类型 的成员将不会被自动初始化;字符串、动态数组 和复杂对象 类型的成员将被自动初始化。
指针可以被局部或全局地声明,可以用一个空的NULL 值初始化,也可以用一个相同类型的指针或生成的 指针初始化。如果new 是在本地层声明的指针上调用 的,那么该指针的删除语句也 必须在离开本地层之前执行。否则,指针将丢失,并且不能明确地删除该对象。
所有由表达式 pointer_object=new_ClassName创建的对象 必须在事后用delete(pointer_object)操作符销毁。如果由于某种原因,这个变量没有被删除操作者 销毁,那么关于它的信息将出现在专家日志中。你可以声明多个变量,并为所有这些变量分配指向同一对象的指针。
如果被动态创建的对象有一个构造函数,这个构造函数将在执行 new操作时被调用 。如果对象有一个析构器,那么 在执行删除 操作时将会调用该析构器 。
因此,动态放置的对象只有在使用 new操作符创建时才会被创建 , 并且 保证 它们在程序卸载 时被delete 操作符 或MQL5执行系统自动 删除 。动态创建的对象指针的声明顺序不影响其初始化的顺序。初始化和非初始化的顺序完全由程序员控制。