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

 

一个脚本的例子。

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int i=0;i<3;i++)
      Print("# ",i,": ",DoubleToString(iOpen(Symbol(),PERIOD_CURRENT,i),Digits()));
//---
  }
//+------------------------------------------------------------------+

和结果。

2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 0: 1.11399
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 1: 1.11425
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 2: 1.11319


已编辑。

附加的文件:
1.mq5  2 kb
 

他们在这里。

在4件和5件上都能使用

在4PC中,应用Period()、Symbol()等。

在5-pc中,应用_Period,_Symbol(),等等。

钛白粉

返回指定符号和时期的历史条数。

杠杠移位

返回指定时间所属的条形图的偏移量。

关闭

返回相应图表中条形图的收盘价。

擃璈

返回图表中条形图的最大价格的值

iHighest

返回相应图表中发现的最高值的索引

锂离子电池

返回相应图表的最小条形价格的值

淘宝网

返回对应图表中最小的发现值的索引

iOpen

返回相应图表的条形开盘价的值

计时

返回相应图表的条形图开盘时间

记忆体

返回图表中条形图的tick volume的值

iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
有了CopyRates,它就成功了。它是有效的。
 

而这里是CopyRates 的变体

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
      return;

   for(int i=0;i<count;i++)
      Print("Open # ",i,": ",DoubleToString(rates[i].open,Digits()));
//---
  }
//+------------------------------------------------------------------+

和结果

2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 0: 1.11399
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 1: 1.11425
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 2: 1.11319
附加的文件:
1.mq5  3 kb
 
Alexey Viktorov:

阿列克谢,这是为那些在坦克里的人准备的。而对于普通的,CopyRates()在mql4中也是可用的。因此,忘记所有的iOpen和其他的废话。我甚至不明白他们为什么把它放在mql5中。

哦!小家伙们出现了))。

为什么我们在实践中需要有很多连续的OHLC值--你建议使用CopyRates()来获得这些值?- 除了打坐?))))

没有什么实际用途,这里有一个琐碎的任务,分形指标的卸载(或使用),我有这样一个代码。

#define  Time(n)   iTime(NULL,0,n)
//+------------------------------------------------------------------+
void OnStart()
  {
   int handle=iFractals(NULL,0);
   if(handle==INVALID_HANDLE)
     {
      Print("Error№,",::GetLastError()," create handle indicator");
      return;
     }
   int count=0,i=0;
   double buffup[1],buffdn[1];
   while(i<Bars(_Symbol,_Period) && count<10)
     {
      if(CopyBuffer( handle,0,i,1, buffup)<1) Print("buffup , error № ",::GetLastError());
      if(CopyBuffer( handle,1,i,1, buffdn)<1) Print("buffup , error № ",::GetLastError());
      if(buffup[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Up = ",buffup[0]);
      if(buffdn[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Dn = ",buffdn[0]);
     i++;
     }
  }
//+------------------------------------------------------------------+


给我看看你的代码,使用CopyRates()...

 
Vladimir Karputov:

而这里是CopyRates 的变体

和结果

但是,如果我们需要不断地跟踪新条形图上的数据,这意味着在每个tick 上引用CopyRates,并在每个tick上制作一个时间序列?

我正试图找出放置CopyRates的最佳位置。

 
Реter Konow:

但是,如果你需要不断跟踪新条形的数据,那么你是否需要在每个tick 上参考CopyRates并在每个tick上做一个时间序列?

我想知道把CopyRates放在哪里更好。

我已经在上面问过了:为什么?是否有必要考虑零条(图表上最右边的条)的值?

 
Vladimir Karputov:

我在上面已经问过了:为什么?是否应该考虑到零条(图表上最右边的一条)的值?

对于桌子。表中有四个参数:开盘价、收盘价、最高价、最低价、过去10个条形,不包括当前条形。

最后,在从当前的一个(零)向后移动的意义上。

 
Igor Makanu:

哦!十几岁的孩子出现了))。

为什么在实践中要有很多连续的OHLC值--你建议使用CopyRates()来获得这些值?- 除了打坐?))))

没有什么实际用途,这里有一个琐碎的任务,分形指标的卸载(或使用),我有这样一个代码。


给我看看你的代码,使用CopyRates()...

伊戈尔,你应该去上一年级。他们在那里教字母,学习后你会明白CopyRates和CopyBuffer的区别。

你最好给我一个没有CopyRates(!)的解决方案。

关于交易、自动交易系统和交易策略测试的论坛

如何在MQL5中获得Open,Low,High,Close参数?

Retrog Konow, 2019.07.29 19:58

对于桌子。表中有四个参数:开盘价、收盘价、最高价、最低价、最后10个条形,不包括当前条形

最后,我是指如果你从当前的一个(零)向后移动。


 
Реter Konow:

对于桌子。表中有四个参数:开盘价、收盘价、最高价、最低价、过去10个条形,不包括当前条 形。

最后,在从当前的一个(零)向后移动的意义上。

在这种情况下,第一条的CopyRates毫不含糊地是10。并不是每一个刻度都 要调用它,但当一个新条形图出现时就足够了。