手机版

MQL4预定义变量(二)

阅读 :
外_汇_邦 WaiHuiBang.com

  • 获取每个柱体(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<Bars; i++)       FileWrite(handle, Time[i], Open[i], High[i], Low[i], Close[i], Volume[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<Bars-1) AccumulationBuffer[i] += AccumulationBuffer[i+1];      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<price) max=price;         k--;        }      HighesBuffer[i]=max;      i--;     }//----

获取每个柱体(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 && time0<i_time+periodseconds)        {         d_volume += Volume[0];         if(Low[0]<d_low)   d_low = Low[0];         if(High[0]>d_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);
外_汇_邦 WaiHuiBang.com
本文标题:MQL4预定义变量(二) - MT4平台MQL4编程学习
本文地址:https://www.waihuibang.com/fxschool/autotrading/mql4/49057.html

上一篇:MQL4程序运行 下一篇:MQL4预定义变量(一)

相关文章

  • 外汇EA编程教程——预处理程序

      预处理程序是MQL编译器的一个子系统,通过预处理程序可以使软件的可读性更好,预处理程序运行在程序编译之前。预处理指令以(#)开头。 1 定义常量使用#define来定义常量。如: 1. #define ABC 100 2. #define P...

    MQL4编程学习
  • MQL4交易处理函数(二)

    从自定义指标中不能调用OrderSend()、OrderClose()、OrderCloseBy()、OrderDelete()和OrderModify()交易函数。本组交易函数应用于智能交易和脚本中。只有智能交易设置中的“允许实时交易”属性被选中,才能...

    MQL4编程学习
  • 为什么外汇EA运行必须使用VPS
    为什么外汇EA运行必须使用VPS

    ★什么是外汇EA?外汇EA即外汇全自动交易系统,外汇EA是在MT4平台上进行开发,采用的语言是MQ4语言,一套EA是一个完整的交易程序,程序通过实时获取市场价格,自动判断下单与平仓时机,由电脑模拟交易员的下单操作进行机器交易,根据...

    MQL4编程学习
  • MT4智能交易系统(EA)入门讲座
    MT4智能交易系统(EA)入门讲座

    外汇交易EA 操盘过程(总结) • 打开MT4平台,由客户端程序调入用户在系统内已预置好的EA交易系统程序。 • 当EA程序启动后便开始对图表中货币对的K线趋势图,进行监视,寻找开仓的条件; • 如果条件满足,进行下单开仓(做多或者做空); • 重复第二步,继续盯盘,假定第二步是开仓,就是寻找平仓的条件。 • 如果平仓的条件满足,进行平仓操作,计算盈亏核算。完成一次交易。 • 若继续交易,EA重复2->3->4->5步。 • 用户若不想让EA进行交易,可通过相关菜单操作设置禁用EA。...

    MQL4编程学习
  • 高盛600名交易员如今只剩2人,如何看待EA交易?

    高盛纽约总部交易大厅曾同时容纳600多位交易员,而现在已是人去楼空。2000年顶峰时期,高盛在纽约总部的美国现金股票交易柜台就雇佣了600名交易员,替投行金主的大额订单进行股票买卖操作。但时至如今,这里...

    MQL4编程学习
你可能感兴趣