当转移到另一个时间框架时,我如何改变指标中的全局变量结构? - 页 5 1234567 新评论 Nikolai Semko 2021.07.11 08:50 #41 fxsaber:如果你写一份绩效评估,比较一下会很有意思。 好的。请讲。只要自己实施你的部分。 这是我的部分。 我建议从球的以下测试指标(标记为黄色的是负责保存和恢复TF之间的数组结构): 当第一次调用时,窗口内的随机节点数组(默认为100个)被生成并通过贝塞尔曲线连接。 当TF被改变时,与时间和价格相关的节点被保存,不被改变。 为了更好的计量,最好使节点的数量为1000。 #property indicator_chart_window #include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164 #include <CVar\StructArr.mqh> #define SIZE 100 struct Node { datetime time; double price; }; Node line[]; ulong t0 = GetMicrosecondCount(); CStructArr<Node> Var("Bezier",line); ulong t1=GetMicrosecondCount()-t0; int OnInit() { if (ArraySize(line) == 0) GenerateLine(); else { Print("Востановление данных - " + string(t1)+ " микросекунд"); Print("Время uint[] -> T[] - " + string(Var.uint_to_t)+ " микросекунд"); } DrawBezier(line); return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { return(rates_total); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void GenerateLine() { ArrayResize(line,SIZE); for (int i = 0; i<SIZE; i++) { line[i].time = Canvas.TimePos(double(rand() % W.Width)); line[i].price = Canvas.Price(rand() % W.Height); } t0 = GetMicrosecondCount(); Var.Set(line); t0 = GetMicrosecondCount()-t0; Print("Сохранение данных - " + string(t0)+ " микросекунд"); Print("Время T[] -> uint[] - " + string(Var.t_to_uint)+ " микросекунд"); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DrawBezier(Node &arr[]) { int size = ArraySize(arr); if (size>1) { Canvas.Erase(0x00FFFFFF); int X[],Y[]; ArrayResize(Y,size); ArrayResize(X,size); for(int i=0; i<size; i++) { X[i] = (int)Canvas.X(line[i].time); Y[i] = (int)Canvas.Y(line[i].price); } Canvas.PolylineSmooth(X,Y,0xFFFF00FF,3); Canvas.Update(); } } //+------------------------------------------------------------------+ 2021.07.11 04:41:02.705 TestVar (EURUSD,M6) Сохранение данных - 15 микросекунд 2021.07.11 04:41:02.705 TestVar (EURUSD,M6) Время T[] -> uint[] - 4 микросекунд 2021.07.11 04:42:03.085 TestVar (EURUSD,M10) Востановление данных - 317 микросекунд 2021.07.11 04:42:03.085 TestVar (EURUSD,M10) Время uint[] -> T[] - 4 микросекунд 2021.07.11 04:42:10.012 TestVar (EURUSD,M12) Востановление данных - 878 микросекунд 2021.07.11 04:42:10.012 TestVar (EURUSD,M12) Время uint[] -> T[] - 4 микросекунд 2021.07.11 04:42:44.235 TestVar (EURUSD,M30) Востановление данных - 1061 микросекунд 2021.07.11 04:42:44.235 TestVar (EURUSD,M30) Время uint[] -> T[] - 8 микросекунд 2021.07.11 04:43:20.556 TestVar (EURUSD,M20) Востановление данных - 303 микросекунд 2021.07.11 04:43:20.556 TestVar (EURUSD,M20) Время uint[] -> T[] - 4 микросекунд 2021.07.11 04:43:25.339 TestVar (EURUSD,M15) Востановление данных - 443 микросекунд 2021.07.11 04:43:25.339 TestVar (EURUSD,M15) Время uint[] -> T[] - 5 микросекунд 与SIZE = 1000。 2021.07.11 05:01:32.602 TestVar (EURUSD,M5) Сохранение данных - 41 микросекунд 2021.07.11 05:01:32.602 TestVar (EURUSD,M5) Время T[] -> uint[] - 26 микросекунд 2021.07.11 05:01:36.541 TestVar (EURUSD,M6) Востановление данных - 586 микросекунд 2021.07.11 05:01:36.541 TestVar (EURUSD,M6) Время uint[] -> T[] - 64 микросекунд 2021.07.11 05:01:38.317 TestVar (EURUSD,M10) Востановление данных - 648 микросекунд 2021.07.11 05:01:38.317 TestVar (EURUSD,M10) Время uint[] -> T[] - 35 микросекунд 2021.07.11 05:01:40.534 TestVar (EURUSD,M12) Востановление данных - 567 микросекунд 2021.07.11 05:01:40.534 TestVar (EURUSD,M12) Время uint[] -> T[] - 36 микросекунд 2021.07.11 05:01:42.814 TestVar (EURUSD,M15) Востановление данных - 449 микросекунд 2021.07.11 05:01:42.814 TestVar (EURUSD,M15) Время uint[] -> T[] - 44 микросекунд 2021.07.11 05:01:45.015 TestVar (EURUSD,M20) Востановление данных - 728 микросекунд 2021.07.11 05:01:45.015 TestVar (EURUSD,M20) Время uint[] -> T[] - 59 микросекунд 2021.07.11 05:01:47.536 TestVar (EURUSD,M30) Востановление данных - 2349 микросекунд 2021.07.11 05:01:47.536 TestVar (EURUSD,M30) Время uint[] -> T[] - 45 микросекунд 附加的文件: TestVar.mq5 6 kb StructArr.mqh 3 kb Mikhail Nazarenko 2021.07.11 09:11 #42 对于MQL来说,如果有某种全局 指标变量的指针就好了。它们将被初始化一次,而且只在安装指标时被初始化。 例如: intglobal Var;。在这种情况下,我们将不需要所有这些资源。让我们停止做梦,继续前进。 fxsaber 2021.07.11 09:26 #43 Nikolai Semko:这是我的作品。 array out of range in 'iCanvas.mqh' (114,55) Maxim Kuznetsov 2021.07.11 09:33 #44 Mikhail Nazarenko:对于MQL来说,如果有某种全局 指标变量的指针就好了。它们将被初始化一次,而且只在安装指标时被初始化。例如: intglobal Var;。在这种情况下,我们将不需要所有这些资源。让我们停止做梦,继续前进。 除了PersistentStorage,ServerSideStorage也不错(在服务器端存储小东西)和AuthorOwnedCloud(让一些数据由作者管理)......但这是21世纪的东西 :-) 。 做梦吧,这就够了...... fxsaber 2021.07.11 09:35 #45 Nikolai Semko:当TF发生变化时,与时间和价格相关的节点被保留,不会发生变化。 这是对阵列铸造的统计学意义上的衡量吗? PapaYozh 2021.07.11 09:38 #46 Taras Slobodyanik::)奇怪的是,没有人写 "拐杖"、"重塑车轮"、"数据传输到另一个终端的困难"、"问题必须通过MQL手段解决"。 事实证明,metaquot解决方案是拐杖和mauvais ton)MQ的这个解决方案在哪里? Nikolai Semko 2021.07.11 09:42 #47 fxsaber: array out of range in 'iCanvas.mqh' (114,55) 你似乎有一个过时的版本。 最新版本1.43https://www.mql5.com/ru/code/22164 附加的文件: iCanvas.mqh 52 kb Nikolai Semko 2021.07.11 09:47 #48 fxsaber:这是对阵列铸造的统计学意义上的衡量吗? 没有人阻止你做出自己的调整。 HH 也请不要开始谈论弦子。 在这种类型的任务中,它们是不相关的,这就是为什么它们没有在我的类中实现,我的结构不能包含字符串类型。 我知道它们在你的班级中得到了实施。但我们谈论的是别的东西。 Taras Slobodyanik 2021.07.11 10:16 #49 PapaYozh: MQ的这个解决方案在哪里? 是的,当然,这些解决方案根本就不存在。 所以用户发明了 "拐杖自行车" -FileWriteStruct 和GlobalVariableSet。 而最没有拐杖的解决方案,当然是将变量写入资源,加上将结构写入全局变量) fxsaber 2021.07.11 10:17 #50 Nikolai Semko:你似乎有一个过时的版本。 最新版本1.43https://www.mql5.com/ru/code/22164 这个版本就是给你带来错误的那个版本。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果你写一份绩效评估,比较一下会很有意思。
好的。请讲。只要自己实施你的部分。
这是我的部分。
我建议从球的以下测试指标(标记为黄色的是负责保存和恢复TF之间的数组结构):
当第一次调用时,窗口内的随机节点数组(默认为100个)被生成并通过贝塞尔曲线连接。
当TF被改变时,与时间和价格相关的节点被保存,不被改变。
为了更好的计量,最好使节点的数量为1000。
与SIZE = 1000。
对于MQL来说,如果有某种全局 指标变量的指针就好了。它们将被初始化一次,而且只在安装指标时被初始化。
例如:
intglobal Var;
。在这种情况下,我们将不需要所有这些资源。让我们停止做梦,继续前进。
这是我的作品。
对于MQL来说,如果有某种全局 指标变量的指针就好了。它们将被初始化一次,而且只在安装指标时被初始化。
例如:
intglobal Var;
。在这种情况下,我们将不需要所有这些资源。让我们停止做梦,继续前进。
除了PersistentStorage,ServerSideStorage也不错(在服务器端存储小东西)和AuthorOwnedCloud(让一些数据由作者管理)......但这是21世纪的东西 :-) 。
做梦吧,这就够了......
当TF发生变化时,与时间和价格相关的节点被保留,不会发生变化。
这是对阵列铸造的统计学意义上的衡量吗?
:)
奇怪的是,没有人写 "拐杖"、"重塑车轮"、"数据传输到另一个终端的困难"、"问题必须通过MQL手段解决"。
事实证明,metaquot解决方案是拐杖和mauvais ton)
fxsaber:
你似乎有一个过时的版本。
最新版本1.43
https://www.mql5.com/ru/code/22164
这是对阵列铸造的统计学意义上的衡量吗?
没有人阻止你做出自己的调整。
HH
也请不要开始谈论弦子。
在这种类型的任务中,它们是不相关的,这就是为什么它们没有在我的类中实现,我的结构不能包含字符串类型。
我知道它们在你的班级中得到了实施。但我们谈论的是别的东西。
是的,当然,这些解决方案根本就不存在。
所以用户发明了 "拐杖自行车" -FileWriteStruct 和GlobalVariableSet。
而最没有拐杖的解决方案,当然是将变量写入资源,加上将结构写入全局变量)
你似乎有一个过时的版本。
最新版本1.43
https://www.mql5.com/ru/code/22164
这个版本就是给你带来错误的那个版本。