MT4/MQL4入门到精通EA教程第三课-MQL语言常用函数(三)-K线取值常用功能函数

19 篇文章 9 订阅
19 篇文章 14 订阅

double iOpen();

double  iOpen( 
   string           symbol,     // 交易品种 
   int              timeframe,  // 周期 
   int              shift       // K线柱 
   );

iOpen()函数拥有三个参数,symbol、timeframe、shift

函数功能是返回特定交易品种指定周期的某一根K线柱的开盘价

double iClose();

double  iClose( 
   string           symbol,          // 交易品种 
   int              timeframe,       // 周期 
   int              shift            //  K线柱 
   );

iClose()函数拥有三个参数,symbol、timeframe、shift

函数功能是返回特定交易品种指定周期的某一根K线柱的收盘价

double iLow();

double  iLow( 
   string           symbol,          // symbol 
   int              timeframe,       // timeframe 
   int              shift            // shift 
   );

iLow()函数拥有三个参数,symbol、timeframe、shift

函数功能是返回特定交易品种指定周期的某一根K线柱的最低价

double iHigh();


double  iHigh( 
   string           symbol,          // symbol 
   int              timeframe,       // timeframe 
   int              shift            // shift 
   );

iHigh()函数拥有三个参数,symbol、timeframe、shift

函数功能是返回特定交易品种指定周期的某一根K线柱的最高价

datetime iTime();

datetime  iTime( 
   string           symbol,          // symbol 
   int              timeframe,       // timeframe 
   int              shift            // shift 
   );

iTime()函数拥有三个参数,symbol、timeframe、shift

函数功能是返回特定交易品种指定周期的某一根K线柱的时间

long iVolume();

long  iVolume( 
   string           symbol,          // symbol 
   int              timeframe,       // timeframe 
   int              shift            // shift 
   );

iVolume()函数拥有三个参数,symbol、timeframe、shift

函数功能是返回特定交易品种指定周期的某一根K线柱成交量

脚本实例


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() 
  { 
   double open=iOpen("USDCHF",PERIOD_H1,0);    //返回K线柱的开盘价
   double close=iClose("USDCHF",PERIOD_H1,0);   //返回K线柱的收市价
   double low=iLow("USDCHF",PERIOD_H1,0);     //返回K线柱的最低价
   double high=iHigh("USDCHF",PERIOD_H1,0);    //返回K线柱的最高价
   datetime time=iTime("USDCHF",PERIOD_H1,0);    //返回K线柱的时间
   long volume=iVolume("USDCHF",PERIOD_H1,0);  //返回K线柱的成交量
   
   Print("Current bar for USDCHF H1 open: ",open);
   Print("Current bar for USDCHF H1 close: ",close);
   Print("Current bar for USDCHF H1 low: ",low);
   Print("Current bar for USDCHF H1 high: ",high);
   Print("Current bar for USDCHF H1 time: ",time);
   Print("Current bar for USDCHF H1 volume: ",volume); 
  
  }

代码功能为 日志打印出USDCHF一小时周期的当前K线柱的开盘价、收盘价、最低价、最高价、时间、成交量。

参数详细说明

(“USDCHF”,PERIOD_H1,0)

“USDCHF”, 交易品种
PERIOD_H1, 时间周期是一小时
0 , 当前K线柱

结果显示所有的数据都是0,也就是说没有读取到数据,原因是图表窗口中没有打开的USDCHF图表,因此读取不到数据。
结果显示所有的数据都是0,也就是说没有读取到数据,原因是图表窗口中没有打开的USDCHF图表,因此读取不到数据。

现在随便打开随便USDCHF一个周期的图表,打开一个USDCHF5分钟周期图表。

在这里插入图片描述
可以看到日志里边打印出了USDCHF的一组数据

接着验证下数据的正确性,切换回USDCHF一小时图表,点击数据窗口查看
在这里插入图片描述
可以看到 Low、Close、Volume 跟日志的数据是不一样的。

为什么呢???

因为我读取的是当前K线柱的数据 除了Open 其他的数据都还是在波动中的。

当然,程序是需要严谨的,不容一丝错误。

现在修改一下参数,读取前一根K线柱的数据

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() 
  { 
   double open=iOpen("USDCHF",PERIOD_H1,1);    //返回K线柱的开盘价
   double close=iClose("USDCHF",PERIOD_H1,1);   //返回K线柱的收市价
   double low=iLow("USDCHF",PERIOD_H1,1);     //返回K线柱的最低价
   double high=iHigh("USDCHF",PERIOD_H1,1);    //返回K线柱的最高价
   datetime time=iTime("USDCHF",PERIOD_H1,1);    //返回K线柱的时间
   long volume=iVolume("USDCHF",PERIOD_H1,1);  //返回K线柱的成交量
    
   Print("Current bar for USDCHF H1 open: ",open);
   Print("Current bar for USDCHF H1 close: ",close);
   Print("Current bar for USDCHF H1 low: ",low);
   Print("Current bar for USDCHF H1 high: ",high);
   Print("Current bar for USDCHF H1 time: ",time);
   Print("Current bar for USDCHF H1 volume: ",volume); 
  }

就是把参数0改成1。

0代表当前K线柱,依次往前K线柱的参数是1、2、3·······

继续执行一下脚本

在这里插入图片描述
打印出了一组数据

数据窗口验证一下

在这里插入图片描述
各项数据对的上,说明没有错。

工欲善其事,必先利其器,交易最重要的是遵守规则,严格执行。关注公众号,学习MQL入门到精通EA教程,学习更多EA编程,畅写属于自己的EA,锻造属于自己的神兵利器。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值