MQL5中的OOP问题 - 页 42 1...353637383940414243444546474849...96 新评论 Dmitry Fedoseev 2019.09.17 04:03 #411 Igor Makanu: ... 所有的调用都是在私有方法中进行的,但是有没有一种 "绝地武士的思维方式?"来摆脱源代码中CheckPointer(m_order)==POINTER_INVALID的情况? ... 更有可能的是,这不是一个技巧,算法必须是这样的,如果没有顺序,这部分代码就不会被执行。 或者,也许它本来就是这样的。但是不太可能,如果有一个指针,并不意味着有一个订单,所以我们必须检查是否有一个订单。 A100 2019.09.17 05:03 #412 Igor Makanu: 如果我没记错的话,在年初的时候,可以在日志中取消NULL,得到0,现在则出现了错误 变化 关于交易、自动交易系统和策略测试器的论坛 虫子,虫子,问题 Kirill Belousov, 2017.12.14 21:34 Print(NULL); // 'NULL' - expression of 'void' type is illegal Alert(NULL); // 'NULL' - expression of 'void' type is illegal 退休的时间 Igor Makanu 2019.09.17 06:02 #413 A100: 变化 是的,但我记得我以前在MT4中是怎么做的,这就是我取消注册指针的原因。 class A {}; A *a; void OnStart() { Print("1 : ",a); a= new A; Print("2 : ",a); a = NULL; Print("3 : ",a); delete a; } 2019.09.17 07:52:40.855 tst (EURUSD,H1) 1 : 0 2019.09.17 07:52:40.856 tst (EURUSD,H1) 2 : 1048576 2019.09.17 07:52:40.856 tst (EURUSD,H1) 3 : 0 2019.09.17 07:52:40.856 tst (EURUSD,H1) 剩余1个未删除对象 2019.09.17 07:52:40.856 tst (EURUSD,H1) 剩下1个A型对象 2019.09.17 07:52:40.856 tst (EURUSD,H1) 24字节的泄漏内存 德米特里-费多塞耶夫。 这可能不是事实,算法应该是这样的:如果没有订单,这部分代码就不会执行。 或者,也许它的目的是这样的。但这是不可能的,如果有一个指针,并不意味着有一个订单,所以我们必须检查是否存在一个订单。 根据问题,我已经在代码中写了如何创建一个 "订单对象",它本身会寻找市场中的东西--在设计器中使用magik搜索一个订单,如果找到它,它将捡起它,在一个价格上打开一个订单,订单类型本身计数(市场或待定),批量正常化,如果重新报价是在前一个tick上,重试打开一个订单,在下一个tick上成功下单后,放置一个sl等等。 这一切都由自己完成,没有 "订单对象 "的任何干预。 如果订单已经关闭,它对策略来说仍然存在--最终,策略对订单的利润(当前或已经关闭--这并不重要!)和订单 本身的状态(尚未下单、活跃和已经关闭)感兴趣。 一切按计划进行,也许你在某个地方是对的,但现在代码仍在测试中,指针必须被检查,以后我们可以尝试不检查......虽然工作逻辑意味着以下行动,如果没有这样的对象....,原则上没有太多的余地来重做一切虚拟订单,我仍然需要考虑))))。 Questions on OOP in 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Avalanche Vladimir Simakov 2019.09.17 06:40 #414 Igor Makanu: 我想写下我曾经拥有的东西,而不是 它是这样的。 但记得如何在MQL中检查宏替换的问题 2019.09.16 22:57:42.837 tst (EURUSD,H1) a = 1 2019.09.16 22:57:42.837 tst (EURUSD,H1) POINTER_INVALID= 0 2019.09.16 22:57:42.837 tst (EURUSD,H1) NULL = 0 如果我没记错的话,在年初的时候,可以把NULL解压到日志中,得到0,现在出现了一个错误 也就是说,NULL的行为在未来不应该改变,但是用什么来代替NULL就不清楚了,可能如果现在检查这种情况,就像写的if(CheckPointer(m_order)==POINTER_INVALID)),可以 说是正确的代码) 请自由申请。有98%的信心,源代码中的NULL是这样的:#define NULL nullptr A100 2019.09.17 18:24 #415 Vladimir Simakov: 然后还有这个,用来装糖。 第一个简单的测试显示 void OnStart() { A * const a = new A; DELETE(a); //Error: 'a' - constant cannot be modified } 这不是糖,而是一种不同的...更多的液体物质 Dmitry Fedoseev 2019.09.17 18:56 #416 A100: 第一个简单的测试显示 这不是糖,而是一种不同的...更多的液体物质。 因为它不在那里)。NULL既不是这里也不是那里。你应该使用CheckPointer()函数。指针不需要自己归零--删除后它会自己变成POINTER_INVALID。 Igor Makanu 2019.09.17 19:13 #417 Dmitry Fedoseev: 因为那不是你所在的地方))。NULL既不是这里也不是那里。你应该使用CheckPointer()函数。你不需要自己将指针归零,删除后它会自己变成POINTER_INVALID。 我完全同意,如果你读了管理员的文章,通常听起来是这样的:"正确编写你的代码 一般来说,MQL总是很艰难,新的建设,新的麻烦,你开始发现我是否用错了,在这里,你去签字吧))))。 Vladimir Simakov 2019.09.17 19:20 #418 A100: 第一个简单的测试显示 这不是糖,而是一种不同的...更多的液体物质 好男人。你的自由职业工作、你在市场上的产品、你关于编程的出版物的统计数据在哪里?还是你想让别人在恒定指针的话题上开阔眼界,或者闪现你在物质类型方面的知识......?今后,请考虑例子的上下文,而不是试图重现编译器的错误。 A100 2019.09.17 19:59 #419 Vladimir Simakov: 亲爱的人。你的自由职业工作、市场上的产品、与编程有关的出版物的统计数据 在哪里?还是你想在恒定指针的主题上打开别人的眼睛,或者在物质类型的主题上闪现你的知识......?今后,请考虑例子的上下文,而不是试图重现编译器的错误。 我有一个简单的背景:如果代码(在这种情况下是一个宏)写得有错误,我认为可以报告它(并举一个例子来证明)。而在这种情况下,我不清楚统计数据 与之有什么关系 Igor Makanu 2019.09.17 20:27 #420 A100: 而在这种情况下,我不清楚统计数字 与此有什么关系。 保持简单,人们会来找你。 ;) SZZY:你的帖子几乎都是一个好主意,但材料的呈现,嗯,不完全是出于好意,当然是你的业务,但我认为,想帮助--帮助,想聪明点,嗯,往往是这样的结果 这取决于你,但通过在线资源提高你的自尊心 - ....我太懒了,不想继续打字。 1...353637383940414243444546474849...96 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
...
所有的调用都是在私有方法中进行的,但是有没有一种 "绝地武士的思维方式?"来摆脱源代码中CheckPointer(m_order)==POINTER_INVALID的情况?
...
更有可能的是,这不是一个技巧,算法必须是这样的,如果没有顺序,这部分代码就不会被执行。
或者,也许它本来就是这样的。但是不太可能,如果有一个指针,并不意味着有一个订单,所以我们必须检查是否有一个订单。
如果我没记错的话,在年初的时候,可以在日志中取消NULL,得到0,现在则出现了错误
变化
关于交易、自动交易系统和策略测试器的论坛
虫子,虫子,问题
Kirill Belousov, 2017.12.14 21:34
退休的时间
变化
是的,但我记得我以前在MT4中是怎么做的,这就是我取消注册指针的原因。
2019.09.17 07:52:40.855 tst (EURUSD,H1) 1 : 0
2019.09.17 07:52:40.856 tst (EURUSD,H1) 2 : 1048576
2019.09.17 07:52:40.856 tst (EURUSD,H1) 3 : 0
2019.09.17 07:52:40.856 tst (EURUSD,H1) 剩余1个未删除对象
2019.09.17 07:52:40.856 tst (EURUSD,H1) 剩下1个A型对象
2019.09.17 07:52:40.856 tst (EURUSD,H1) 24字节的泄漏内存
这可能不是事实,算法应该是这样的:如果没有订单,这部分代码就不会执行。
或者,也许它的目的是这样的。但这是不可能的,如果有一个指针,并不意味着有一个订单,所以我们必须检查是否存在一个订单。
根据问题,我已经在代码中写了如何创建一个 "订单对象",它本身会寻找市场中的东西--在设计器中使用magik搜索一个订单,如果找到它,它将捡起它,在一个价格上打开一个订单,订单类型本身计数(市场或待定),批量正常化,如果重新报价是在前一个tick上,重试打开一个订单,在下一个tick上成功下单后,放置一个sl等等。 这一切都由自己完成,没有 "订单对象 "的任何干预。
如果订单已经关闭,它对策略来说仍然存在--最终,策略对订单的利润(当前或已经关闭--这并不重要!)和订单 本身的状态(尚未下单、活跃和已经关闭)感兴趣。
一切按计划进行,也许你在某个地方是对的,但现在代码仍在测试中,指针必须被检查,以后我们可以尝试不检查......虽然工作逻辑意味着以下行动,如果没有这样的对象....,原则上没有太多的余地来重做一切虚拟订单,我仍然需要考虑))))。
我想写下我曾经拥有的东西,而不是
它是这样的。
但记得如何在MQL中检查宏替换的问题
2019.09.16 22:57:42.837 tst (EURUSD,H1) a = 1
2019.09.16 22:57:42.837 tst (EURUSD,H1) POINTER_INVALID= 0
2019.09.16 22:57:42.837 tst (EURUSD,H1) NULL = 0
如果我没记错的话,在年初的时候,可以把NULL解压到日志中,得到0,现在出现了一个错误
也就是说,NULL的行为在未来不应该改变,但是用什么来代替NULL就不清楚了,可能如果现在检查这种情况,就像写的if(CheckPointer(m_order)==POINTER_INVALID)),可以 说是正确的代码)
然后还有这个,用来装糖。
第一个简单的测试显示
这不是糖,而是一种不同的...更多的液体物质
第一个简单的测试显示
这不是糖,而是一种不同的...更多的液体物质。
因为它不在那里)。NULL既不是这里也不是那里。你应该使用CheckPointer()函数。指针不需要自己归零--删除后它会自己变成POINTER_INVALID。
因为那不是你所在的地方))。NULL既不是这里也不是那里。你应该使用CheckPointer()函数。你不需要自己将指针归零,删除后它会自己变成POINTER_INVALID。
我完全同意,如果你读了管理员的文章,通常听起来是这样的:"正确编写你的代码
一般来说,MQL总是很艰难,新的建设,新的麻烦,你开始发现我是否用错了,在这里,你去签字吧))))。
第一个简单的测试显示
这不是糖,而是一种不同的...更多的液体物质
亲爱的人。你的自由职业工作、市场上的产品、与编程有关的出版物的统计数据 在哪里?还是你想在恒定指针的主题上打开别人的眼睛,或者在物质类型的主题上闪现你的知识......?今后,请考虑例子的上下文,而不是试图重现编译器的错误。
我有一个简单的背景:如果代码(在这种情况下是一个宏)写得有错误,我认为可以报告它(并举一个例子来证明)。而在这种情况下,我不清楚统计数据 与之有什么关系
而在这种情况下,我不清楚统计数字 与此有什么关系。
保持简单,人们会来找你。
;)
SZZY:你的帖子几乎都是一个好主意,但材料的呈现,嗯,不完全是出于好意,当然是你的业务,但我认为,想帮助--帮助,想聪明点,嗯,往往是这样的结果
这取决于你,但通过在线资源提高你的自尊心 - ....我太懒了,不想继续打字。