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

19 篇文章 7 订阅
19 篇文章 13 订阅

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,锻造属于自己的神兵利器。

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!下面是一个简单的MT4 EA编程入门教程: 1. 安装MetaEditor:首先,确保你已经安装了MetaTrader 4(MT4)平台。然后,在MT4中,选择“工具”>“MetaQuotes语言编辑器”(或按下F4键),打开MetaEditor。 2. 创建新的Expert Advisor(EA):在MetaEditor中,选择“文件”>“新建”>“Expert Advisor”,或使用快捷键Ctrl+N。这将打开一个新的源代码窗口。 3. 编写EA代码:在源代码窗口中,你可以编写自己的EA代码。MetaQuotes语言MQL)是一种类似C的编程语言,用于编写MT4 EA。你可以使用各种函数和指令来定义交易逻辑、执行操作等。 以下是一个简单的示例代码,用于在MT4中创建一个基本的移动止损EA: ```c //+------------------------------------------------------------------+ //| MyEA.mq4 | //| Copyright 2021, YourName | //| https://www.yourwebsite.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, YourName" #property link "https://www.yourwebsite.com" // 输入参数 extern double StopLoss = 100.0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int init() { return (0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return (0); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // 获取当前价格 double currentPrice = MarketInfo(Symbol(), MODE_BID); // 设置止损价格 double stopLossPrice = currentPrice - StopLoss * Point; // 设置止损订单 int ticket = OrderSend(Symbol(), OP_SELL, 0.1, currentPrice, 0, stopLossPrice, 0, "MyEA", MagicNumber, 0, Red); if (ticket < 0) { Print("无法设置止损订单!错误代码:", GetLastError()); } } ``` 4. 编译和安装EA:在MetaEditor中,选择“文件”>“编译”(或按下F7键)来编译你的EA代码。如果没有错误,你将在底部的“日志”选项卡中看到“编译成功”的消息。然后,你可以将EA安装到MT4平台中。 5. 在MT4上测试EA:打开MT4平台,选择你要运行EA的图表。然后,从“导航器”窗口中的“专家顾问”部分中拖动你的EA到图表上。确保已启用自动交易,并在需要的时候调整EA的输入参数。 这只是一个入门级的教程,帮助你了解如何编写和安装MT4 EA。如果你想深入学习MT4 EA编程,建议阅读更多相关文档和教程,学习更多高级的概念和技术。祝你编程愉快!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值