读取设置为图表的指标缓冲区 - 页 2 12345678910 新评论 Alexey Viktorov 2016.03.11 17:46 #11 Yuriy Asaulenko: 这很奇怪。我在帮助中读到,如果一个指标已经在运行,就不会创建副本。我不明白这一点。我一定是误解了什么。我检查了这个假设,做了一个有两个缓冲区的指标,一个从OnCalculate()填充,另一个从OnTimer()、脚本、Expert Advisor...我使用iCustom()来打印OnCalculate()中填充的缓冲区的值,而空值是由OnTimer()推导出来的。同时,该指标也在我放置脚本或EA的图表中。结论:通过iCustom()调用指标时,指标中的OnTimer()事件没有被执行。也许这就是为什么它被写在文件中的原因当一个事件发生时,函数OnTimer()被调用Timer,它是由系统定时器产生的,只用于Expert Advisors和指标- 你不能在脚本中使用它。 而且它没有以任何方式提到指标。显然,在mql中存在一些有用的未记录的功能,以及未记录的并发症... События клиентского терминала - Программы MQL4 - Справочник MQL4 docs.mql4.com События клиентского терминала - Программы MQL4 - Справочник MQL4 [删除] 2016.03.11 17:47 #12 comp:一个指标被放置在图表上。它由Timer、ChartEvent和Calculate事件 重新绘制。我需要一个脚本来读取其指标缓冲区(INDICATOR_DATA)的当前值,可以通过CTRL+D看到。在MT4中可以这样做吗? 它可以被读取和写入,不需要DLL。 Alexey Viktorov 2016.03.11 17:49 #13 pako: 读取和写入,不需要DLL 那么,哪里有一个例子呢? [删除] 2016.03.11 19:45 #14 Alexey Viktorov: 那么,这个例子在哪里呢? 指标在哪里? Dmitry Fedoseev 2016.03.11 21:01 #15 comp:不幸的是,在这种情况下 是无济于事的。 为什么没有帮助? [删除] 2016.03.11 21:35 #16 pako: 指标在哪里?德米特里-费多塞耶夫。 为什么没有帮助?课题。#property strict #property indicator_separate_window #property indicator_buffers 1 #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #define PAUSE 100 input double EMA = 0.1; // Коэффициент экспоненциального сглаживания input int Amount = 100; // Сколько раз применить до "сброса" double Buffer[]; int OnCalculate( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[] ) { return(rates_total); } void OnInit( void ) { SetIndexBuffer(0, Buffer); EventSetMillisecondTimer(PAUSE); return; } void OnDeinit( const int reason ) { EventKillTimer(); return; } void SetBuffer( const bool Random ) { const int Size = ArraySize(Buffer); if (Random) { MathSrand((int)TimeLocal()); for (int i = 0; i < Size; i++) Buffer[i] = MathRand(); } else for (int i = 1; i < Size; i++) Buffer[i] += (Buffer[i - 1] - Buffer[i]) * EMA; return; } void OnTimer( void ) { static int Count = 0; SetBuffer(Count % Amount == 0); ChartRedraw(); Count++; return; } Alexey Volchanskiy 2016.03.11 22:47 #17 Yuriy Asaulenko: 很奇怪。我在帮助中读到,如果指标已经在运行,就不会创建一个副本。也许我错过了什么。最近我发布了一个指标,它只是显示一个文本字符串。而当通过iCustom调用它时,图表上的指标线和iCustom相互干扰,我不得不以编程方式只做一个输出。也许,代码的副本并没有在内存中创建,但重新计算时,它的参数也会出现。https://www.mql5.com/ru/code/14737/83151#!tab=code Dmitry Fedoseev 2016.03.11 23:06 #18 comp:课题。 那又怎样? Алексей Тарабанов 2016.03.12 00:30 #19 Alexey Volchanskiy:最近我发布了一个指标,它只是显示一个文本字符串。而当通过iCustom调用它时,图表上的指标线和iCustom相互干扰,我不得不以编程方式只做一个输出。也许,代码的副本并没有在内存中创建,但重新计算时,它的参数会被复制。https://www.mql5.com/ru/code/14737/83151#!tab=code 不能创建代码的副本,因为它是一个动态负载。 Alexey Volchanskiy 2016.03.12 09:34 #20 Алексей Тарабанов: 代码拷贝不可能不创建,因为它是一个动态负载。口头断言,还是你是一个MQ开发者?:))虽然,我自己也这么认为,通过与DLL的类比,程序代码在一个实例中,而数据实例是为客户创建的。简而言之,实际情况是,如果图表上有一个索引,iCustom不是从它那里获取数据,而是从一个单独创建的实例中获取。 12345678910 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这很奇怪。我在帮助中读到,如果一个指标已经在运行,就不会创建副本。我不明白这一点。
我一定是误解了什么。我检查了这个假设,做了一个有两个缓冲区的指标,一个从OnCalculate()填充,另一个从OnTimer()、脚本、Expert Advisor...我使用iCustom()来打印OnCalculate()中填充的缓冲区的值,而空值是由OnTimer()推导出来的。同时,该指标也在我放置脚本或EA的图表中。
结论:通过iCustom()调用指标时,指标中的OnTimer()事件没有被执行。
也许这就是为什么它被写在文件中的原因
当一个事件发生时,函数OnTimer()被调用Timer,它是由系统定时器产生的,只用于Expert Advisors和指标- 你不能在脚本中使用它。
而且它没有以任何方式提到指标。
显然,在mql中存在一些有用的未记录的功能,以及未记录的并发症...
一个指标被放置在图表上。它由Timer、ChartEvent和Calculate事件 重新绘制。
我需要一个脚本来读取其指标缓冲区(INDICATOR_DATA)的当前值,可以通过CTRL+D看到。在MT4中可以这样做吗?
读取和写入,不需要DLL
那么,这个例子在哪里呢?
不幸的是,在这种情况下
是无济于事的。
指标在哪里?
为什么没有帮助?
课题。
很奇怪。我在帮助中读到,如果指标已经在运行,就不会创建一个副本。也许我错过了什么。
最近我发布了一个指标,它只是显示一个文本字符串。而当通过iCustom调用它时,图表上的指标线和iCustom相互干扰,我不得不以编程方式只做一个输出。
也许,代码的副本并没有在内存中创建,但重新计算时,它的参数也会出现。
https://www.mql5.com/ru/code/14737/83151#!tab=code
课题。
最近我发布了一个指标,它只是显示一个文本字符串。而当通过iCustom调用它时,图表上的指标线和iCustom相互干扰,我不得不以编程方式只做一个输出。
也许,代码的副本并没有在内存中创建,但重新计算时,它的参数会被复制。
https://www.mql5.com/ru/code/14737/83151#!tab=code
代码拷贝不可能不创建,因为它是一个动态负载。
口头断言,还是你是一个MQ开发者?:))
虽然,我自己也这么认为,通过与DLL的类比,程序代码在一个实例中,而数据实例是为客户创建的。
简而言之,实际情况是,如果图表上有一个索引,iCustom不是从它那里获取数据,而是从一个单独创建的实例中获取。