首页学院交易策略EA智能交易文章详细

MQL4预定义变量(二)

外汇网2021-06-17 09:40:34 133
汇外网 - 全球专业的黄金外汇门户导航行情资讯网站

  • 获取每个柱体(K线)的收盘价 Close[ ]
  • 获取每个柱体(K线)的开盘价 Open[ ]
  • 获取每个柱体(K线)的最高价 High[ ]
  • 获取每个柱体(K线)的最低价 Low[ ]
  • 获取每个柱体(K线)的开盘时间 Time[ ]
  • 获取每个柱体(K线)的成交量 Volume[ ]

对于每个可实施的MQL4程序,在程序起步时(智能交易、脚本或是自定义指标),诸多的预定义变量可以轻松应对图表中的各种价格状态等价格有关信息。

库可以运用模块中的预定义变量。

为了能安全、迅速地访问该数据,客户端程序会为每个单独起步的程序供应预定义变量的本地副本。该数据会在每次运行智能交易或自定义指标后自动更新,或调用RefreshRates()函数更新。

获取每个柱体(K线)的收盘价 Close[ ]

double Close[ ]

收盘价序列数组,包含了目前图表中每个柱子的收盘价。

收盘价按逆序方式保存在数组元素中,即最新的K线收盘价下标为0,上一个K线下标为1,上上一个K线下标为2,图表中最后一个K线的下标为Bars-1。

参见 iClose().

示例:

  int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";");

if(handle>0) { // 写入表格栏标题 FileWrite(handle, "Time;Open;High;Low;Close;Volume");

// 记录报告 for(int i=0; i

FileClose(handle);

}

获取每个柱体(K线)的开盘价 Open[ ]

double Open[ ]

开盘价序列数组,包含了目前图表中每个柱体(K线)的开盘价。

开盘价按逆序方式保存在数组元素中,即最新的K线开盘价下标为0,上一个K线下标为1,上上一个K线下标为2,图表中最后一个K线的下标为Bars-1。

参见 iOpen().

示例:

   i = Bars - counted_bars - 1;   while(i>=0)     {      double high  = High[i];      double low   = Low[i];      double open  = Open[i];      double close = Close[i];      AccumulationBuffer[i] = (close-low) - (high-close);

if(AccumulationBuffer[i] != 0) { double diff = high - low; if(0==diff) AccumulationBuffer[i] = 0; else { AccumulationBuffer[i] /= diff; AccumulationBuffer[i] *= Volume[i]; } } if(i
获取每个柱体(K线)的最高价 High[ ]

double High[ ]

最高价序列数组,包含了目前图表中每个柱体(K线)的最高价。

最高价按逆序方式保存在数组元素中,即最新的K线最高价下标为0,上一个K线下标为1,上上一个K线下标为2,图表中最后一个K线的下标为Bars-1。

参见 iHigh().

示例:

//---- 最大值   i=Bars-KPeriod;   if(counted_bars>KPeriod) i=Bars-counted_bars-1;   while(i>=0)     {      double max=-1000000;      k = i + KPeriod-1;      while(k>=i)        {         price=High[k];         if(max
获取每个柱体(K线)的最低价 Low[ ]

double Low[ ]

最低价序列数组,包含了目前图表中每个柱体(K线)的最低价。

最低价按逆序方式保存在数组元素中,即最新的K线最低价下标为0,上一个K线下标为1,上上一个K线下标为2,图表中最后一个K线的下标为Bars-1。

参见 iLow().

示例:

//---- 最小值   i=Bars-KPeriod;   if(counted_bars>KPeriod) i=Bars-counted_bars-1;   while(i>=0)     {      double min=1000000;      k = i + KPeriod-1;      while(k>=i)        {         price=Low[k];         if(min>price) min=price;         k--;        }      LowesBuffer[i]=min;      i--;     }//----
获取每个柱体(K线)的开盘时间 Time[ ]

datetime Time[ ]

开盘时间序列数组,包含了目前图表中每个柱体(K线)的开盘时间。日期时间型报告按秒计算,是从1970年1月1号00:00开始的总秒数。

开盘时间按逆序方式保存在数组元素中,即最新的K线开盘时间下标为0,上一个K线下标为1,上上一个K线下标为2,图表中最后一个K线的下标为Bars-1。

参见 iTime().

示例:

   for(i=Bars-2; i>=0; i--)     {      if(High[i+1] > LastHigh) LastHigh = High[i+1];      if(Low[i+1] < LastLow)   LastLow  = Low[i+1];      //----      if(TimeDay(Time[i]) != TimeDay(Time[i+1]))        {         P = (LastHigh + LastLow + Close[i+1])/3;         R1 = P*2 - LastLow;         S1 = P*2 - LastHigh;         R2 = P + LastHigh - LastLow;         S2 = P - (LastHigh - LastLow);

R3 = P*2 + LastHigh - LastLow*2; S3 = P*2 - (LastHigh*2 - LastLow);

LastLow = Open[i]; LastHigh = Open[i]; } //---- PBuffer[i] = P; S1Buffer[i] = S1; R1Buffer[i] = R1; S2Buffer[i] = S2; R2Buffer[i] = R2; S3Buffer[i] = S3; R3Buffer[i] = R3; }

获取每个柱体(K线)的成交量 Volume[ ]

double Volume[ ]

成交量序列数组,包含了目前图表中每个柱体(K线)的tick成交量。

成交量按逆序方式保存在数组元素中,即最新的K线成交量下标为0,上一个K线下标为1,上上一个K线下标为2,图表中最后一个K线的下标为Bars-1。

:该成交量并不是真正意义上的成交量,这是一个预期值,其值为该K线下tick价格变动的数量,其后面的意义为假使tick价格变动迅速,表明成交量越大;tick价格变动越慢,表明成交量越小。

参见 iVolume().

示例:

      if(i==0 && time0d_high) d_high = High[0];         d_close = Close[0];        }      last_fpos = FileTell(ExtHandle);

last_volume = Volume[i]; FileWriteInteger(ExtHandle, i_time, LONG_VALUE);

FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);

FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);

FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);

FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);

FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);

标签:

随机快审展示
加入快审,优先展示

加入VIP