MQL5中的OOP问题 - 页 61 1...545556575859606162636465666768...96 新评论 Igor Makanu 2020.05.20 07:54 #601 Alexey Navoykov: 另一方面,对于序列化来说,明确指定文本字段名可能更好,这样你就可以在代码中自由重命名,而不用担心存储的文件会停止工作。 我问的是变通的结构,实施本身并不是什么大问题 )))) 命名字段不是问题,问题是要考虑,以后该怎么做--json将只是每个类中的一个方法,还是一个静态类,还是一般以text....的形式重复类字段。 ;) ZS。 想到了一些既定的夸夸其谈--"是的,我有代码,一般来说,从MQL移植到C++中,这里和那里都没有改变!!!!" 这当然是需要的,但就开发这种代码结构所花费的时间而言,它是相当昂贵的,而且还需要有新愿望的代码支持。 只有连接C++(++ MQL)的优势是不明确的,语法结构有90%是相同的,为什么要重复呢? IMHO有趣的其他语言的扩展语法和编译器的可能性,在IDE中的控制,而写的项目- 它是至少快速和舒适,更不用说准备在公共领域的发展,同样的C#和蟒蛇 Koldun Zloy 2020.05.20 14:03 #602 Igor Makanu: 只有C++捆绑(++ MQL)的优势不明显 C++有更多的可能性。加上10亿个不同的图书馆。 Igor Makanu 2020.05.20 14:23 #603 Koldun Zloy: C++有更多的功能。加上10亿个不同的图书馆。 毋庸置疑地 但无论你如何努力,你都无法在MQL中打开任何C头文件,并使用现成的C++解决方案来连接一百万的库 今年早些时候,我在网上搜索了一下,并试图将TensorFlow连接到具有C++ API的MQL。 Koldun Zloy 2020.05.20 15:16 #604 Igor Makanu: 无疑 但是,无论你如何努力,你都不能把任何C语言头文件,在MQL中打开,并使用C++中现成的解决方案来连接一百万个库。 今年早些时候,我在谷歌上搜索了一下,并试图将TensorFlow连接到具有C++ API的MQL上--你需要写一个viper 你问到了C++和MQL的配对问题。我知道C++在DLL中使用。不然怎么会这样呢? Igor Makanu 2020.05.20 15:55 #605 Koldun Zloy: 你问的是C++和MQL之间的联系。我理解C++在DLL中被使用。不然怎么会这样呢? 我问:https://www.mql5.com/ru/forum/307970/page10#comment_11652222 否则,好....一个技巧,允许你在MQL中打开头文件c_api.h,然后使用TensorFlow文档。 现在你在VS中打开头文件,然后包住调用、模型、内部状态...。...到你的.dll中,然后你可以在MQL中使用它。 这一切都很费时 Igor Makanu:这就是为什么我问的是解决方法的结构,实施本身是事后的想法。) 也许使用MQL工具在json中序列化简单的结构是现实的https://habr.com/ru/post/311262/ 至少知道这些材料可以在网上找到是令人欣慰的。 附加的文件: c_api.zip 17 kb Vladimir Simakov 2020.05.20 19:20 #606 Igor Makanu: 嗯哼...我再试着问一下。 请帮助我,并需要一个例子!请! 这只是我在膝盖上写的东西,只是为了思考一下。 #define COMMA (text==NULL?NULL:",\n") #define PUSH(dVal) Push(#dVal,dVal) class CJSon{ string text; public: CJSon():text(NULL){} CJSon* Push(string key,string value) {text+=COMMA+"\""+key+"\":\""+value+"\""; return &this;} CJSon* Push(string key,long value) {text+=COMMA+"\""+key+"\":"+(string)value; return &this;} CJSon* Push(string key,double value) {text+=COMMA+"\""+key+"\":"+(string)value; return &this;} string Finish() {return text="{\n"+text+"\n}";} }; #undef COMMA void OnStart(){ int a=56; double b=0.369; string text="Example"; string json=(CJSon()).PUSH(a).PUSH(b).PUSH(text).Finish(); Print(json); } Igor Makanu 2020.05.20 21:56 #607 Vladimir Simakov: 写在我的膝盖上,只是为了想一想。 谢谢,但它不工作(())。 //+------------------------------------------------------------------+ static string _json; template<typename T>class CJSon{ #define COMMA (_json==NULL?NULL:",\n") #define PUSH(dVal) Push(#dVal,dVal) public: CJSon() {_json = "";} CJSon* Push(string key,string value) {_json+=COMMA+"\""+key+"\":\""+value+"\""; return &this;} CJSon* Push(string key,long value) {_json+=COMMA+"\""+key+"\":"+(string)value; return &this;} CJSon* Push(string key,double value) {_json+=COMMA+"\""+key+"\":"+(string)value; return &this;} static string Finish() {return _json="{\n"+_json+"\n}";} }; //+------------------------------------------------------------------+ class A { public: static long a1; }; long A::a1; //+------------------------------------------------------------------+ void OnStart() { CJSon<A> a; A::a1 = 10; a.PUSH(A::a1); string s = a.Finish() ; PRINT(s); } //+------------------------------------------------------------------+ 2020.05.20 23:51:43.932 tst____ (EURUSD,H1) s = { 2020.05.20 23:51:43.932 tst____ (EURUSD,H1) 。 2020.05.20 23:51:43.932 tst____ (EURUSD,H1) "A::a1":10 2020.05.20 23:51:43.932 tst____ (EURUSD,H1) } 除此之外,它只想与静力学一起工作。 虽然在一个方法中用定义来收集一个字符串并不难,但一般来说,你需要考虑一下 Koldun Zloy 2020.05.21 07:45 #608 Igor Makanu: 这里是问https://www.mql5.com/ru/forum/307970/page10#comment_11652222 否则,好....一些技巧,允许在MQL中打开头文件c_api.h,然后使用TensorFlow文档。 现在你在VS中打开头文件,然后包住调用、模型、内部状态...。...到你的.dll中,然后你可以在MQL中使用它。 总而言之,这很耗费时间 没有允许用MQL编译器编译C++源代码的技巧。 TensorFlow库输出了很多函数。你可能只需要其中的一小部分。 写出你所使用的函数的原型。这不会花很长时间。 Dmitry Fedoseev 2020.05.21 12:27 #609 Vladimir Simakov: 写在我的膝盖上,只是为了想一想。 最后,一些非常有趣的事情。这是一个 "蒸汽火车 "的图案吗? Vladimir Simakov 2020.05.21 18:27 #610 Igor Makanu: 谢谢,但它没有坚持下去(())。 2020.05.20 23:51:43.932 tst____ (EURUSD,H1) s = { 2020.05.20 23:51:43.932 tst____ (EURUSD,H1) 。 2020.05.20 23:51:43.932 tst____ (EURUSD,H1) "A::a1":10 2020.05.20 23:51:43.932 tst____ (EURUSD,H1) } 除此之外,它只想与静力学一起工作。 虽然用定义在一个方法中收集一个字符串并不难,但你需要考虑一下 不知何故,你的做法是错误的) #define COMMA (text==NULL?"{\n":",\n") #define VALUE(dVal) Push(#dVal,dVal) #define STRUCT(dVal) PushStruct(#dVal,dVal.JSon()) class CJSon{ string text; public: CJSon():text(NULL){} CJSon* Push(string key,string value) {text+=COMMA+"\""+key+"\":\""+value+"\""; return &this;} CJSon* PushStruct(string key,string value) {text+=COMMA+"\""+key+"\":"+value; return &this;} CJSon* Push(string key,long value) {text+=COMMA+"\""+key+"\":"+(string)value; return &this;} CJSon* Push(string key,double value) {text+=COMMA+"\""+key+"\":"+(string)value; return &this;} string Finish() {return text+="\n}";} }; #undef COMMA class _CTest{ int a; double b; string t; public: _CTest(int _a,double _b,string _t):a(_a),b(_b),t(_t){} string JSon() {return (CJSon()).VALUE(a).VALUE(b).VALUE(t).Finish();} }; class CTest{ _CTest test; int a; long b; public: CTest():test(10,0.369,"Hi"),a(555),b(LONG_MIN){} string JSon() {return (CJSon()).STRUCT(test).VALUE(a).VALUE(b).Finish();} }; void OnStart(){ CTest test; Print(test.JSon()); } 纠正的PS 1...545556575859606162636465666768...96 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
另一方面,对于序列化来说,明确指定文本字段名可能更好,这样你就可以在代码中自由重命名,而不用担心存储的文件会停止工作。
我问的是变通的结构,实施本身并不是什么大问题 ))))
命名字段不是问题,问题是要考虑,以后该怎么做--json将只是每个类中的一个方法,还是一个静态类,还是一般以text....的形式重复类字段。
;)
ZS。
想到了一些既定的夸夸其谈--"是的,我有代码,一般来说,从MQL移植到C++中,这里和那里都没有改变!!!!"
这当然是需要的,但就开发这种代码结构所花费的时间而言,它是相当昂贵的,而且还需要有新愿望的代码支持。
只有连接C++(++ MQL)的优势是不明确的,语法结构有90%是相同的,为什么要重复呢? IMHO有趣的其他语言的扩展语法和编译器的可能性,在IDE中的控制,而写的项目- 它是至少快速和舒适,更不用说准备在公共领域的发展,同样的C#和蟒蛇
只有C++捆绑(++ MQL)的优势不明显
C++有更多的可能性。加上10亿个不同的图书馆。
C++有更多的功能。加上10亿个不同的图书馆。
毋庸置疑地
但无论你如何努力,你都无法在MQL中打开任何C头文件,并使用现成的C++解决方案来连接一百万的库
今年早些时候,我在网上搜索了一下,并试图将TensorFlow连接到具有C++ API的MQL。
无疑
但是,无论你如何努力,你都不能把任何C语言头文件,在MQL中打开,并使用C++中现成的解决方案来连接一百万个库。
今年早些时候,我在谷歌上搜索了一下,并试图将TensorFlow连接到具有C++ API的MQL上--你需要写一个viper
你问到了C++和MQL的配对问题。我知道C++在DLL中使用。不然怎么会这样呢?
你问的是C++和MQL之间的联系。我理解C++在DLL中被使用。不然怎么会这样呢?
我问:https://www.mql5.com/ru/forum/307970/page10#comment_11652222
否则,好....一个技巧,允许你在MQL中打开头文件c_api.h,然后使用TensorFlow文档。
现在你在VS中打开头文件,然后包住调用、模型、内部状态...。...到你的.dll中,然后你可以在MQL中使用它。
这一切都很费时
这就是为什么我问的是解决方法的结构,实施本身是事后的想法。)
也许使用MQL工具在json中序列化简单的结构是现实的https://habr.com/ru/post/311262/
至少知道这些材料可以在网上找到是令人欣慰的。
嗯哼...我再试着问一下。
请帮助我,并需要一个例子!请!
这只是我在膝盖上写的东西,只是为了思考一下。
写在我的膝盖上,只是为了想一想。
谢谢,但它不工作(())。
2020.05.20 23:51:43.932 tst____ (EURUSD,H1) s = {
2020.05.20 23:51:43.932 tst____ (EURUSD,H1) 。
2020.05.20 23:51:43.932 tst____ (EURUSD,H1) "A::a1":10
2020.05.20 23:51:43.932 tst____ (EURUSD,H1) }
除此之外,它只想与静力学一起工作。
虽然在一个方法中用定义来收集一个字符串并不难,但一般来说,你需要考虑一下
这里是问https://www.mql5.com/ru/forum/307970/page10#comment_11652222
否则,好....一些技巧,允许在MQL中打开头文件c_api.h,然后使用TensorFlow文档。
现在你在VS中打开头文件,然后包住调用、模型、内部状态...。...到你的.dll中,然后你可以在MQL中使用它。
总而言之,这很耗费时间
没有允许用MQL编译器编译C++源代码的技巧。
TensorFlow库输出了很多函数。你可能只需要其中的一小部分。
写出你所使用的函数的原型。这不会花很长时间。
写在我的膝盖上,只是为了想一想。
最后,一些非常有趣的事情。这是一个 "蒸汽火车 "的图案吗?
谢谢,但它没有坚持下去(())。
2020.05.20 23:51:43.932 tst____ (EURUSD,H1) s = {
2020.05.20 23:51:43.932 tst____ (EURUSD,H1) 。
2020.05.20 23:51:43.932 tst____ (EURUSD,H1) "A::a1":10
2020.05.20 23:51:43.932 tst____ (EURUSD,H1) }
除此之外,它只想与静力学一起工作。
虽然用定义在一个方法中收集一个字符串并不难,但你需要考虑一下
不知何故,你的做法是错误的)
纠正的PS