MQL5中的OOP问题 - 页 42

 
Igor Makanu:

...

所有的调用都是在私有方法中进行的,但是有没有一种 "绝地武士的思维方式?"来摆脱源代码中CheckPointer(m_order)==POINTER_INVALID的情况?

...

更有可能的是,这不是一个技巧,算法必须是这样的,如果没有顺序,这部分代码就不会被执行。

或者,也许它本来就是这样的。但是不太可能,如果有一个指针,并不意味着有一个订单,所以我们必须检查是否有一个订单。

 
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

退休的时间

 
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等等。 这一切都由自己完成,没有 "订单对象 "的任何干预。

如果订单已经关闭,它对策略来说仍然存在--最终,策略对订单的利润(当前或已经关闭--这并不重要!)和订单 本身的状态(尚未下单、活跃和已经关闭)感兴趣。


一切按计划进行,也许你在某个地方是对的,但现在代码仍在测试中,指针必须被检查,以后我们可以尝试不检查......虽然工作逻辑意味着以下行动,如果没有这样的对象....,原则上没有太多的余地来重做一切虚拟订单,我仍然需要考虑))))。

 
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
 
Vladimir Simakov:

然后还有这个,用来装糖。

第一个简单的测试显示

void OnStart()
{
    A * const a = new A;
    DELETE(a); //Error: 'a' - constant cannot be modified
}

这不是糖,而是一种不同的...更多的液体物质

 
A100:

第一个简单的测试显示

这不是糖,而是一种不同的...更多的液体物质。

因为它不在那里)。NULL既不是这里也不是那里。你应该使用CheckPointer()函数。指针不需要自己归零--删除后它会自己变成POINTER_INVALID。

 
Dmitry Fedoseev:

因为那不是你所在的地方))。NULL既不是这里也不是那里。你应该使用CheckPointer()函数。你不需要自己将指针归零,删除后它会自己变成POINTER_INVALID。

我完全同意,如果你读了管理员的文章,通常听起来是这样的:"正确编写你的代码

一般来说,MQL总是很艰难,新的建设,新的麻烦,你开始发现我是否用错了,在这里,你去签字吧))))。

 
A100:

第一个简单的测试显示

这不是糖,而是一种不同的...更多的液体物质

好男人。你的自由职业工作、你在市场上的产品、你关于编程的出版物的统计数据在哪里?还是你想让别人在恒定指针的话题上开阔眼界,或者闪现你在物质类型方面的知识......?今后,请考虑例子的上下文,而不是试图重现编译器的错误。
 
Vladimir Simakov:
亲爱的人。你的自由职业工作、市场上的产品、与编程有关的出版物的统计数据 在哪里?还是你想在恒定指针的主题上打开别人的眼睛,或者在物质类型的主题上闪现你的知识......?今后,请考虑例子的上下文,而不是试图重现编译器的错误。

我有一个简单的背景:如果代码(在这种情况下是一个宏)写得有错误,我认为可以报告它(并举一个例子来证明)。而在这种情况下,我不清楚统计数据 与之有什么关系

 
A100:

而在这种情况下,我不清楚统计数字 与此有什么关系。

保持简单,人们会来找你。

;)

SZZY:你的帖子几乎都是一个好主意,但材料的呈现,嗯,不完全是出于好意,当然是你的业务,但我认为,想帮助--帮助,想聪明点,嗯,往往是这样的结果

这取决于你,但通过在线资源提高你的自尊心 - ....我太懒了,不想继续打字。