我如何在MQL5中获得Open,Low,High,Close参数? - 页 10

 
//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   int q = rates_total;
   static datetime w = 0;
   
   if(w != time[q-1])
    { 
     w = time[q-1];
     Print("-------------------------------------------------------------------------------");
     Print("  time[q-1]  ",time[q-1],"  time[q-2]  ",time[q-2],"  time[q-3]  ",time[q-3],"  time[q-4]  ",time[q-4],"  time[q-5]  ",time[q-5]);
     Print("  open[q-1]  ",open[q-1],"  open[q-2]  ",open[q-2],"  open[q-3]  ",open[q-3],"  open[q-4]  ",open[q-4],"  open[q-5]  ",open[q-5]);
     Print("  high[q-1]  ",high[q-1],"  high[q-2]  ",high[q-2],"  high[q-3]  ",high[q-3],"  high[q-4]  ",high[q-4],"  high[q-5]  ",high[q-5]);
     Print("  low[q-1]  ",low[q-1],"  low[q-2]  ",low[q-2],"  low[q-3]  ",low[q-3],"  low[q-4]  ",low[q-4],"  low[q-5]  ",low[q-5]);
     Print("  close[q-1]  ",close[q-1],"  close[q-2]  ",close[q-2],"  close[q-3]  ",close[q-3],"  close[q-4]  ",close[q-4],"  close[q-5]  ",close[q-5]);
    }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

我想知道为什么指数为[rates_total - 1]的条形图总是有所有的开盘、收盘、最高、最低值相等?索引open[rates_total - 1]不是对应于时间序列中的索引1吗?也就是说,它与Open[1]、Close[1]、...相同。在MT4中。

不过,也许索引[rate_total - 1]对应于时间序列中的索引0?那么这意味着[rates_total - 1]是当前的酒吧,由于它还没有形成,它的OCHL参数是相等的?

 
Реter Konow:

我想知道为什么指数为[rates_total - 1]的条形图总是有所有的开盘、收盘、最高、最低值相等?索引open[rates_total - 1]不是对应于时间序列中的索引1吗?也就是说,它与Open[1]、Close[1]、...相同。在MT4中。

不过,也许指数[rate_total - 1]对应于时间序列中的指数0?那么这意味着[rates_total - 1]是当前的酒吧,由于它还没有形成,它的OCHL参数是相等的?

默认情况下,MQL5指标有以下索引(通过 "0 "和 "rate_total-1 "的例子)。

/*
   time[0]              -> D'2018.01.02 00:00:00'
   time[rates_total-1]  -> D'2018.12.31 22:00:00'
*/

正如你所看到的,图表中最右边的柱子有 "rate_total-1 "指数。但是索引 "0 "将对应于图表中最左边的柱子。

 
Vladimir Karputov:

默认情况下,MQL5指标有以下索引(通过 "0 "和 "rate_total-1 "的例子)。

正如你所看到的,图表中最右边的柱子有 "rate_total-1 "指数。0 "指数将对应于图表中最左边的柱子。

右边的那个是现在的?没有形成的那个?

一般来说,按照我的理解,rate_total-1指向当前的柱子,由于它还没有形成,它在计时器中的OHCL参数是相等的。

 
Реter Konow:
最右边的那个--也就是现在的那个? 没有形成的那个?

看看任何图表--GUIDE上最右边的柱子是当前的柱子,它正处于形成过程中(即它的所有价格和成交量都可以随时改变)。

 
Vladimir Karputov:

看看任何图表--GUIDE上最右边的柱子是当前的柱子,它正处于形成过程中(即它的所有价格和成交量都可以随时改变)。

是的,我明白这一点。我只是没有意识到,在得到1的索引之前,它的时间序列中的所有数值都是相等的。就是说,它不再是电流。
 
Реter Konow:
是的,我明白这一点。我只是很惊讶,它在得到时间序列中的索引1之前,所有的值都是相等的。就是说,它不再是电流。

另一个指数是什么?在MQL5指标的图表中,最右边的条形图有一个 "rate_total-1 "的索引。

 
Vladimir Karputov:

另一个指数是什么?在MQL5指标的图表中,最右边的条形图有一个 "rate_total-1 "的索引。

你不明白我在说什么。rates_total-1是当前的酒吧。我知道。BUT。时间序列中的ochl值是相等的。查看我发布的代码。这正是我所不知道的。
 
Реter Konow:
你不明白我在说什么。rates_total-1 这是当前的酒吧。我知道。BUT。时间序列中的ochl值是相等的。查看我发布的代码。这正是我所不知道的。
你的代码只取酒吧打开时的值
 
Реter Konow:
你不明白我在说什么。 rates_total-1 这是当前栏。我知道。BUT。时间序列中的ochl值是相等的。查看我发布的代码。这正是我所不知道的。

当前的条形图(图表上最右边的条形图)在条形图诞生的那一刻会有相等的价格--这就是基本原理:条形图刚刚诞生,所有的价格都是一样的。随着新点数的到来,当前条形图(图表中最右边的条形图)的价格将开始变化。


我希望它是清楚的?在酒吧诞生的那一刻和它的OHLC是相等的。

 
Andrey Barinov:
你的代码只在酒吧打开时取值

哎哟,草率,这个人自己应该意识到......。