量化交易入门--写第一个量化程序

一位量化交易程序员手把手教你入门

上篇介绍完了如何配置量化交易所需要的环境,这篇继续介绍如何写第一个量化交易程序。

MT4提供的sample程序只有基本的功能,不能够自动交易。

我们写一个自动交易程序,逻辑如下

· 下一个多单

· 检查当前盈利情况

· 盈利大于1美金止盈平仓,或者亏损大于1美金止损平仓

· 退出程序

//+------------------------------------------------------------------+
//|                                                  QuantSample.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(){
//---//---return(INIT_SUCCEEDED);}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){
//---}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(){
//---int ticket = 0;if(OrdersTotal() == 0) {//检查当前是否有订单,没有则下单//send orderticket = OrderSend(Symbol(), OP_BUY, 0.01, MarketInfo(Symbol(), MODE_ASK), 100, 0.0, 0.0, "comment", 1024, 0,0xFFFFFFFF);}double profit = 0;for(int i = 0; i < OrdersTotal(); i++){ //计算当前盈亏if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) break;profit = OrderProfit();}if(profit > 1.0 || profit < -1.0) { //当前盈亏满足条件则平仓退出//close orderfor (int index = OrdersTotal() - 1 ; index >= 0 ; index = index - 1) {if(!OrderSelect(index, SELECT_BY_POS, MODE_TRADES)){ //选择订单PrintFormat(">>> select failed closing trade <%s> at index %d", Symbol(), index);continue;}bool close_result = true ;switch(OrderType()) {case OP_BUY :close_result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(), MODE_BID),100,0xFFFFFFFF) ; //关闭订单break;case OP_SELL :close_result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),100,0xFFFFFFFF) ;break;}}ExpertRemove();//退出EA}}
//+------------------------------------------------------------------+

这是一个包含了最最基本功能的交易程序,它没有任何量化相关的逻辑,只展示了最基本的交易能力。

复杂的量化交易程序也需要包含这两个功能,

· 下单

· 平仓

区别在于他们的下单依据,量化交易会用复杂的逻辑分析市场上反馈的数据,再决定下单和平仓的时机。我们后面会再介绍。

EA的生命周期

EA的默认生命周期包括三个函数,

· onInit

· onDeInit

· onTick

和几个可选函数

· onChartEvent

· onTimer

· onTester等

onInit

EA被MT4加载时的入口,只会执行一遍。

一般用来做全局变量初始化,UI界面绘制等操作。

onDeInit

MT4在结束一个EA时会调用onDeInit,代表着一个EA的生命周期结束。只会执行一次。

在这个函数里一般会做全局变量释放,和UI控件释放的操作。

onTick

MT4运行过程中会在有新数据来到的时候通过tick调用EA的onTick接口。

EA在收到onTick调用之后,需要检查新的数据是否满足设定的逻辑。这是一个极高频的接口,在正式环境上是毫秒级的。

onTick在回测的时候也会被调用,但频率是根据回测时设定的tick级别,从1sec到1h都有。

其他可选接口
onChartEvent

EA可以在K线图上绘制控件,用户通过控件的点击修改EA的变量等参数。这些点击事件会通过onChartEvent发送给EA处理。

在这里插入图片描述

onTimer

定时接口。EA初始化的时候可以通过 setTimer() 接口设定一个时间间隔,每次到点的时候会调用EA的onTimer接口。我们可以在onTimer里做一些状态校验操作,比如发送邮件,发送告警等操作。

onTester

测试接口,一般不需要实现。

编译运行EA

MT4是一个运行EA的应用,它可以加载已经编译好的EA程序,程序的后缀是ex4。

GoldFlag28.mq4 编译后-> GoldFlag28.ex4

我们把一个mq4的源码编译后,会在同个目录下得到一个ex4程序。

它的编译需要用MT4提供的应用:MetaEditor

MetaEditor在MT4的安装目录下可以找到。打开后界面是这样的。

在这里插入图片描述

MetaEditor提供了全套开发功能,甚至包括断点调试。

通过文件->新建项目,新建一个叫QuantSample的项目,然后把上面的代码复制进去。

编译后就可以在MT4的EA栏里面看到刚刚新建的QuantSample EA了。

在这里插入图片描述

运行EA

操作方式在上一篇里介绍过。如果一切没问题,会看到在交易里有个订单

在这里插入图片描述

让它运行一段时间,在满足条件后它会自动平仓。

然后在历史记录里就有一条记录,

在这里插入图片描述

不能交易等问题

MT4需要在有账户的情况下才能交易,我们在运行EA前需要先注册一个模拟账户,然后在左边登录它。

在这里插入图片描述

有些MT4第一次打开后会默认有个模拟账户,这种情况就不用管它了

推荐两种申请账户的办法
· 手机下载MT4客户端,申请MT4自带的MetaQuote服务器的模拟账户

· 通过真实交易平台注册模拟账户

这里推荐第二种方式,MetaQuote的服务器速度慢,而且短时间不使用的话会被删除,需要重复申请比较麻烦。

注册链接1

注册链接2

注册后申请开通一个Demo账号,记住账号ID和密码。

第一次登陆MT4需要手动搜索服务器,选择开设模拟账户。

在这里插入图片描述

输入刚注册的服务器的名字,点扫描

然后取消,我们只需要它缓存好服务器,这时候再点登陆交易账户,就可以看到注册的服务器了。

在这里插入图片描述
输入账号密码,现在就可以正常的交易了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/64312.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《PyTorch深度学习实践》

【《PyTorch深度学习实践》完结合集】 https://www.bilibili.com/video/BV1Y7411d7Ys/?share_sourcecopy_web&vd_source684aec3a42a2952834511895317ee34b 链接&#xff1a;https://pan.baidu.com/s/1vZ27gKp8Pl-qICn_p2PaSw 提取码&#xff1a;cxe4 一、&#xff08;学习…

C++_开发图形界面_EasyX(笔记)

笔记目录 前言一、为什么使用EasyX二、搭建EasyX图形开发环境三、测试EasyX图形开发环境1.绘制圆2.用ChatGpt测试EasyX的Y轴朝向 三、图形开发进阶四、黑客攻击系统界面总结 前言 Rock老师 ; C ; EasyX ; 笔记 一、为什么使用EasyX 1.辅助学习和提高C的工具 2.开发简单的图形…

吴恩达机器学习作业二Python实现

作业二 文章目录&#xff08;嫌墨迹可以直接点击目录跳转到源代码查看&#xff09; 文章目录 作业二第一题1.1 数据可视化代码讲解结果 1.2 实现1.2.1 热身运动 sigmoid 函数代码 1.2.2 损失函数和梯度代码结果思路 1.2.3 手动梯度下降尝试学习参数代码结果总结 1.2.3 使用fm…

chatgpt赋能python:Python出不来图像如何解决?——Python编程经验分享

Python出不来图像如何解决&#xff1f;——Python编程经验分享 Python是一门非常强大的编程语言&#xff0c;常用于数据处理、Web后端开发、爬虫等领域&#xff0c;但有时候在开发过程中&#xff0c;你可能会遇到Python出不来图像的情况。这时候该怎么办呢&#xff1f;本文将从…

java飞机大战程序图片不显示

作为一个java初学者&#xff0c;最近在学习尚学堂免费的基础java课程时&#xff0c;跟着视频做一个planewar/飞机大战的程序&#xff0c;遇到了背景和飞机图片加载不了的问题&#xff0c;几经搜索&#xff0c;终于解决&#xff0c;分享一下过程和解决办法&#xff1a; 代码片段…

博士申请 | 澳大利亚悉尼科技大学招收人工智能/软件工程方向全奖博士生

合适的工作难找&#xff1f;最新的招聘信息也不知道&#xff1f; AI 求职为大家精选人工智能领域最新鲜的招聘信息&#xff0c;助你先人一步投递&#xff0c;快人一步入职&#xff01; 悉尼科技大学 澳大利亚悉尼科技大学&#xff08;UTS&#xff09;座落于风景优美的悉尼市中心…

香港中文大学岳翔宇老师招收人工智能全奖博士生/博士后/研究助理/实习生

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 香港中文大学岳翔宇老师招收人工智能全奖博士生、博士后、研究助理、实习生 岳翔宇博士&#xff08;个人主页 http://people.eecs.berkeley.edu/~xyyue&#xff09;将于今年秋季加入香港中文…

关于我——人工智能专业大二的一年

关于我——人工智能专业大二的一年 活动地址&#xff1a;毕业季进击的技术er 写作内容参考方向&#xff1a;在校生 文章目录 关于我——人工智能专业大二的一年大二上学期数学建模社团经历参加的考试学校课程掌握技术参与活动和竞赛 大二下学期参加的比赛掌握技术学校课程最后 …

2023届推免经历分享-四非计算机保研边缘人

四非边缘人的保研历程 小小的开头 随着28号的系统开放&#xff0c;我接受了西电的拟录取&#xff0c;保研之路也就暂告一段落&#xff0c;其实真正花在准备保研上的时间其实不算长。由于我是院里的第一届学生&#xff0c;而且本科学校确实很一般&#xff0c;所以最后专业是否…

人工智能专业读研导师怎么选?建议你收藏这份名单

转自&#xff1a;AI科技评论 踏上学术道路&#xff0c;导师选择是关键中的关键&#xff0c;几乎直接决定你未来科研生涯的幸福指数&#xff01;随着研究生录取临近&#xff0c;各大院校招生大战烽烟再起&#xff0c;在极具潜力的人工智能领域尤其如此。 在瞄向清华、北大等传统…

人工智能专业劝退贴...

本来我是没打算写这么个东西的&#xff0c;虽然我看到了好几次人工智能专业要学啥&#xff1f;想学人工智能专业去哪个学校好&#xff1f;这样类似的问题&#xff0c;我都没有回答&#xff0c;因为恐怕我一张嘴就是劝退。可是现在身边有朋友咨询我说家里亲戚的小孩对人工智能专…

人工智能专业保研面试如何准备?

人工智能作为最近大火的专业&#xff0c;是很多保研er期望能在研究生阶段深入学习的方向&#xff0c;前两天中国人民大学高瓴人工智能学院夏令营也开启了报名&#xff0c;相信有意在AI方向深造的保研er都不会错过&#xff01; 那么&#xff0c;计算机专业的我们应该如何去准备A…

数说CS|中国人民大学高瓴人工智能学院保研生源大起底!

1、院校介绍 中国人民大学高瓴人工智能学院由高瓴资本创始人兼CEO、耶鲁大学校董、中国人民大学校友张磊先生捐资支持&#xff0c;是中国人民大学二级学院&#xff0c;于2019年成立。该学院主要招收人工智能专业的学生&#xff0c;对程序设计、数据结构与算法、计算机、人工智…

清华刘云浩教授回复学生2000问,你想了解的人工智能问题可能都在这里

来源&#xff1a;机器之心 本文约28400字&#xff0c;建议阅读30分钟。 本文介绍了清华大学软件学院刘云浩教授解答关于AI方面的问题。 清华大学软件学院刘云浩教授近日对学生们的提问写出了万字长文回复。今年他回答的问题也紧跟计算机科学&#xff0c;以及人工智能技术的潮流…

[当人工智能遇上安全] 1.人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术

您或许知道&#xff0c;作者后续分享网络安全的文章会越来越少。但如果您想学习人工智能和安全结合的应用&#xff0c;您就有福利了&#xff0c;作者将重新打造一个《当人工智能遇上安全》系列博客&#xff0c;详细介绍人工智能与安全相关的论文、实践&#xff0c;并分享各种案…

[论文阅读] (04) 人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术

外滩大会 AI安全-智能时代的攻守道 Deep Learning Security: From the NLP Perspective 浙江大学 《秀璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提…

分享一些关于ChatGPT等AI的项目资料

文章目录 分享一些关于ChatGPT等AI的项目资料awesome-open-gpt/gpt相关开源项目合集飞书知识库-&#x1f525; 紧跟AIGC风向知识库 分享一些关于ChatGPT等AI的项目资料 前几天找gpt等ai接入qq/wx的时候无意发现一个很好的项目&#xff0c;里面全是介绍关于chatgpt的资料&#…

2020年编程语言风向标,收下这份上岸指南!

有人说:经历了2019年的“市场变革”后,未来这一年将会至关重要,是决定各自命运的定型年。 那么对于准备进入IT行业的小伙伴来说,今年的风向标如何?哪些编程语言会持续大热? 希望这份“上岸指南”能帮到你做判断,规避风险~加油! 每年都会有注定失败的语言,也会出现“…

技术风向标|实在智能连续五次入选全球权威咨询机构Gartner重磅报告

近年来&#xff0c;AI行业准独角兽实在智能连续入选全球权威咨询机构Gartner系列重磅报告。在其近日发布的《Hype Cycle for ICT in China&#xff0c;2023》报告中&#xff0c;实在智能再次成为重点推荐的供应商企业&#xff0c;不仅彰显了实在智能在行业内的领先地位&#xf…

AI绘画关键词网站推荐 :轻松获取百万个提示词!完全免费

一、lexica.art 该网站拥有数百万Stable Diffusion案例的文字描述和图片&#xff0c;可以为大家提供足够的创作灵感。 使用上也很简单&#xff0c;只要在搜索框输入简单的关键词或上传图片&#xff0c;就能为你提供大量风格不同的照片。点击照片就能看到完整的AI关键词&#…