MQL5中的OOP问题 - 页 48 1...414243444546474849505152535455...96 新评论 Vladimir Simakov 2020.04.21 14:04 #471 Alexey Navoykov: 最主要的是,它应该比C++更高级,其中的代码应该更简单、更简洁。 但事实上恰恰相反,MQL中的代码更繁琐、更笨拙。 你必须压缩大量的东西。 它让我想起了WinApi的感觉))) Igor Makanu 2020.05.15 19:15 #472 有谁能告诉我们如何移植到MQL。 https://ru.wikipedia.org/wiki/Хранитель(设计模式)/非常规的C++版本的模式 正面试过,前方描述出了问题 //+------------------------------------------------------------------+ class Originator { public: int state; Originator() : state(0) { } class Memento; Memento* getMemento(); void setState(int s) { state = s; } void dumpState() { printf("State: %i", state); } class Memento { public: class Originator; int state; Originator* org; Memento() : state(0) { } void restoreState(); }; }; //+------------------------------------------------------------------+ Originator::Memento* Originator::getMemento() { Originator::Memento* m = new Originator::Memento(); // m.org = this; // m.state = state; // m->org = this; // m->state = state; return m; } //+------------------------------------------------------------------+ void Originator::Memento::restoreState() { // org->state = state; } //+------------------------------------------------------------------+ void OnStart() { } //+------------------------------------------------------------------+ Denis Kirichenko 2020.05.15 19:44 #473 Igor Makanu: 有谁能告诉我们如何移植到MQL。 https://ru.wikipedia.org/wiki/Хранитель(设计模式)/C++模式的非标准版本 正面试过,前方描述出了问题 我的版本。 //+------------------------------------------------------------------+ class Originator { public: int state; Originator() : state(0) { } class Memento; Memento* getMemento(); void setState(int s) { state = s; } void dumpState() { printf("State: %i", state); } class Memento { public: //class Originator; int state; Originator* org; Memento() : state(0) { } void restoreState(); }; }; //+------------------------------------------------------------------+ Originator::Memento* Originator::getMemento() { Originator::Memento* m = new Originator::Memento(); m.org = GetPointer(this); m.state = state; return m; } //+------------------------------------------------------------------+ void Originator::Memento::restoreState() { this.state = state; } //+------------------------------------------------------------------+ void OnStart() { Originator org_obj; Originator::Memento* ptr_mem_obj = org_obj.getMemento(); delete ptr_mem_obj; } //+------------------------------------------------------------------+ Igor Makanu 2020.05.15 19:57 #474 Denis Kirichenko: 我的版本。 很好!好的例子 谢谢你! Dmitry Fedoseev 2020.05.16 02:46 #475 Alexey Navoykov: 最主要的是,它应该比C++更高级,其中的代码应该更简单、更简洁。 但事实上恰恰相反,MQL中的代码更繁琐、更笨拙。 很多事情都要拐弯抹角。 不,那是一个简短的笑话)。也许你在生活中选错了专业,也许你应该去读烹饪技术学校。 Dmitry Fedoseev 2020.05.16 02:47 #476 Alexey Navoykov: 其实,MQL是什么语言并不重要,主要是它应该比C++更高级,其中的代码应该更简单、更简洁。 但事实上恰恰相反,MQL中的代码更加繁琐、笨拙。 很多东西都要拐弯抹角地操作。 这里的主要问题是移植本身,甚至不是一般的移植,而是你如何能达到这样一个想法。 Dmitry Fedoseev 2020.05.16 02:50 #477 这就是心智不成熟的儿童学习STL的后果。 而MQL--它的创造者正好完美地表明,他们比任何人都更了解程序员的实际问题和编程的挑战。如果你不明白,也许你真的应该考虑一下烹饪技术学校? MQL中的主要问题,也是唯一的问题,是思考如何确保策略的可靠执行的算法。这根本不是一个语言问题。任何语言或语法都不能单独提供这一点。这就是为什么你在句法层面上的打探是一个光明的证明,你仍然处于幼儿园的水平。那就是你甚至还没有学会如何编码,没有达到开发稳定算法的阶段。但至少你已经有...一整车的人。 Vladimir Simakov 2020.05.16 17:35 #478 Igor Makanu: 很好!很好的例子 谢谢你! class Originator { int state; public: class Memento; Originator() : state(0){} Memento* getMemento() {return new Memento(&this);} void setState(int s) {state=s;} int State() {return state;} void dumpState() {printf("State: %i", state);} /////////////////////////////////////////////////////////// class Memento{ int state; Originator* org; public: Memento(Originator* mOrg):state(mOrg.State()),org(mOrg){} void restoreState() {org.setState(state);} }; /////////////////////////////////////////////////////////// }; void OnStart() { Originator org_obj; Originator::Memento* ptr_mem_obj = org_obj.getMemento(); org_obj.setState(6); org_obj.dumpState(); ptr_mem_obj.restoreState(); org_obj.dumpState(); delete ptr_mem_obj; } 这似乎是正确的 Igor Makanu 2020.05.16 17:40 #479 Vladimir Simakov: 这似乎是正确的方式 好的,我会保存它,我需要测试工作原理,也许这就是我所寻找的--为测试者和工作中的EA提供一个代码,它可以保存其状态,相反,在测试者中不要在 "额外的手势 "上浪费资源--这种模式的一部分可以由#ifdef -ami涵盖;) Vladimir Simakov 2020.05.16 18:20 #480 模式单一,当然如果有人需要的话。 class Alone{ private: int state; Alone():state(0){} public: static Alone* Get(){ static Alone alone; return &alone;} int State() {return(state);} void State(int _state) {state=_state;} }; void OnStart() { Test(123); Alone* test=Alone::Get(); Print(test.State()); } void Test(int x){ Alone* test=Alone::Get(); test.State(x);} 我一直渴望有一个好的,因为啤酒)))。 越来越老了,我想)))) 1...414243444546474849505152535455...96 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
最主要的是,它应该比C++更高级,其中的代码应该更简单、更简洁。 但事实上恰恰相反,MQL中的代码更繁琐、更笨拙。 你必须压缩大量的东西。
有谁能告诉我们如何移植到MQL。
https://ru.wikipedia.org/wiki/Хранитель(设计模式)/非常规的C++版本的模式
正面试过,前方描述出了问题
有谁能告诉我们如何移植到MQL。
https://ru.wikipedia.org/wiki/Хранитель(设计模式)/C++模式的非标准版本
正面试过,前方描述出了问题
我的版本。
我的版本。
很好!好的例子
谢谢你!
最主要的是,它应该比C++更高级,其中的代码应该更简单、更简洁。 但事实上恰恰相反,MQL中的代码更繁琐、更笨拙。 很多事情都要拐弯抹角。
不,那是一个简短的笑话)。也许你在生活中选错了专业,也许你应该去读烹饪技术学校。
其实,MQL是什么语言并不重要,主要是它应该比C++更高级,其中的代码应该更简单、更简洁。 但事实上恰恰相反,MQL中的代码更加繁琐、笨拙。 很多东西都要拐弯抹角地操作。
这里的主要问题是移植本身,甚至不是一般的移植,而是你如何能达到这样一个想法。
这就是心智不成熟的儿童学习STL的后果。
而MQL--它的创造者正好完美地表明,他们比任何人都更了解程序员的实际问题和编程的挑战。如果你不明白,也许你真的应该考虑一下烹饪技术学校?
MQL中的主要问题,也是唯一的问题,是思考如何确保策略的可靠执行的算法。这根本不是一个语言问题。任何语言或语法都不能单独提供这一点。这就是为什么你在句法层面上的打探是一个光明的证明,你仍然处于幼儿园的水平。那就是你甚至还没有学会如何编码,没有达到开发稳定算法的阶段。但至少你已经有...一整车的人。
很好!很好的例子
谢谢你!
这似乎是正确的
这似乎是正确的方式
好的,我会保存它,我需要测试工作原理,也许这就是我所寻找的--为测试者和工作中的EA提供一个代码,它可以保存其状态,相反,在测试者中不要在 "额外的手势 "上浪费资源--这种模式的一部分可以由#ifdef -ami涵盖;)
模式单一,当然如果有人需要的话。
我一直渴望有一个好的,因为啤酒)))。
越来越老了,我想))))