程序库: TradeTransactions - 页 4 12345678 新评论 Nauris Zukas 2018.11.22 13:12 #31 根据第一次测试,我认为应该为 double 和 datetime 分别创建资源和全局变量名称。这样做对吗? const RESOURCEDATA<double>ResourceDouble("::Double_"+__FILE__); const RESOURCEDATA<datetime>ResourceTime("::Time_"+__FILE__); int OnInit() { _GlobalVariableSet("ResourceName",ResourceDouble.GetFullName()); Print(" ResourceDouble.GetFullName(): ",ResourceDouble.GetFullName()); _GlobalVariableSet("ResourceName1",ResourceTime.GetFullName()); Print(" ResourceTime.GetFullName(): ",ResourceTime.GetFullName()); //--- return(INIT_SUCCEEDED); } fxsaber 2018.11.22 13:21 #32 Nauris Zukas:根据第一次测试,我认为应该为 double 和 datetime 分别创建资源和全局变量名称。这样做对吗?很遗憾,您的编程语言水平很难达到您的要求。也许其他人会向你解释。 Nauris Zukas 2018.11.22 13:31 #33 fxsaber:不幸的是,要达到您的编程语言水平非常困难。也许别人会向你解释。好吧,最重要的是,到目前为止,一切对我来说都是可行的。 附加的文件: Test_Keep_Info_12.mq5 7 kb Test_Receive_info_12.mq5 6 kb Nauris Zukas 2018.11.26 12:33 #34 fxsaber:更新 ResourceData.mqh 并尝试这些指标 下午好!不能从 .mqh 转到指标吗?或者有什么技巧可以在编译指标时不会每次都重置?我做了这样一个变体,但在编译指标时会重置: #include <fxsaber\TradeTransactions\ResourceData.mqh> //https://www.mql5.com/zh/code/22166 #include <GlobalVariables.mqh> // https://www.mql5.com/ru/forum/189649#comment_4854618 const RESOURCEDATA<MqlTick>m_Resource("::"+__FILE__); // 用于数据传输的资源(滴答声) class CMyTicks { protected: public: //+------------------------------------------------------------------+ //| 构造函数。| //+------------------------------------------------------------------+ void CMyTicks() { _GlobalVariableSet("ResourceName",m_Resource.GetFullName()); // 将资源全名(只读)写入全局变量 } //+------------------------------------------------------------------+ //| 销毁器。| //+------------------------------------------------------------------+ void ~CMyTicks() { //_GlobalVariableDel("ResourceName"); } //+------------------------------------------------------------------+ void CollectTicks() { MqlTick m_Ticks[]; CopyTicks(_Symbol,m_Ticks,COPY_TICKS_ALL,0,5); // 生成数据 m_Resource=m_Ticks; // 记录数据 } }; //+------------------------------------------------------------------+ // 数据检索 #property indicator_chart_window #property indicator_plots 0 #include <Test_Keep_Info_13.mqh> CMyTicks Test; #include <fxsaber\TradeTransactions\ResourceData.mqh> //https://www.mql5.com/zh/code/22166 #include <GlobalVariables.mqh> // https://www.mql5.com/ru/forum/189649#comment_4854618 static const RESOURCEDATA<MqlTick>Resource(_GlobalVariableGet<string>("ResourceName")); // 根据全局变量传递的全名创建资源 MqlTick Ticks[]; int OnCalculate(const int rates_total,const int prev_calculated,const int,const double &[]) { if(prev_calculated==0) { Resource.Get(Ticks); // 从资源中读取数据。 ArrayPrint(Ticks); // 打印获得的数据 if(ArraySize(Ticks)<1) { Test.CollectTicks(); Print(" SAVE TICKS "); } Resource.Get(Ticks); // 从资源中读取数据。 ArrayPrint(Ticks); // 打印获得的数据 } return(rates_total); } //+------------------------------------------------------------------+ 鉴于 "别人会解释",所以我已经知道了答案,将 "询问作者"。谢谢! fxsaber 2018.11.26 13:06 #35 Nauris Zukas: 下午好!不能从 .mqh 转到指标吗?或者有什么技巧可以在每次编译指标时都不重置?我做了这样一个变体,但在编译指标时会重置:鉴于 "别人会解释",所以我已经知道了答案,将 "询问作者"。谢谢!很遗憾,我无法理解这个问题。 Nauris Zukas 2018.11.26 17:08 #36 fxsaber:很遗憾,我无法理解这个问题。对象是静态的,但数据被销毁了。我的示例中有什么问题? fxsaber 2018.11.26 17:23 #37 Nauris Zukas:对象是静态的,但数据被销毁了。我的例子有什么问题?不幸的是,你对 OOP 的理解存在很大的差距,所以你没有得到你想要的东西。请在论坛上就一般的 OOP 问题寻求帮助。 Nauris Zukas 2018.11.26 17:57 #38 fxsaber:不幸的是,你对 OOP 的理解还存在很大的差距,因此不能如愿以偿。请在论坛上咨询有关 OOP 的一般问题。好的,谢谢。 fxsaber 2018.12.09 01:23 #39 程序库源码包含Convert.mqh,它可以快速将 一种类型的数组转换成另一种类型的数组。 fxsaber 2018.12.17 23:48 #40 您可以通过资源交换任何东西。 // 交换任何数据(包括字符串数组)的示例。 #include <fxsaber\TradeTransactions\ResourceData.mqh> //https://www.mql5.com/zh/code/22166 #define PRINT(A) Print(#A + " = " + (string)(A)); void OnStart() { // 示例中的任意数据 string Str[] = {"123", "Hello World!"}; double Num = 5; MqlTick Tick = {0}; Tick.bid = 1.23456; const RESOURCEDATA<uint> Resource; // 数据共享资源 CONTAINER<uint> Container; // 创建一个容器--所有内容都将存储在一个简单类型的数组中(示例中选择的是 uint)。 // 用不同的数据填充容器 Container[0] = Str; Container[1] = Num; Container[2] = Tick; // 打印容器中存储的数据类型 for (int i = 0; i < Container.GetAmount(); i++) PRINT(Container[i].GetType()) Resource = Container.Data; // 发送用于交换的数据 CONTAINER<uint> Container2; // 我们将从这里获取数据 Resource.Get(Container2.Data); // 获取数据 // 获取原始数据 string Str2[]; Container[0].Get(Str2); // 得到数组 ArrayPrint(Str2); PRINT(Container[1].Get<double>()) // 我们得到了一个数字 PRINT(Container[2].Get<MqlTick>().bid) // 我们得到了结构 } 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
根据第一次测试,我认为应该为 double 和 datetime 分别创建资源和全局变量名称。这样做对吗?
根据第一次测试,我认为应该为 double 和 datetime 分别创建资源和全局变量名称。这样做对吗?
很遗憾,您的编程语言水平很难达到您的要求。也许其他人会向你解释。
不幸的是,要达到您的编程语言水平非常困难。也许别人会向你解释。
好吧,最重要的是,到目前为止,一切对我来说都是可行的。
更新 ResourceData.mqh 并尝试这些指标
下午好!不能从 .mqh 转到指标吗?或者有什么技巧可以在编译指标时不会每次都重置?我做了这样一个变体,但在编译指标时会重置:
鉴于 "别人会解释",所以我已经知道了答案,将 "询问作者"。谢谢!
下午好!不能从 .mqh 转到指标吗?或者有什么技巧可以在每次编译指标时都不重置?我做了这样一个变体,但在编译指标时会重置:
鉴于 "别人会解释",所以我已经知道了答案,将 "询问作者"。谢谢!
很遗憾,我无法理解这个问题。
很遗憾,我无法理解这个问题。
对象是静态的,但数据被销毁了。我的示例中有什么问题?
对象是静态的,但数据被销毁了。我的例子有什么问题?
不幸的是,你对 OOP 的理解存在很大的差距,所以你没有得到你想要的东西。请在论坛上就一般的 OOP 问题寻求帮助。
不幸的是,你对 OOP 的理解还存在很大的差距,因此不能如愿以偿。请在论坛上咨询有关 OOP 的一般问题。
好的,谢谢。
程序库源码包含Convert.mqh,它可以快速将 一种类型的数组转换成另一种类型的数组。
您可以通过资源交换任何东西。