类似于iBarShift - 页 2

 
下面是iBarShift() 的两个变体:帖子#5帖子#7
 
Denis:

Bars函数 返回小节的数量 。当我们需要得到一个指数为9的柱状体的指数时(抱歉,同义词),它将返回10,因为第一个柱状体的指数是0。
对,谢谢。总而言之,这是一个很好的补充-通知。的确,我不太在意,我只知道是条数的问题。而如果程序需要一个索引,我才会减去一个。
 
Vasiliy Pushkaryov:
下面是iBarShift() 的两个变体:帖子#5帖子#7
简单的变体。
Bars(NULL, 0, t, 32000000000)-1;

iBarShift模拟当前符号和时间框架的最短和最快的解决方案,不需要额外的功能。然而,对于非当前的,你只需要填入前两个参数,而不是空参数。
 
Nikolai Semko:
只是一个变体。

是对应于当前符号和当前时间框架的iBarShift的最短和最快的解决方案,不需要额外的功能。

只是它不会在所有情况下都正确工作。fxsaber的GetBarShift()功能更全面。

试着把TimeCurrent() 而不是t 放在你的函数中,你会看到结果的。

 
Vasiliy Pushkaryov:

只是它不会在所有情况下都正确工作。fxsaber的GetBarShift()更通用。

试着把TimeCurrent()而不是t 放在你的函数中,你会看到结果的。

其结果将是一样的。
 
Nikolai Semko:
其结果将是一样的。
你甚至没有检查
 
Vasiliy Pushkaryov:
你甚至没有检查。
我以前检查过很多次,所以我就是知道。但你甚至没有亲自尝试。
 
Nikolai Semko:
我以前测试过很多次,所以我就是知道。但你甚至没有亲自尝试。

以下是剧本。

void OnStart()
{
  int idShort = Bars(NULL, 0, TimeCurrent(), 32000000000)-1;
  int idUni = GetBarShift(_Symbol, 0, TimeCurrent());
  Print("idShort = ", idShort, " idUni=", idUni);
}


//+------------------------------------------------------------------------------------------------------------------+
//| 
//+------------------------------------------------------------------------------------------------------------------+
int GetBarShift(const string symbol_name, const ENUM_TIMEFRAMES timeframe, const datetime time) 
{
  int res=-1;
  datetime last_bar;
  
   // --- время открытия последнего бара по символу, периоду
  if(SeriesInfoInteger(symbol_name, timeframe, SERIES_LASTBAR_DATE, last_bar)) 
  {
    if(time > last_bar) res = 0;
    else 
    {
      const int shift = Bars(symbol_name, timeframe, time, last_bar);
      if(shift > 0) res = shift-1;
    }
  }
  return res;
}

它只是挂起。强行将其从图表中删除,就能得到结果。


所以我试了一下,这就是为什么我也建议你。但既然你用了它,而且它适合你,我不会改变你的想法。

 

这也很好

int iBarShift(string symbol, ENUM_TIMEFRAMES timeframe, datetime tm)
   {
        datetime tm0[1];      
        CopyTime(symbol,timeframe,0,1,tm0);
        int res=Bars(symbol,timeframe,tm0[0],tm)-1;
        return(res);
   }
 
iBarShift
iBarShift
  • 投票: 42
  • 2013.10.25
  • Alain Verleyen
  • www.mql5.com
Многие ищут функцию iBarShift, которая была в языке MQL4. В языке MQL5 ее нет, но есть все возможности для ее реализации в виде библиотеки.