设为首页 收藏本站 切换语言

使用MQL语言获取mt4行情并保存至本地

| 发表于 2022-12-26 11:09:19 | 显示全部楼层 |复制链接
可能大家知道大智慧、同花顺多一些,因为平时多少会接触一些股票知识,也会进行一些股票投资。虽然A股市场想赚钱还是非常难的,但是手头有一点钱难免会蠢蠢欲动。在股票这个领域,大智慧和同花顺名气大一些,可以用来看行情或者交易。但是在另一个投资领域,外汇、期货和现货市场,什么软件名气更大呢,我想应该是MetaTrader 4,简称mt4,虽然现在mt5也已经出来了,但是身边朋友还是习惯用mt4。外汇、期货和现货这个领域投资风险很高,杠杆也高,一般都是百倍左右杠杆,很刺激,方向做对了,分分钟收益翻倍,方向做错了,瞬间爆仓也是可能的。这一领域已经不算价值投资了,更多还是考验人的心里、技术分析,甚至也有一些运气成分。回到本文话题,在使用mt4看行情时,如何把行情也保存至本地呢?需要使用mql编程语言,该语言主要用于编写交易策略,实现自动化交易,说白了就是使用该语言编写脚本,然后满足一定条件就开始交易,所谓程序化、自动化、智能化交易。那么mql语言难学吗?如果懂c语言的话,会感觉很简单。所以当有人问我初学者该学哪门编程语言时,我都推荐学c语言,很古董吗?有点,但是一旦掌握了c语言,或者说入门了c语言,在看其他很多语言都比较容易了,其实很多编程语言都是在c的基础上衍生的,也就是后续很多编程语言的设计者,他们都是c语言高手,都很精通c语言,所以在设计新语言时,难免会借鉴一些c语言的规范及思想。学习c语言,不一定使用c语言写多少代码,而是通过c语言建立编程思想,最简单的编程思想。如果一开始学习java,很可能基础编程思想还没有建立,就被一对面向对象、函数式编程等等词汇概念搞晕了,甚至积极性被打击。下面就是获取行情信息并保存至本地的代码:
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int handle;
int OnInit()
{
    int hour = TimeHour(TimeLocal());
    int minute = TimeMinute(TimeLocal());
    minute = minute - (minute % 5);
    string timeLocal = TimeToStr(TimeLocal(), TIME_DATE);
    string fileName = timeLocal + "/" + hour + "/XAU_" + minute + ".txt";
    handle = FileOpen(fileName, FILE_TXT|FILE_WRITE|FILE_SHARE_READ, ",");

    Print("OnInit..........");
    return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
    FileClose(handle);
    Print("OnDeinit..........");
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
    // 创建新文件
    int minute = TimeMinute(TimeLocal());
    if (minute % 5 == 0) {
        int hour = TimeHour(TimeLocal());
        string timeLocal = TimeToStr(TimeLocal(), TIME_DATE);
        string fileName = timeLocal + "/" + hour + "/XAU_" + minute + ".txt";

        FileClose(handle);
        handle = FileOpen(fileName, FILE_TXT|FILE_WRITE|FILE_SHARE_READ, ",");
    }

    // 写文件
    FileWrite(handle, Bid, TimeLocal(), "*");
    FileFlush(handle);
}
//+------------------------------------------------------------------+
代码很简单,我的思路是每隔指定时间,会创建一个小文件,在该时间段内,所有行情信息会写进这个小文件,这样可以方便文件检索和管理。整个代码结构一个资源初始化函数,一个资源释放函数,一个事件触发函数,获取行情和保存的主逻辑都在这个函数内。这些函数会以回调的形式被mt4主程序调用,所以运行这段代码,先要打开mt4主程序,并将代码文件放置在MQL4\Experts\目录内,然后和主程序关联一下就可以了。在正常交易日内,程序开始工作后,只要有行情信息变更,就会把行情保存至本地,有了行情数据,可做的事情还是蛮多的 。
————————————————
版权声明:本文为CSDN博主「grafx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/grafx/article/details/80038779

如果有帮助,就支持一下我呗
举报

评论 使用道具

精彩评论6

daerwushen
DD
| 发表于 2022-12-26 12:04:23 | 显示全部楼层
获取行情信息
举报

点赞 评论 使用道具

dongxu64
DDD
| 发表于 2022-12-26 23:35:06 | 显示全部楼层
把行情保存至本地
举报

点赞 评论 使用道具

daerwushen
DD
| 发表于 2022-12-27 09:31:48 | 显示全部楼层
获取行情信息并保存至本地
举报

点赞 评论 使用道具

qwe11
CCC
| 发表于 2022-12-28 08:08:46 | 显示全部楼层
运气成分
举报

点赞 评论 使用道具

ken138888
B
| 发表于 2022-12-28 13:49:03 | 显示全部楼层
这样做有什么用吗?
举报

点赞 评论 使用道具

13130110288
DD
| 发表于 2023-1-3 07:44:02 | 显示全部楼层
资料不错好好学习
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)