MQL4预定义变量(二)

阅读 :
欢迎访问 外 汇 邦 WWW.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);
欢迎访问 外 汇 邦 WWW.WaiHuiBang.com
本文标题:MQL4预定义变量(二) - MT4平台MQL4编程学习
本文地址:http://www.ea666.cn/fxschool/autotrading/mql4/49057.html

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

相关文章

  • 程序化交易人物志之盈透创始人Thomas Peterffy
    程序化交易人物志之盈透创始人Thomas Peterffy

    在用计算机和高速网络的今天,自动化交易已逐渐取代了传统的交易模式。然而,技术改变并不是一蹴而就的,技术的进步是一个循序渐进的过程。在这个过程中,又有哪些人参与其中,改变了交易,改变了市场,也改变了他们自己的命运呢? ...

    MQL4编程学习
  • 通用自定义函数-平调所有持仓单(含挂单)

    void CloseAllOrder()//平掉所有仓位包括挂单{ int tick[200]; PingFlag=0; int j=0; for(int i=0;i<OrdersTotal();i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Sy...

    MQL4编程学习
  • 说说外汇ea中常用的资金管理策略

    1.中性策略(Neutral strtegy,NT)现在测试EA都要求使用0.1手固定手数,不得启用复利模式,以检视EA的性能。 用于提供与其他EA比较的基准。2.马丁格尔法(Martingale,MG)在每次赔钱后,将赌注加倍,而在任何一次...

    MQL4编程学习
  • 外汇EA怎么安装到MT4上?外汇EA安装使用教程
    外汇EA怎么安装到MT4上?外汇EA安装使用教程

    可能老交易员会觉得安装MT4是非常简单的事情了,但是对于刚进入外汇市场的新手可能就比较迷茫了点,希望这篇外汇EA怎么安装到MT4上的教程,可以帮到新进入外汇EA市场的外汇人。...

    MQL4编程学习
  • 外汇之智能分析系统

    了解过外汇的朋友,都知道相对于股票而言,炒外汇(保证金)比股票有很多的优势,盈利更可观迅速,但是,高回报伴随着高风险,再加上我国的汇民起步的时间晚,不管是从技术面,基本面还是操作方法,都远远还不足,所...

    MQL4编程学习
你可能感兴趣