我与Mql5的故事,从我07年想象mql的情况,到mql5一步步的发展
人生的相遇有许多,从单向,双向注意到轻度,重度,深度卷入。人生的相别也有许多,从藐视,冷淡,疏远到陌路不相识。
2004年夏日的午后,我去看望朋友,他开的是外汇保证金公司,看到屏幕上有一款我没有见过的交易软件。我问什么软件。他答mt4。我习惯性的打开帮助文档。看到了那个可以自动化交易的mql4,有些惊喜,从此便开始了我的迈达克之旅。
mql4的语言内容并不很多。从1.语法,注释,标识符,保留字,2,数据类型。。。到19.work with events,共在笔记本上抄了5张。其中两张是函数(数组到文件)部分,然后就是收集ea,测试它们,改写它们,并且把ea在纸上再写一次,眼界开阔些。
随着自己对外汇市场认知的增加,和mt4的性质(btob软件)。以及mql4的语法特点(面向过程),我需要一个面向对象的知识库,一个模糊粗糙的推理机。mql4只能提供产生式规则,确定的推理机制。加上我外汇的连续爆仓,我于2006年放弃了使用mql4,但还关注着迈达克。
2007年,Wealth-Lab Developer也从pascal改到c#,RightEdge也推出了连接sqlsever的c#,还有OpenQuant,QuantDeveloper,NinjaTrader有都是采用的c#,还对神经网络交易感兴趣,但是NeuroSolutions不能编程,Wealth-Lab Developer那个前向神经网络太简单不适用。
于是迈达克提出了面对对象的mql5迈达克官网上现在最早的资料是2009年11月2日发布的,07、08年那些他们准备开发mql5的新闻现在一个也找不到了。我还记得猜他们使用什么语言,开发者背后书架上的些《c++技术内幕》的书,还有些语法采用的读者意见调查。看到mql5现在很亲切,见证了它语法的变迁,从无指针,到现在模板的加入。但还是希望它把class的继承发生改成多继承。
mql5的语法没有多继承,我觉得这是mql5的最大败笔。数据类型比mql4丰富了一些,普通函数比mql4多了一倍,相同的名称没有改变。最重要的数组没有任何改变,函数基本上和mql4雷同。
mql5有16个库文件。有几个特别重要策略模块,交易,指标。数学。标准库(数学统计)用于处理概率理论各种分布的函数(基1本上是把R的函数重载了,速度时r的3-7倍)。(模糊理论)实施Mamdani和Sugeno模糊推理系统的程序库。ALGLIB 数据分析(集群,决策树,线性回归,神经网络),解决微分方程式,傅里叶变换,数值积分,优化问题,统计分析等等。
谈下ea,我现在也不清楚为什么迈达克要把它起名为Expert Advisor,叫Expert System不更好吗?
mql5的ea组成部分。
1.知识库(mql5传统的ea是产生式规则,神经网络ea是权值矩阵)
2.数据存储方式(mql5是用面对对象方式)
3.推理机制(通常是ea是规则的与或确定性推理,模糊逻辑是模糊运算,神经网络是矩阵相乘)
4.知识获取方式(你可以用主观的规则,也可以用机器学习的知识(mql5的帮助文档里大多是用R机器学习))
mql5里边的神经网络应用(可以把数据送到( NeuroPro,NeuroSolutions)神经网络里运算,也可过通讯接口(Excel,sqlserver,matlab,delphi),最流行的方式是用r和python学习,再用c++写。
同步操作平均时间(9.59 毫秒),异步操作平均时间 (0.09 毫秒)市场深度更新速度(42.7 次每秒)
mql5的内存占用空间一个ea大概40兆,如果你的ea是多周期,多目标(走势跟踪,基本面分析,季节性走势,差价法,套利,波动),跨市场(股,期,债,汇)的,空间复杂度也会爆发增长。
mql5里边有许多通用ea方法和ea向导,大家可以一步一步按着那些例题写ea。mql5的通用交易系统思想是从CExpertSignal类产生交易信号入场。从CExpertTrailing产生跟踪出场。用CExpertMoney类进行资金管理。
我的系统交易思想是建立一个数据类管理数据。从CexpertSignal抽取数据产生信号。一个Ctrade类的派生类综合(COrderInfo,CDealInfo,CPositionInfo),然后用CexpertMoney类。中间的子模块根据团队的能力增加和减少。
10年的相知,从参加mql5 ea比赛,到搜索mql5的相关资料我从mql5学到了很多思维,系统、人工智能、管理方面的知识。很期望将来能与这个老朋友合作愉快。
本文作者:www,资深外汇交易者
外汇心理学专家,mql研究专家
本文地址:https://www.waihuibang.com/fxschool/autotrading/mql5/40721.html