MQL5中的OOP问题 - 页 78 1...717273747576777879808182838485...96 新评论 fxsaber 2020.06.11 09:14 #771 关于交易、自动交易系统和策略测试的论坛 关于MQL5的常见问题 Vladimir Simakov, 2020.06.10 19:06 #define LOG(dText) CLog::Ptr().Log((string)__LINE__,__FUNCSIG__,dText) class CLog{ int cHndl; CLog():cHndl(FileOpen(MQLInfoString(MQL_PROGRAM_NAME)+_Symbol+(string)(int)TimeCurrent()+".log",FILE_TXT|FILE_WRITE)){} ~CLog() {FileClose(cHndl);} public: static CLog* Ptr() {static CLog _log; return &_log;} void Log(string line,string sig,string text){ string _text=StringFormat("Line: %s. Signature: %s. %s",line,sig,text); PrintFormat(_text); FileWrite(cHndl,_text);} }; 你是否曾让不直接访问的对象代替高亮的对象,就像下面这样? #define LOG(dText) CLog::_log.Log((string)__LINE__,__FUNCSIG__,dText) class CLog{ int cHndl; CLog():cHndl(FileOpen(MQLInfoString(MQL_PROGRAM_NAME)+_Symbol+(string)(int)TimeCurrent()+".log",FILE_TXT|FILE_WRITE)){} ~CLog() {FileClose(cHndl);} public: static CLog _log; void Log(string line,string sig,string text){ string _text=StringFormat("Line: %s. Signature: %s. %s",line,sig,text); PrintFormat(_text); FileWrite(cHndl,_text);} }; static CLog CLog::_log; 这种设计不是很有用,因为它不能被广泛地应用。 int f() { return(1); } if (LOG(LOG(f()) -1) || LOG(LOG(f()) + 1)) LOG(f()); 我以同样的方式对必要的调用进行了剖析。 Dmitry Fedoseev 2020.06.11 10:47 #772 Vladimir Simakov:干得好!这就对了!那这个呢?你不得不承认,这有点复杂)。 如果用户在某个未知的编辑器中打开一个文件,并开始一个新的测试怎么办?他/她会寻找代码中的错误,修复它,翻看日志,但日志没有变化...... 而如果出现大的崩溃,终端崩溃怎么办?最有趣的是,它不会被保存在日志中。 Vladimir Simakov 2020.06.11 10:58 #773 Dmitry Fedoseev:如果用户在某个未知的编辑器中打开文件 并开始一个新的测试呢?他将寻找代码中的错误,修复它,查看日志,但日志没有变化......而如果出现大的崩溃,终端崩溃怎么办?最有趣的是,它不会保存在日志中。又是谁阻止你做FileFlush?这是以原型为例,那么每个人都会有自己的运气,他们通常会对完成的解决方案要求收费))))。因此,在任何情况下都可以打开它)))在这个实现中,每个发射都有自己的文件))) UPD:我举了一个例子,OOP使生活更容易,然后随心所欲地写,没有人取消关于手淫的格言)))。 Dmitry Fedoseev 2020.06.11 11:51 #774 Vladimir Simakov:谁阻止你做FileFlush?这是以原型为例,然后每个人都做出自己的运气,对于完成的解决方案,他们通常会要钱))))。因此,在任何情况下都可以打开它)))在这个实现中,每个发射都有自己的文件))))。 UPD:我已经展示了一个例子,当OOP使生活更容易,进一步说,按照你的意愿来写,没有人取消说关于手工作业))))。 哎哟,没注意到每次的文件名都是新的。然后添加FileFlush(),用啤酒就可以拉。 Alexey Navoykov 2020.06.11 12:26 #775 Dmitry Fedoseev:哎哟,没注意到每次的文件名都是新的。然后添加FileFlush(),啤酒就能起到作用。 在我的印象中,MQL中的FileFlush 已经空了很久了。 调用它是没有用的。 Vladimir Simakov 2020.06.11 12:27 #776 Alexey Navoykov: 在我的印象中,MQL中的FileFlush已经空了很久了。 调用它是没有用的。 HZ。没有测试,你就无法判断。 Dmitry Fedoseev 2020.06.11 13:21 #777 没有FileFlush,也没有FileClose到磁盘重置。通过任务管理器关闭终端。 Igor Makanu 2020.06.11 13:44 #778 Alexey Navoykov: 在我的印象中,MQL中的FileFlush已经是一个空文件了。 调用它是没用的。 不是空的,在MQL4中,我知道如果没有FileFlush,就不能使离线图表在线(离线......在线......伟大而强大的是俄罗斯语言!)) ) 直到你将新的数据重置到历史上,离线图表上将没有新的数据。 另一件事是,如果用户没有这样做,终端会自动重置并关闭文件....。在年初的测试器中,即使在关闭文件后,也不可能打开....。 我检查了MQL5中的情况--每3秒写一行,在日志中打印计数器。如果设置为假,那么用记事本打开后文件将是空的,如果是真的,那么文件内容可以在任何时候被读取。 也就是说,FileFlush的工作原理与声明的一样 #property script_show_inputs #include <Files\FileTxt.mqh> input bool UseFileFlush = true; //+------------------------------------------------------------------+ void OnStart() { CFileTxt f; f.Open("tstFileFlush.txt", FILE_WRITE | FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_COMMON); int cnt = 0; while(!IsStopped()) { f.WriteString(string(++cnt) + " : QWERTY\n"); if(UseFileFlush) f.Flush(); printf("cnt = %i", cnt); Sleep(3000); } } //+------------------------------------------------------------------+ Igor Makanu 2020.06.11 13:48 #779 为主题 如何将一个类的指针转换为一个父类型? 还是在编译时完成,并将匹配一个函数(方法)调用表? Vladimir Simakov 2020.06.11 13:55 #780 Igor Makanu:为主题如何将一个类的指针转换为一个父类型?还是会在编译时完成,并匹配一个函数(方法)调用表? 在这种情况下,它一点都不贵。调用虚拟方法的成本很高(按解读计算)。 1...717273747576777879808182838485...96 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
关于交易、自动交易系统和策略测试的论坛
关于MQL5的常见问题
Vladimir Simakov, 2020.06.10 19:06
你是否曾让不直接访问的对象代替高亮的对象,就像下面这样?
这种设计不是很有用,因为它不能被广泛地应用。
我以同样的方式对必要的调用进行了剖析。
干得好!这就对了!那这个呢?
你不得不承认,这有点复杂)。
如果用户在某个未知的编辑器中打开一个文件,并开始一个新的测试怎么办?他/她会寻找代码中的错误,修复它,翻看日志,但日志没有变化......
而如果出现大的崩溃,终端崩溃怎么办?最有趣的是,它不会被保存在日志中。
如果用户在某个未知的编辑器中打开文件 并开始一个新的测试呢?他将寻找代码中的错误,修复它,查看日志,但日志没有变化......
而如果出现大的崩溃,终端崩溃怎么办?最有趣的是,它不会保存在日志中。
又是谁阻止你做FileFlush?这是以原型为例,那么每个人都会有自己的运气,他们通常会对完成的解决方案要求收费))))。因此,在任何情况下都可以打开它)))在这个实现中,每个发射都有自己的文件)))
UPD:我举了一个例子,OOP使生活更容易,然后随心所欲地写,没有人取消关于手淫的格言)))。谁阻止你做FileFlush?这是以原型为例,然后每个人都做出自己的运气,对于完成的解决方案,他们通常会要钱))))。因此,在任何情况下都可以打开它)))在这个实现中,每个发射都有自己的文件))))。
UPD:我已经展示了一个例子,当OOP使生活更容易,进一步说,按照你的意愿来写,没有人取消说关于手工作业))))。哎哟,没注意到每次的文件名都是新的。然后添加FileFlush(),用啤酒就可以拉。
哎哟,没注意到每次的文件名都是新的。然后添加FileFlush(),啤酒就能起到作用。
在我的印象中,MQL中的FileFlush已经空了很久了。 调用它是没有用的。
HZ。没有测试,你就无法判断。
在我的印象中,MQL中的FileFlush已经是一个空文件了。 调用它是没用的。
不是空的,在MQL4中,我知道如果没有FileFlush,就不能使离线图表在线(离线......在线......伟大而强大的是俄罗斯语言!)) )
直到你将新的数据重置到历史上,离线图表上将没有新的数据。
另一件事是,如果用户没有这样做,终端会自动重置并关闭文件....。在年初的测试器中,即使在关闭文件后,也不可能打开....。
我检查了MQL5中的情况--每3秒写一行,在日志中打印计数器。如果设置为假,那么用记事本打开后文件将是空的,如果是真的,那么文件内容可以在任何时候被读取。
也就是说,FileFlush的工作原理与声明的一样
为主题
如何将一个类的指针转换为一个父类型?
还是在编译时完成,并将匹配一个函数(方法)调用表?
为主题
如何将一个类的指针转换为一个父类型?
还是会在编译时完成,并匹配一个函数(方法)调用表?
在这种情况下,它一点都不贵。调用虚拟方法的成本很高(按解读计算)。