EA编程教程大全之常用函数

阅读 :
外_汇_邦 WaiHuiBang.com

对于每个执行的MQL4程序,一定数量的变量设定可以轻松应对图表中的价格状态:

智能交易,脚本或者是客户指标。.
 
资料应用到可变量的模型中来。
 
可以由预定义的变量分开处理。 

这些数据会在开启后应用 RefreshRates()函数更新。  
 
Ask 
Bars 
Bid 
Close 
Digits 
High 
Low 
Open 
Point 
Time 
Volume 


Ask
double Ask

对于当前货币对的最新卖价格。使用RefreshRates()函数更新。

参见 MarketInfo(). 

示例:

  if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
    {
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,
              "My order #2",3,D'2005.10.10 12:30',Red);
    return;
    }
 
 
Bars
int Bars

返回图表中的柱数。

参见 iBars(). 

示例:

  int counter=1;
  for(int i=1; i<=Bars; i++)
    {
    Print(关闭[i-1]);
    }
 
Bid
double Bid

对于当前货币对的最新买价格。使用RefreshRates()函数更新。

参见 MarketInfo(). 

示例:

  if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
    {
    OrderSend("EURUSD",OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,
              "My Order #2",3,D'2005.10.10 12:30',Red);
    return(0);
    }
  
Close
double Close[]

系列数组包含当前图表每个柱的收盘价格。
 
系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为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, Open, High, Low, Close, Volume);
    FileClose(handle);
    }
 
 
Digits
int Digits

返回当前货币对的汇率小数位

参见 MarketInfo(). 

示例:

Print(DoubleToStr(Close[0], 小数位));
 
 
High
double High[]

系列数组包含当前图表每个柱的最高价格。
 
系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为 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=max;
      i--;
    }
//----

Low
double Low[]

系列数组包含当前图表每个柱的最低价格。
 
系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为 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=min;
      i--;
    }
//----
  
Open
double Open[]

系列数组包含当前图表每个柱的开盘价格。
 
系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为Bars-1.
 
参见 iOpen(). 

示例:

  i = Bars - counted_bars - 1;
  while(i>=0)
    {
      double high  = High;
      double low  = Low;
      double open  = Open;
      double close = Close;
      AccumulationBuffer = (close-low) - (high-close);
      if(AccumulationBuffer != 0)
        {
        double diff = high - low;
        if(0==diff)
            AccumulationBuffer = 0;
        else
          {
            AccumulationBuffer /= diff;
            AccumulationBuffer *= Volume;
          }
        }
      if(i<Bars-1) AccumulationBuffer += AccumulationBuffer[i+1];
      i--;
    }
 
double Point

返回当前图表的点值

参见 MarketInfo(). 

示例:

OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);
 
 
datetime Time
datetime Time[]

系列数组包含当前图表的每个柱开盘时间。数据像日期时间一样呈现时间,从1979年1月1日零点开始以秒计算。 
 
系列数组元素被索引入倒序的定单,即从最后一个到第一个。当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为 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) != 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;
        LastHigh = Open;
        }
      //----
      PBuffer  = P;
      S1Buffer = S1;
      R1Buffer = R1;
      S2Buffer = S2;
      R2Buffer = R2;
      S3Buffer = S3;
      R3Buffer = R3;
    }
 
Volume
double Volume[]

系列数组包含当前图表每个柱替克成交量。
 
系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为 Bars-1.
 
参见 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;
      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
本文标题:EA编程教程大全之常用函数 - MT4平台MQL4编程学习
本文地址:http://www.waihuibang.com/fxschool/autotrading/mql4/40619.html

相关文章

  • 外汇EA编程入门【第六课】:阴阳太极

    首先教你第一招:阴阳太极打开你的metaeditor打开你的my1ea002我先用...

    MQL4编程学习
  • MT4指标详解之:Stochastic Oscillator(随机振荡指标)

    Stochastic Oscillator指标又名KDJ 指标 ,是由 George Lane 首创的,最早用于期货市场。Stochastic Oscillator指标在图表上采用%K和%D两条线,在设计中综合了动量观念、强弱指标与移动平均线的优点,在计算过程中主要研究高低价位与收市价的关系,反映价格走势的强弱和超买超卖现象。...

    MQL4编程学习
  • MQL4 OrderSelect 函数使用说明

    如果通过订单号选定定单,pool参数应忽略。此定单编号是其唯一识别符。 要找出所选订单的列表,必须对订单时间进行分析。如果订单时间为0,则说明该订单为进入市场的已成交单或已发出的挂单。 我们可以从订单类型区别已成交的订单和挂单。如果订单的平仓时间不等于0,此订单就是一个已经平仓的订单,或是一个已取消的挂单。...

    MQL4编程学习
  • 一个案例看懂外汇交易中的机器学习
    一个案例看懂外汇交易中的机器学习

    随着“AlphaGo”、“无人驾驶”、“大数据处理”等名词不断出现在公众的视野中的时候,人工智能和机器学习这些词被不断的提起。甚至很多人认为:2016年是算法时代的元年,2017年人工智能将会得到更加快速的发展。笔者也...

    MQL4编程学习
  • 90%的高收益外汇EA都是骗人的,为什么还有人信?
    90%的高收益外汇EA都是骗人的,为什么还有人信?

    刚入金融界的时候,就知道外汇市场90%的信息都是骗人的,这让当时刚毕业的我一直心存戒心。进入正规的金融公司后,我学到了很多,也见识了很多行业恶行,更见过很多奇葩的投资人。 许多外汇广告说得很夸张,明明风险高到可以...

    MQL4编程学习
你可能感兴趣