首页 > EA > EA编程

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

小明学外汇EA编程 2019-09-08 20:58:47 交流微信号:FX263cn EA编程教程

对于每个执行的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);

全球外汇中文网Fx263.com  ,阅读更多请登录www.Fx263.com

【版权声明】

本文仅代表作者观点,不代表本站立场。Fx263.com对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证,且不构成任何投资建议,请读者仅作参考,并自行承担全部风险与责任。Fx263.com作为信息内容发布平台,页面展示内容的目的在于传播更多信息,不代表Fx263.com立场;本站会员及自媒体人所发的稿件所载明的信息与本网无关,如文章涉及版权,请联系本站处理。

【风险提示】

请通过正规渠道参与外汇保证金交易。目前通过网络平台提供、参与外汇保证金交易均属非法。请提高意识,谨防损失!外汇、贵金属和差价合约(OTC场外交易)是杠杆产品,存在较高的风险,可能会导致亏损您的投资本金,请理性投资。

 

Fx263.com - 全球财经中文网

官方交流微信号:FX263cn注明来意

重要声明 | 本站内容不适用于中国大陆地区访客。

Powered By Fx263.com - 版权所有

大中华地区全球财经中文网

本站内容仅供参考盈亏自负

FX263网 - 全球财经中文网