前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【零基础】MT4量化入门一:跑一个简单的boll

【零基础】MT4量化入门一:跑一个简单的boll

作者头像
全栈程序员站长
发布于 2022-08-31 10:37:41
发布于 2022-08-31 10:37:41
1.9K0
举报

大家好,又见面了,我是你们的朋友全栈君。

一、前言

  今天开始研究MT4了,MT4是大大有名的外汇交易和量化软件,使用一种叫做MQL的语言来开发量化程序(跟C比较像)。因为是外国人做的,用的也大部分是外国人,使用起来不是很顺手,跟极星各有优劣吧。这里我就先逐步讲一下MT4的使用,然后再简单跑一个boll指标,最后汇总下使用心得。

二、安装

1、下载MT4

  不熟悉这东西,连安装都是个麻烦事儿。MT4官网好找一搜就有,下载链接好找安装包不大,一会就安装上了。可是你给我装的啥?我要的MT4你咋给我装个MT5?

  原来这家公司现在力推MT5,但是大家都用惯了MT4不想换,所以官网只能下载MT5,但你可以到各经纪商下载老版本的MT4。由于二者间有些差别,而且大部分人都不用新版本的,所以我也从善如流找个老版本吧。

  最后经网友帮助终于下了经纪商的版本,我使用的下载链接:

  https://www.fuhuiyazhou.com/

  翻到中间就有下载链接了

2、注册模拟账户

  安装后直接打开,会提示你开户。我们先注册个模拟账户,下图中就是可接入的站点,你选一个ping值较小的,然后地址名带Demo的(Real是实盘不是模拟)。

  填写信息后即可注册成功,一开始会给你1万的资金用来模拟。启动后的窗口大概就是下图这样。就不说MT4本身的操作了,大家可以自己摸索下。

三、编写量化代码

1、新建量化

  现在我们看到这个叫“交易端”,在上方的功能菜单中选择“工具->MQ语言编辑器”打开量化编辑窗口。然后新建一个量化策略,注意是“新建”而不是“新建项目”。

  新建向导里有很多选择,一般我们用到的就是:

EA交易:就是我们说的量化了,在MT4他们叫EA(Expert Advisor 智能交易系统)。

自定义指标:比如我们在K线图上看到的MA指标、BOLL指标,在MT4你可以自己来编辑指标然后应用到K线图上,国内一般将指标编辑放在交易端,MT4把这些全部放到了MQL编辑器里了。

脚本:脚本可以在你触发后自动执行一系列操作,与EA不同的是,脚本是手动触发,而EA是行情触发。

选择“EA”->下一步->名称输入“testboll”->下一步

  接着就会让你选一些额外的触发函数。什么叫额外呢,因为一般我们是来一个行情触发一次量化执行的,现在你可以多加几个,比如下面的“OnTimer定时触发”就是到时间了就触发一次。这里我们统统不要选,直接下一步。

  创建成功啦,代码的目录在左侧导航器的Experts目录里,这是默认的。

2、代码结构说明

  从前面的图可以看到,默认有三个函数,分别是:

OnInit():启动EA时触发一次的函数

OnDeinit():结束EA时触发一次的函数

OnTick():来一个行情触发一次的函数

3、简单的boll策略

  代码比较简单,向上突破后做空,向下突破做多,而且只做一单。需要说明的不多:

iBands是MT4自带计算boll指标的函数,其中PRICE_CLOSE代表了当前收到的最新价。

Close 中存着所有收到的收盘价,Close[0]是最新的那个。

OrderSend 就是下单函数。

Symbol返回当前合约,其实填NULL也行。

OP_BUY、OP_SELL分别是买和卖。还有四个类型分别是:OP_BUYLIMIT、OP_SELLLIMIT、OP_BUYSTOP、OP_SELLSTOP

Ask、Bid分别代表当前的卖价和买价

Bid+50*Point、Bid-50*Point分别用作止损和止盈,即在下单价的基础上,上浮和下浮50个点止损、止盈。一个点就是合约的最小变动价

Green、Red设置箭头的颜色,在跑EA时下单的话可以在K线上显示一个箭头表明下单了。国外一般绿色是多、红色是空(跟我们反过来)

  更多的参数说明可以看用户手册,英文版的在“帮助->MQL4帮助文件”,文末附上了中文版的说明(翻译的一般,看的吃力)

四、回测

  由于今天刚好不是交易日,所以就只能做一下历史数据回测。

1、检查代码

  在开始测试可以先运行下调试,主要是检测下代码有没有问题,没有问题的话会进入MT4下单界面。

  点确定即可

  然后你会发现什么都没发生。但是注意看K线图的右上角,会有你当前测试EA的名字,还有个哭哭脸。这是因为EA已经加载了,但你还没启动策略执行。

  在工具栏找到“自动交易”,点击即可。

  如果是在有即时行情的时候,点击“自动交易”后,哭哭脸就会变成笑笑脸,那策略就真的开始执行了。但现在没有行情,我们只能做回测,就没必要点“自动交易”了。

2、启动回测

  建议修改代码后,每次都点一下“运行调试”,一是看看代码有没有问题,其次有时我更新代码后立即做回测发现代码并没有更新,执行一次“运行调试”就一定是最新的,反正是比较玄乎。

  在下方的回测栏中选择我们刚写好的策略、回测的合约、K线周期等等。

注意1:复盘模型选“仅用开盘价”即可,这样显示复盘的速度会快点,如果选了“每个即时价格”则K线生成的会比较慢

注意2:勾选“复盘显示”后会在K线图上重现K线生成的过程,后面那个滑动条是快进的速度

注意3:“时间周期”设置的是K线显示的周期,而不是触发的周期,这个后面详细说明

3、结果查看

  K线图上会以图标的方式显示你的下单情况

  最下方有“结果”、“净值图”、“报告”、“日志”分别代表了“下单明细”、“资金变化”、“回测报告”、“系统和用户日志”可以查看回测的各方面信息。

  注意在“下单明细”中,除了我们操作的buy和sell外,还有自动执行的止盈和止损(下单时就设置了的)。

五、注意事项

1、回测的K线周期只是显示的周期,不是触发的周期。

  你看代码里触发的函数是OnTick,意思是每一个tick都会触发一次,而不是5分钟、10分钟触发一次,所以你获取到的close是当前tick的,而不是K线bar柱的。这一点跟我以前的经验有很大不同。但是呢,open获取到的开盘价又确实是指定周期bar柱的开盘价。总的来说MT4的回测有点像极星的即时行情,从这个角度来说确实是实现了更高真实度的回测。

2、历史数据可能没有你期待的那么可靠

  通过数次测试我发现,越是以前的数据tick越稀松,越是现在的数据tick越密集。比如你做3月26日到3月27日的回测,26日开始时的tick数据是1分钟一个触发,而到了27日可能一秒钟一个触发。具体怎么回事我还得再测测看。

六、总结

  本节简单做了个boll回测,而且把大概的流程搞清楚了,但也发现了很多问题导致回测不准,后面还得花时间把问题搞清楚先。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142706.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
​[ROS2]源码安装turtlebot3用于调试(简易版)
注意:链接中的https://ghproxy.com/ 为使用代理下载github代码。
首飞
2022/04/13
5670
​[ROS2]源码安装turtlebot3用于调试(简易版)
[ROS2]数据回放伴侣Rviz+plotjuggler
PlotJuggler是一个类似于rqt_plot的基于Qt的数据可视化工具。但PlotJuggler拥有更强大和好用的功能。你可以导入文本文件让它显示文本文件中的数据。你也可以导入ros的bag包,它能自动解析bag包中的数据。并可以回放bag包的数据,然后用Rviz来显示数据。PlotJuggler的功能有很多,这里只介绍几种我常用的功能。应该足以应付日常的机器人开发调试工作。
首飞
2022/05/01
1.5K0
[ROS2]数据回放伴侣Rviz+plotjuggler
webots和ros2笔记02-启程
看完01-资料篇https://zhangrelay.blog.csdn.net/article/details/112670542。
zhangrelay
2021/03/03
8750
ROS2机器人实验报告提示02➡沼泽⬅
颜色属性(color profile)这个选项请注意,不用输密码,一路取消……镜像不能保存在本体,但可以保存到其他盘。
zhangrelay
2021/12/02
3970
ROS2机器人实验报告提示02➡沼泽⬅
ROS2极简总结-命令行接口基础
ros2 <main_command> <sub_command> <<arguments>>
zhangrelay
2021/12/02
1.7K0
ROS2极简总结-命令行接口基础
ROS2 框架下运行 Python
ROS2是怎么搭建这个房子的呢?它是要先创建一个统一的固定名字的文件夹“src”,然后在这个文件夹下面再去具体定义各个房间。
为为为什么
2024/07/12
7200
[ROS2]下载Navigation2源码来学习
注意:链接中的https://ghproxy.com/ 为使用代理下载github代码。
首飞
2022/04/24
6280
[ROS2]下载Navigation2源码来学习
使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)
参考链接:https://github.com/bunchofcoders/basic_bocbot
zhangrelay
2020/02/19
3.9K0
使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)
ROS2机器人应用简明教程4工区
工区/工作区/工作空间(workspace简写为ws)是机器人操作系统核心概念之一。
zhangrelay
2020/07/03
9350
ROS2机器人应用简明教程4工区
ROS2之OpenCV的windows和linux差异在哪里
使用 rosdep install 看到 wnen 的错误只是 rosdep 告诉它不知道给定操作系统的“opencv2”是什么,因此它无法安装满足 cv_basics pacakge 的 package.xml 中列出的要求的东西.至于解决方案,建议参考问题#232795,该问题很好地解释了 rosdep 的工作原理以及您接下来可以做什么。
zhangrelay
2022/06/15
7590
ROS2、slam_toolbox、Navigation2、Gazebo(转)
Slam Toolbox软件包基于LaserScan消息的形式组合来自激光测距仪的信息,并从odom-> base链接中进行了TF转换,从而创建了空间的二维地图。该软件包将允许完全序列化重新加载的SLAM地图的数据和姿态图,用于持续建图、定位,合并或进行其他操作。允许SLAM Toolbox在同步(即,处理所有有效的传感器测量,无论是否滞后)和异步(即,在可能的情况下处理有效的传感器测量)模式下运行。
zhangrelay
2020/03/09
2.7K0
ROS2、slam_toolbox、Navigation2、Gazebo(转)
Webots和ROS2使用说明(部分翻译)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/18
1.7K0
Webots和ROS2使用说明(部分翻译)
【C++】ROS:ROS2环境配置与基础示例
ROS 2 (Robot Operating System 2)是一个开源的机器人操作系统,它是ROS(Robot Operating System)的下一代版本。它提供了一系列工具、库和约定,用于构建机器人应用程序。与ROS 1相比,ROS 2具有更强大的功能,更好的性能和更好的可靠性。
DevFrank
2024/07/24
2.2K0
【C++】ROS:ROS2环境配置与基础示例
ubuntu18.04 LTS安装ROS图文教程「建议收藏」
没有安装Ubuntu18.04LTS的自行安装,安装过程祥见我的另一篇文章,地址如下
全栈程序员站长
2022/09/30
1.9K0
ubuntu18.04 LTS安装ROS图文教程「建议收藏」
ROS2编程基础课程--colcon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/19
2.8K0
ROS2 中 使用奥比中光 Orbbec Astra Pro 深度相机
前面的文章《ROS2 机器人操作系统入门和安装以及如何使用 .NET 进行开发》中提到,组成机器人的关键部分主要是电机、传感器、软件和电池。机器人的智能感知主要通过视觉传感器,视觉传感器对于机器人来说,就像人类之于眼睛的关系,可说非常重要。那么如何通过 ROS 获取远端机器人的摄像机传感器的图像信息呢?
桑榆肖物
2023/08/22
2K0
ROS2 中 使用奥比中光 Orbbec Astra Pro 深度相机
计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能
博客中大量介绍了将Ubuntu等Linux系统借助机器人操作系统ROS实现机器人控制设计开发和物联网功能案例,并可基于OpenAI等实现人工智能相关训练。
zhangrelay
2021/03/03
2.1K0
ROS文件系统(工程结构)
介绍catkin的编译系统,catkin工作空间的创建和结构,package软件包的创建和结构,介绍CMakeLists.txt文件,package.xml以及其他常见文件。
小飞侠xp
2019/05/13
1.8K0
ROS文件系统(工程结构)
ROS 2 Humble Hawksbill 之 f1tenth gym
# F1TENTH gym environment ROS2 communication bridge This is a containerized ROS communication bridge for the F1TENTH gym environment that turns it into a simulation in ROS2.
zhangrelay
2022/06/30
1.5K0
ROS 2 Humble Hawksbill 之 f1tenth gym
ROS2机器人编程简述humble-第二章-DEVELOPING THE FIRST NODE .2
0.1ROS2机器人编程简述新书推荐-A Concise Introduction to Robot Programming with ROS2
zhangrelay
2023/02/03
6290
推荐阅读
相关推荐
​[ROS2]源码安装turtlebot3用于调试(简易版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档