新的MetaTrader 4客户终端387和MetaTrader 4数据中心构建387 - 页 4 1234567891011...15 新评论 Eugeni Neumoin 2011.02.23 16:13 #31 AlexSTAL:我删除了这些信件,但我完全明白,没有这些信件,什么是优化......用最少的代码清楚地说明你所害怕的东西,但在现实中没有再现......这是一个完全无意义的对话...我的所有指标都没有要求我在每一个刻度上重新初始化缓冲区...这就是为什么我试图了解我们正在谈论的内容....。对Zhunko说:我以后会试着理解它的。 我写道,我只有一个计算,多么清楚啊。 1)当一个新的酒吧出现时。 2) 当价格离开已经计算好的柱状部分的边界时(对于高点或低点)。 3)计算出三个或四个最后的横梁。 我们在通信中讨论过这个问题。你说它是清晰的....还是我白写了? 如果在每个tick 上都要重新初始化,即用零填充缓冲区,那么就必须在每个tick上重新计算。这将导致以下情况。现在,Putnika在一个终端的几个图表上有多达100个ZUP的实例。即使在一个快速的市场中,终端的速度也不会很慢。而如果我们必须在每个刻度上重新计算,同时激活的指标数量将减少10倍。而如果对整个可用的历史进行计算,计算机将只能处理指标的一个实例。 难道这还不够吗? Rashid Umarov 2011.02.23 16:18 #32 nen: 如果在每个tick上都要重新初始化,即用零来填充缓冲区,那就必须在每个tick上重新计算。这将包括以下内容。 现在,Putnika在一个终端的几个图表上有多达100个ZUP的实例。即使在一个快速的市场中,终端的速度也不会很慢。而如果我们必须在每个刻度上重新计算,同时激活的指标数量将减少10倍。而如果对整个可用的历史进行计算,计算机将只能处理指标的一个实例。 哪里写的?你可以先检查一下,然后才会害怕。 Aleksandr Chugunov 2011.02.23 16:21 #33 nen: 多么清晰啊!我写道,我只有计算。 1)当一个新的酒吧出现时 2) 当价格离开已经计算好的柱状部分时(超过高点或低点)。 3)最后三个或四个小节的计算。 我们在通信中讨论过这个问题。你说它是清晰的....还是我白写了? 如果在每个tick上都要重新初始化,即用零填充缓冲区,那么就必须在每个tick上重新 计算。这将导致以下情况。 现在,Putnika在一个终端的几个图表上有多达100个ZUP的实例。即使在一个快速的市场中,终端的速度也不会很慢。而如果我们必须在每个刻度上重新计算,同时激活的指标数量将减少10倍。而如果对整个可用的历史进行计算,计算机将只能处理指标的一个实例。 这还不够吗? 但愿如此,但愿如此...没有这样的问题!Zhunko 有一个完全不同的问题。在你引起恐慌之前,你需要自己检查一下。我检查了上面的几个帖子,甚至张贴了代码 Aleksandr Chugunov 2011.02.23 16:22 #34 Rosh: 它在哪里说的?你可以先检查一下,然后才会害怕。 +10000 在每一个案例中,都应该有一个专业的方法....。 Eugeni Neumoin 2011.02.23 16:23 #35 start() { if(glowBar<=iLow(NULL, gtf, 0) && ghighBar>=iHigh(NULL, gtf, 0) && gtimelast==iTime(NULL, gtf, 0)) return (0); glowBar=iLow(NULL, gtf, 0); ghighBar=iHigh(NULL, gtf, 0); // обновляем сразу, а не после длительного расчета ...// здесь код основного расчета. gcurrentBars=iBars(NULL, gtf); // обновляем в конце, чтобы не накапливались непосчитанные бары за время расчета // и не срабатывал полный пересчет на следующем тике в случае длительного расчета } Полный код секции старт //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i, j; gtf=Period(); gRecalculation=1; while(gRecalculation>0) { if(gcurrentBars<iBars(NULL, gtf)-1) { Print("Время полного пересчета = ",TimeToStr(Time[0],TIME_DATE|TIME_MINUTES)); glowBar=0; ghighBar=0; gtimelast=0; gsave_wr0=0; ArrayInitialize(gsave_tLast,0);ArrayInitialize(gsave_hl,0);ArrayInitialize(gsave_lastlow,0);ArrayInitialize(gsave_lasthigh,0); ArrayInitialize(gt_hi,0);ArrayInitialize(gt_li,0);ArrayInitialize(gt_end,0); gTheExternalBar=false; history=true; // if(_PrimarySelectionOfExtremums==2 || _PrimarySelectionOfExtremums==3) delete_objects(); delete_objects(); g_addnewextremum=true; gbar=iBars(NULL, gtf); ArrayInitialize(gtime_gbar,0); ArrayInitialize(gL2LTime,0); ArrayInitialize(gL2HTime,0); ArrayInitialize(LowestBuffer1,0);ArrayInitialize(HighestBuffer1,0); ArrayInitialize(LowestBuffer2,0);ArrayInitialize(HighestBuffer2,0); ArrayInitialize(LowestBuffer3,0);ArrayInitialize(HighestBuffer3,0); ArrayInitialize(LowestBuffer4,0);ArrayInitialize(HighestBuffer4,0); ArrayInitialize(last_h,0);ArrayInitialize(last_l,0);ArrayInitialize(last_t,0); ArrayInitialize(tL1,0);ArrayInitialize(tL2,0);ArrayInitialize(tL3,0);ArrayInitialize(tL4,0);ArrayInitialize(tL5,0); ArrayInitialize(tL6,0);ArrayInitialize(tL7,0);ArrayInitialize(tL8,0);ArrayInitialize(tL9,0);ArrayInitialize(tL10,0); ArrayInitialize(tL11,0); ArrayInitialize(cL1,0);ArrayInitialize(cL2,0);ArrayInitialize(cL3,0);ArrayInitialize(cL4,0);ArrayInitialize(cL5,0); ArrayInitialize(cL6,0);ArrayInitialize(cL7,0);ArrayInitialize(cL8,0);ArrayInitialize(cL9,0);ArrayInitialize(cL10,0); ArrayInitialize(cL11,0); ArrayInitialize(cH1,0);ArrayInitialize(cH2,0);ArrayInitialize(cH3,0);ArrayInitialize(cH4,0);ArrayInitialize(cH5,0); ArrayInitialize(cH6,0);ArrayInitialize(cH7,0);ArrayInitialize(cH8,0);ArrayInitialize(cH9,0);ArrayInitialize(cH10,0); ArrayInitialize(cH11,0); if(filterZigZag==1) { ArrayResize(cLz1,gbar);ArrayResize(cHz1,gbar);ArrayResize(tLz1,gbar); ArrayInitialize(tLz1,0);ArrayInitialize(tLz2,0);ArrayInitialize(tLz3,0);ArrayInitialize(tLz4,0);ArrayInitialize(tLz5,0); ArrayInitialize(tLz6,0);ArrayInitialize(tLz7,0);ArrayInitialize(tLz8,0);ArrayInitialize(tLz9,0);ArrayInitialize(tLz10,0); ArrayInitialize(tLz11,0); ArrayInitialize(cLz1,0);ArrayInitialize(cLz2,0);ArrayInitialize(cLz3,0);ArrayInitialize(cLz4,0);ArrayInitialize(cLz5,0); ArrayInitialize(cLz6,0);ArrayInitialize(cLz7,0);ArrayInitialize(cLz8,0);ArrayInitialize(cLz9,0);ArrayInitialize(cLz10,0); ArrayInitialize(cLz11,0); ArrayInitialize(cHz1,0);ArrayInitialize(cHz2,0);ArrayInitialize(cHz3,0);ArrayInitialize(cHz4,0);ArrayInitialize(cHz5,0); ArrayInitialize(cHz6,0);ArrayInitialize(cHz7,0);ArrayInitialize(cHz8,0);ArrayInitialize(cHz9,0);ArrayInitialize(cHz10,0); ArrayInitialize(cHz11,0); } Print(""); } else { if(_PrimarySelectionOfExtremums<2) { gbar=iBarShift(NULL, gtf, gtime_gbar[0], true)+2; } } if(_PrimarySelectionOfExtremums==4 && gtimelast==iTime(NULL, gtf, 0)) return(0); if(tL1[0]>0) { if(glowBar<=iLow(NULL, gtf, 0) && ghighBar>=iHigh(NULL, gtf, 0) && gtimelast==iTime(NULL, gtf, 0)) return (0); if(gtimelast<iTime(NULL, gtf, 0) &&(_PrimarySelectionOfExtremums==2 || _PrimarySelectionOfExtremums==3)) { gTheExternalBar=false; delete_objects(); } } glowBar=iLow(NULL, gtf, 0); ghighBar=iHigh(NULL, gtf, 0); // обновляем сразу, а не после длительного расчета // Поиск экстремумов для первого уровня glevel=0; SamplingCreationExtremums(); if(history) { if(ShowPrimaryLevel==0) { VisiblePrimarySelections(cL1, cH1, tL1, cLz1, cHz1, tLz1, LowestBuffer1, HighestBuffer1); // визуализация } // Создание следующих уровней и визуализация SelectionArrayForNextLevels(); gtimelast=iTime(NULL, gtf, 0); // эта переменная используется в промежуточных расчетах, поэтому ее обновляем после расчетов history=false; //* // Обрезка массивов if(QuantityExtremums>0) { for(i=1;i<11;i++) { int k=ScrapOfArrays(i); if(k!=0) Print("размер массива уровня ",i-1," = ",k); if(k==0) break; // if(ScrapOfArrays(i)==0) break; } } //*/ } else { WriteNewExtremums(cL1, cH1, tL1, cLz1, cHz1, tLz1); // Создание следующих уровней и визуализация SelectionArrayForNextLevels(); gtimelast=iTime(NULL, gtf, 0); // эта переменная используется в промежуточных расчетах, поэтому ее обновляем после расчетов } if(gRecalculation>0) gRecalculation--; } gcurrentBars=iBars(NULL, gtf); // обновляем в конце, чтобы не накапливались непосчитанные бары за время расчета // и не срабатывал полный пересчет на следующем тике в случае длительного расчета Err(371); return(0); } //+------------------------------------------------------------------+ 一小段代码。而在我所有的指标中,有一些变化是差不多的。 请注意,我有一个相当大的区域,缓冲区被重新初始化了。所有的ArrayInitialize函数 都只是从事这种重新初始化的工作。但它只在需要时发生,而不是被迫。 Eugeni Neumoin 2011.02.23 16:37 #36 我已经在第一页写了,为开发者解释第6点的含义 终端:再次读取历史数据时,为自定义指标 增加了缓冲区初始化。 目前还没有收到他们的解释。而我们在这里创造了一杯水里的风暴。但这也不仅仅是在这里。我已经警告所有使用我的指标的人,在下载build 387之前要等待。 Eugeni Neumoin 2011.02.23 16:53 #37 讨论已经结束。 Slava 2011.02.25 09:35 #38 Zhunko: 弄清了复杂的原因,为什么不工作了。再见,优化 :-( 现在每打一次勾,我都要重新填充缓冲区。照顾到了... 没有变化--没有初始化!至少要考虑一下! 我不在缓冲区中读取历史数据。我只在子窗口中使用它们进行垂直扫描。为什么我需要一直填充它们?只有三种情况下需要覆盖它们(第一次运行、缩放、图表转换)。现在的情况是,MT4几乎不能移动,还有一个刹车。 没有变化,没有初始化。这就对了。只有在历史数据被覆盖 后才会进行初始化。这在以前就有设想,只是没有如愿。在正常情况下,当条形图后(或连接失败后的几个条形图),不存在缓冲区初始化。 Slava 2011.02.25 09:41 #39 2个终端:在计算自定义指标 时固定了报价计数器的计算。 对历史数据中变化数量的估计存在错误。由于大量的变化,数据被错误地重新 计算,但没有重新计算。这尤其影响到ZigZag指标,当数据发生巨大变化时,但ZigZag没有被重新计算。 Slava 2011.02.25 09:48 #40 VBAG: 那很好啊!开发商并没有放弃第四个项目,而是在支持它,甚至完善它。这一点从建造编号387就可以看出。 我最后看到的是--229。一下子就到了387(也许是连接了一个协处理器? 咦......)!酷! 最主要的是要尊重外科医生的主要戒律--"不要伤害!"。 MetaTrader 4平台是许多组件的集合 - 服务器,数据中心,报价和新闻的馈线,客户终端,经理和管理员终端,API,使用API编写的标准附加组件等。这些组件以不同的方式发展。 因此,目前所有的组件都被赋予了380的编号,使构建的编号相等。纯粹是一种整容手术。 1234567891011...15 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我删除了这些信件,但我完全明白,没有这些信件,什么是优化......
用最少的代码清楚地说明你所害怕的东西,但在现实中没有再现......
这是一个完全无意义的对话...我的所有指标都没有要求我在每一个刻度上重新初始化缓冲区...
这就是为什么我试图了解我们正在谈论的内容....。
对Zhunko说:我以后会试着理解它的。
我写道,我只有一个计算,多么清楚啊。
1)当一个新的酒吧出现时。
2) 当价格离开已经计算好的柱状部分的边界时(对于高点或低点)。
3)计算出三个或四个最后的横梁。
我们在通信中讨论过这个问题。你说它是清晰的....还是我白写了?
如果在每个tick 上都要重新初始化,即用零填充缓冲区,那么就必须在每个tick上重新计算。这将导致以下情况。现在,Putnika在一个终端的几个图表上有多达100个ZUP的实例。即使在一个快速的市场中,终端的速度也不会很慢。而如果我们必须在每个刻度上重新计算,同时激活的指标数量将减少10倍。而如果对整个可用的历史进行计算,计算机将只能处理指标的一个实例。
难道这还不够吗?
如果在每个tick上都要重新初始化,即用零来填充缓冲区,那就必须在每个tick上重新计算。这将包括以下内容。 现在,Putnika在一个终端的几个图表上有多达100个ZUP的实例。即使在一个快速的市场中,终端的速度也不会很慢。而如果我们必须在每个刻度上重新计算,同时激活的指标数量将减少10倍。而如果对整个可用的历史进行计算,计算机将只能处理指标的一个实例。
多么清晰啊!我写道,我只有计算。
1)当一个新的酒吧出现时
2) 当价格离开已经计算好的柱状部分时(超过高点或低点)。
3)最后三个或四个小节的计算。
我们在通信中讨论过这个问题。你说它是清晰的....还是我白写了?
如果在每个tick上都要重新初始化,即用零填充缓冲区,那么就必须在每个tick上重新 计算。这将导致以下情况。 现在,Putnika在一个终端的几个图表上有多达100个ZUP的实例。即使在一个快速的市场中,终端的速度也不会很慢。而如果我们必须在每个刻度上重新计算,同时激活的指标数量将减少10倍。而如果对整个可用的历史进行计算,计算机将只能处理指标的一个实例。
这还不够吗?
它在哪里说的?你可以先检查一下,然后才会害怕。
+10000
在每一个案例中,都应该有一个专业的方法....。
一小段代码。而在我所有的指标中,有一些变化是差不多的。
请注意,我有一个相当大的区域,缓冲区被重新初始化了。所有的ArrayInitialize函数 都只是从事这种重新初始化的工作。但它只在需要时发生,而不是被迫。
我已经在第一页写了,为开发者解释第6点的含义
终端:再次读取历史数据时,为自定义指标 增加了缓冲区初始化。
目前还没有收到他们的解释。而我们在这里创造了一杯水里的风暴。但这也不仅仅是在这里。我已经警告所有使用我的指标的人,在下载build 387之前要等待。
弄清了复杂的原因,为什么不工作了。再见,优化 :-(
现在每打一次勾,我都要重新填充缓冲区。照顾到了...
没有变化--没有初始化!至少要考虑一下!我不在缓冲区中读取历史数据。我只在子窗口中使用它们进行垂直扫描。为什么我需要一直填充它们?只有三种情况下需要覆盖它们(第一次运行、缩放、图表转换)。现在的情况是,MT4几乎不能移动,还有一个刹车。
没有变化,没有初始化。这就对了。只有在历史数据被覆盖 后才会进行初始化。这在以前就有设想,只是没有如愿。在正常情况下,当条形图后(或连接失败后的几个条形图),不存在缓冲区初始化。
2个终端:在计算自定义指标 时固定了报价计数器的计算。
对历史数据中变化数量的估计存在错误。由于大量的变化,数据被错误地重新 计算,但没有重新计算。这尤其影响到ZigZag指标,当数据发生巨大变化时,但ZigZag没有被重新计算。
那很好啊!开发商并没有放弃第四个项目,而是在支持它,甚至完善它。这一点从建造编号387就可以看出。
我最后看到的是--229。一下子就到了387(也许是连接了一个协处理器? 咦......)!酷!
最主要的是要尊重外科医生的主要戒律--"不要伤害!"。
MetaTrader 4平台是许多组件的集合 - 服务器,数据中心,报价和新闻的馈线,客户终端,经理和管理员终端,API,使用API编写的标准附加组件等。这些组件以不同的方式发展。
因此,目前所有的组件都被赋予了380的编号,使构建的编号相等。纯粹是一种整容手术。