任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1177

 

你好!

你能告诉我如何将指标设置为只在开盘时工作,而不是在每一个点 上工作,以及如何使它不在每次(每一个新的点)通过整个历史运行?

我想用这个指标来替代以前的指标。

罗斯蒂斯拉夫


 
Rost17: 你能告诉我如何将指标设置为只在开盘时工作,而不是在每一个点 上工作,以及如何使它不在每次(在每一个新点上)通过整个历史运行?
Datetime t;
首先,关于酒吧。当一个新的条形图 形成时,一个新的值被写入Time[0]--条形图打开 时的时间
OnCalculate(...)
{
if(Time[0] == t) return(0); // If this bar is processed --> exit
t = Time[0];

Now for the whole history: it will slow
 
STARIJ:
datetime t;
首先,关于酒吧。当我们形成一个新条形 时,我们向Time[0]写入一个新值--条形打开的时间
OnCalculate(...)
{
if(Time[0] == t) return(0); // 如果这个酒吧被处理 --> exit
t = 时间[0]。

现在说说整个故事:它将放慢速度

谢谢你的快速答复。我想问的是,如何让它在出现新条形图 时不放慢速度,不运行历史记录,而只是处理新条形图?

现在它的组织结构如下:for(int i=limit-1; i>=0; i--),按照我的理解,这意味着在每一次开盘时,整个历史上的所有数值都将被重新计算,而你应该只对最后一个柱子进行工作。

 
Rost17: 我问的是如何让它不放慢速度,在出现新的条形图 时不运行整个历史,而只是处理新的条形图......

这是它在最后一栏的计算方法。

//| Bears Power                                                      |
//+------------------------------------------------------------------+
int OnCalculate(.....)
  {
   int limit=rates_total-prev_calculated; // Количество баров, которые будем считать = ВсегоБаров - РанееПросчитано
   if(rates_total<=InpBearsPeriod) return(0);

   if(prev_calculated>0) limit++; // Если давно считаем, то захватим и предыдущий бар для точности
   for(int i=0; i<limit; i++)
     {
      ExtTempBuffer[i]=iMA(NULL,0,InpBearsPeriod,0,MODE_EMA,PRICE_CLOSE,i);
      ExtBearsBuffer[i]=low[i]-ExtTempBuffer[i];
     }
   return(rates_total);
  }
 
STARIJ:

我们先看一下这一行

为了让我更清楚,我把它改写成了这样。

啊哈!!!。现在我开始明白了...在循环中,变量a从1变成了6。如果该变量的值为1、5和6,则没有任何行动。那么就

或者以你的风格。

结果将是一样的,但它会运行得更快 !

现在你需要摆脱Statistic函数,连续写三次它的主体,用实际的参数替换这三个部分中的形式参数,并删除重复的变量声明。总的代码会有点长,但执行起来会更快。抛出print()是有道理的--究竟谁会在这个时候翻看消息日志呢?- 或者用Alert()代替它,在屏幕上显示。 另外,有一个变量namZz2--它的值会改变吗?


我需要使用stats()而不是stats()。愚蠢的是,我知道我可以像你说的那样重写三次,但问题是,很可能收集统计的结果要增加更多的数组,我迟早会回到原来的数组。这就是为什么我向你提供简单的方法,这些方法我已经知道了,而且它们将不幸地把我带到起点。这就是我为什么要向前看,以便将来不必再回到这里来!"。

for(int a=1;a<6;a++)
{
   if(a==2){Statistic(mZz2,namZz2);}
   if(a==3){Statistic(mZz3,namZz3);}
   if(a==4){Statistic(mZz4,namZz4);}
}

如何把这段代码放进统计员!?"要一个单一的程序,你在一开始就像我所说的问题请看!"。

 
STARIJ:

下面是最后一栏的计算方式。

非常感谢您!我有一个非常老的指标来源。你能不能修复它,使它不要每次都重新计算所有的历史记录,只在收盘时工作,并且只把箭头放在信号出现后的那一个柱子上?那么,在新的风格中,与OnCalculate...我愿意补偿你的时间成本......如果你同意,最好的方法是什么?我可以用私信或在哪里给你发送吗?
 
Игорь:

以下是工作代码的摘录!如何将其收集在一个无效统计中,而没有中间的无效统计!?我将不得不重写整个代码,以便将所有的数组集中到一起,并试图从那里抓出它来!"。

你从你的工作代码中引用的摘录要么是错误的,要么是你的Statistic()函数在从Stat()调用时除了打印之外什么都不做。

总之,返回后就会停止;。

请给我们整个代码以了解你想要什么。

 

为了记录在案。论坛上有太多的主题可以帮助MQL4的新手。

这个主题不再被支持,已经关闭


请将所有问题指向以下任何一个活跃的主题。

https://www.mql5.com/ru/forum/160683

https://www.mql5.com/ru/forum/160587

本主题中的所有进一步的帖子将被删除。


 
帮助一个已经买入的订单在2小时内改变其购买价格
 
我想有一张Minecraft人物的照片,当我盈利的时候,我手中有一把镐。
原因: