如何用MQL4语言 编写外汇ea编写教程趋势交易程序

后使用快捷导航没有帐号?
劲爆福利!EA教学详解,MT4编程教学(连载)
& &&&第一课:、、EA的运行方法及EA测试历史数据并参数优化
<font color="#. MT4软件简单介绍(最流行的智能交易软件)Mt4是MetaQuotes软件公司开发的一款以外汇为主期货为辅的分析交易软件。目前超过100家外汇经纪公司和来自全世界的30个国家的银行已经选择MT4软件作为网络交易。我国民生银行曾经推出过一款叫“易富通”外汇保证金产品,用的交易平台就是MT4。
1. 演示如何下载MT4,并安装?2. 演示如何下单?3. 演示如何挂单?4. 演示如何如何修改订单?5. 演示如何如何平仓?6. 演示如何画趋势线等。7. 演示如何加载系统自带的指标?8. 演示如何加载自定义指标?9. 演示如何执行脚本?10. 演示如何加载EA,并运行?11. 演示如何测试EA历史数据?12. 如何能测试到10年的历史数据?13. 为什么MT4安装目录文件夹容量越来越大,甚至达到5G~6G?14. 如何看测试报告?15. 如何设置参数优化,挑选出最优参数?带有dll文件的EA如何测试历史数据?
第二课:指标、脚本、EA的编写基础知识及简单实例演示1. 如何进入MetaEditor编辑器。两种方式。2. MetaEditor介绍。菜单一一介绍,快捷菜单等基本介绍。3. MetaEditor右侧导航”文件/字典/搜索”的应用。4. 下部工具箱-&帮助的使用,以及F1帮助快捷键的使用。5. 指标、脚本、EA的作用及区别。6. 指标编写基本框架函数init()、deinit()、start()详解。7. 脚本编写基本框架函数start()详解。8. EA编写基本框架函数init()、deinit()、start()详解。9. 制作一个指标实例演示双线MACD的制作演示10. 制作一个脚本实例演示一次性平全部仓,并删除所有挂单脚本制作演示11. 制作一个EA实例演示。EMA均线金叉开多单,死叉开空单,并设置止损、止赢功能EA制作演示
第三课:MQL4语言基本语法讲解(上)1. MQL4语言介绍,MQL4和MT4的关系。ex4文件和mq4文件的区别2. 注释符:单行注释“//”、多行注释“/*& &*/”3. MQL4的变量有哪些数据类型?日期类型特别说明.主要的数据类型如下:数据类型如何定义示例整型数据 (int)&&例:int a=0;布尔数据 (bool)例: bool a=字符数据 (char)例:char a=[size=12.0000pt]’[size=12.0000pt]a[size=12.0000pt]’[size=12.0000pt];字符串数据 (string)例:string a=[size=12.0000pt]”EURUSD[size=12.0000pt]”[size=12.0000pt];浮点型数据 (double)例:double EURUSDprice=1.23900颜色数据 (color)例:color a= C'0x44,0xB9,0xE6';日期时间数据 (datetime)例:datetime a= D' 00:00';特别说明:颜色数据(color) 代表RGB 颜色; 例:color a= C'0x44,0xB9,0xE6';//其中0x44,0xB9,0xE6 三个16位整数分别代表R,G,B的值。日期时间数据 (datetime) 是起始时间从1979年1月上午0.00开始以秒数计算。 例:datetime a= a=D' 00:00';//表示2004年1月1日00:00点。也可以表示从1970年1月1日上午0.00开始到2004年1月1日00:00点所经过的秒数。4. 如何定义数组?在mql4编程中数组有着巨大的作用!int& & a[50];& && & // 定义了50整数的一维数组注意:数组第一个元素是a[0],最后元素为a[49 ]。大家都知道MT4图标中最基本的单位是K线,对于mql4编程语言来说这一根一根K线是有顺序的,它就是以数组来存储的。 如上图:最右边的一根K线是0号,往右一根K线是1号。MQL4内置了很多数组例如:Open[],Close[],High[],Low[]。这些数组你不用声明就可以使用,它们的序号就是图上我标注的序号:如上图想得到最右边的那根K线的开盘价就等于Open[0],收盘价就等于Close[0],最高价就等于High[0],最低价就等于Low[0]。5. 全局变量,局部变量,可供外部修改的变量的区别?全局变量是在程序最开始的地方定义的,可提供程序中的所有函数访问。局部变量是在函数内部定义的,它的使用周期是这个函数的运行完毕。可供外部修改的变量就是程序一开始用extern修饰符定义的变量,它是一种特殊的全局变量,它有全局变量所有特性和功能,它的特殊性就是可供外部修改变量的值。6. MQL4中的算术运算符包:+& & 求和& & 例如: i = j + 2;-& & 求差& & 例如: i = j - 3;*& & 求积& & 例如: z = 3 */& & 求商& & 例如: i = j / 5;%& &求模& & 例如: minutes = time % 60;++&&自加1& &例如: i++;--& &自减1& &例如: k--;7. MQL4中的赋值操作符把变量x的值赋予变量y y =8. MQL4中的关系运算符:逻辑值FALSE代表整数零值,逻辑值TRUE 代表不同于零的任何值。用返回0(False)或1(True)来表示两个量之间的关系。等于b& && &&&a ==不等于b& && &a !=小于b& && &&&a&大于b& && &&&a &b;小于等于 b& & a &=b;大于等于 b& & a &=9. MQL4中的逻辑运算符:否定运算符(!):用来表示真假的反面的结果。如果运算值是FALSE结果为TRUE;如果运算不同于FALSE等于FALSE&&。或运算符(||):用来表示两个表达式只要有一个成立即可返回TRUE。并运算符(&&)。如果x和y值都是真实的,表达式值为TRUE 。10. 以上各种运算符之间运算先后顺序关系优先排列从上到下,越上面越优选运算:()& &&&函数调用& && && && && && & []& &&&数组元素参考!& && &真假运算符& && && && && &&&-& && &改变运算符++& &&&增量--& &&&减量~& && &位逻辑运算符&& && &位逻辑运算符 AND& && &&&|& && &位逻辑运算符 OR^& && &位逻辑运算符 OR&&& &&&左移&&& &&&右移*& && &乘法& && && && && && & /& && &除法%& && &百分比+& && &加法& && && && && & -& && &减法&& && &小于& && && && && && && & &=& &&&小于等于&& && &大于&=& &&&大于等于==& &&&等于!=& &&&不等于||& &&&逻辑 OR& && && && & &&& &&&逻辑 AND& && && &&&=& && &值& && && && && && & +=& &&&加法值-=& &&&减法值*=& &&&乘法值/=& &&&除法值%=& &&&百分比值注意:在MQL4程序中执行优先运算不同于在C 语言范围内的运算。
{第四课:MQL4语言基本语法讲解(下)1. if-else条件操作符int x=2;if(x&0) {& && &Print(“x&0”);}Else {& && &Print(“x&=0”); }2. Switch操作符:switch表达式操作符必须是整数类型,下面X必须是整数类型& && &int x=4;& && &switch(x)& && & {& && && & case 1:& && && & Print(&x=1&);& && && & Print(&x==11&);& && && & //& && && & case 2:& && && & Print(&x=2&);& && && & //& && && & case 3:& && && & Print(&x=3&);& && && & //& && && & default:& && && & Print(&x=?&);& && && & //
& &C}& &If(x==6){& &B}}Return函数返回3. Functions函数的定义及其应用函数的定义,函数参数的定义(传值参数和传引用参数的区别)函数的调用void canshu(int &a)&&{& &&&a=10;&&}
& && && && &第五课:如何获取K线数据?如何获取指标数据?1.1 如何抓取价格数据1.1.1 如何获得本货币对的买价(ask)、卖价(bid)?1.1.2 如何获得任意货币对的买价(ask)、卖价(bid)?1.1.3 如何获得本货币对、本时间周期、本根K线的开盘价、收盘价、最高价、最低价?1.1.4 如何获得本货币对、本时间周期、任意根K线的开盘价、收盘价、最高价、最低价?1.1.5 如何获得本货币对、任意时间周期、本根K线的开盘价、收盘价、最高价、最低价?1.1.6 如何获得本货币对、任意时间周期、任意根K线的开盘价、收盘价、最高价、最低价?1.1.7 如何获得任意货币对、本时间周期、本根K线的开盘价、收盘价、最高价、最低价?1.1.8 如何获得任意货币对、本时间周期、任意K线的开盘价、收盘价、最高价、最低价?1.1.9 如何获得任意货币对、任意时间周期、任意K线的开盘价、收盘价、最高价、最低价 如何调用指标数据:写EA总是离不开指标,总是要先获取指标的值然后再做判断。写指标呢?同样需要学会如何调用指标的数据,很多指标都是调用了许许多多著名的指标的数据,然后综合一下就可以变成自己的指标了。 1.2 调用指标分为两种1.2.1 如何调用MT4系统自带的指标?1.2.2 如何调用自定义的指标,或者说是别人写的指标?
& && && && && && &第六课:如何下单?如何挂单如何修改止损止赢?
1. 如何下市价单?OrderSend(…)2. 如何下挂单?OrderSend(…)3. 如何修改市价单的止损、止盈?OrderModify(…)4. 如何市价平仓?OrderClose(…)5. 如何修改挂单的价格?OrderModify(…)6. 如何修改挂单的止损、止盈?OrderModify(…)7. 如何删除挂单?OrderDelete(…)8. 如何找出你想要的订单。
& && & OrdersTotal()OrderSelect(…MODE_TRADES)9. 找到你要的订单后,如何获得这个订单的开单价、止损、止赢、开仓时间等信息。OrderLots()OrderTicket()
OrderOpenPrice())OrderOpenTime())OrderTakeProfit())OrderType())OrderStopLoss()OrderProfit()
)OrderSwap())OrderMagicNumber())OrderComment())10. 如何获取已经平仓的订单信息。OrdersHistoryTotal()OrderSelect(…MODE_HISTORY)OrderLots()OrderTicket()
OrderOpenPrice()OrderOpenTime()OrderTakeProfit()OrderType()OrderStopLoss()OrderProfit()
OrderSwap()OrderMagicNumber()OrderComment()OrderClosePrice()OrderCloseTime()
& && && &第七课:获取账户信息,报警,发送邮件,MarketInfo等常用功能函数1. 获取MT4交易商公司名字2. 获取当前MT4账户号码用途:限制别人的账户使用此EA3. 获取当前账户的余额4. 获取当前账户的净值5. 获取当前账户的已用保证金AccountMargin( )6. 获取当前账户的可用保证金AccountFreeMargin( )7. 测试交易了某个货币对的某个下单量后剩余多少保证金。AccountFreeMarginCheck8. 报警提示函数Alert9. 打印日志函数Print10. 发送电子邮件函数SendMail给大家演示一下比较实用的功能,当EA一开单立即把开单的方向,开单的价格,开单止损止赢等信息发送邮件到你指定邮箱。然后通过邮箱的中转功能实现,立即把信号用手机短信的形式传送到手机上。11. 弹出窗口函数MessageBox(&这是一个弹出窗口&,&弹出窗口&,MB_YESNO|MB_ICONQUESTION);12. MarketInfo 函数(这个函数功能非常强大,对以后的EA开发非常有用处)
本帖子中包含更多资源
才可以下载或查看,没有帐号?
&& 今天继续发布课程目录,后期会放上视频解说。
& && && && && &第八课:系统自带指标函数分析
1. iAC比尔.威廉斯的加速器或减速箱振荡器2. iAD离散指标3. iAlligator比尔&#12539;威廉斯的鳄鱼指标4. iADX移动定向索引5. iATR平均真实范围6. iAO比尔.威廉斯的振荡器7. iBearsPower熊功率指标8. iBands保力加通道技术指标9. iBullsPower牛市指标10. iCCI商品通道索引指标11. iDeMarker指标12. iEnvelopes包络线指标13. iForce强力索引指标14. iFractals分形索引指标15. iGator随机震荡指标16. iIchimoku指标17. iBWMFI比尔.威廉斯市场斐波纳契指标18. iMomentum动量索引指标19. iMFI资金流量索引指标20. iMA移动平均指标21. iMACD移动平均数汇总/分离指标22. iSAR抛物线状止损和反转指标23. iRSI相对强弱索引指标24. iRVI相对活力索引指标25. iStdDev标准偏差指标26. iStochastic随机震荡指标(KDJ指标)27. iWPR威廉指标&&& && &&&第九课:文件操作函数讲解1.文件新建、文件打开2.文件保存格式bin,csv3.文件指针的概念4.文件读取,如何一行一行读取到所有文件的内容。5.文件写入6.怎么在文件末尾追加一行新内容7.文件保存关闭第十课:如何在货币对窗口界面上添加文字、趋势线等对象1. 如何在货币对窗口指定坐标添加文字对象。2. 如何设置文字对象的字体大小,字体颜色等。3. 如何修改文字对象的文字内容。4. 如何**文字对象。5. 如何在货币对指定坐标添加趋势线对象。6. 如何设置趋势线的颜色。7. 如何获取趋势线上对应的点的价格。8. 如何**趋势线。交流方式:
本帖最后由 神威如龙 于
09:37 编辑
趋势交易策略视频&&第一期
好好学习一下
好好学习一下
好好学习一下
好好学习一下
(window.slotbydup=window.slotbydup || []).push({
id: '2537330',
container: s,
size: '264,189',
display: 'float'&>&&>& > 正文
MQL4程序书写规则
时间: 01:34:28&&&&来源:&&&&作者:
说实话,我不认为一个连书写都不规范的程序员是个好程序员。MQL4跟C语言规范一致,所以下文具备很高的参考价值。
从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下规则:
1.一个说明或一个语句占一行。
2.用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。
3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。
在编程时应力求遵循这些规则,以养成良好的编程风格。下面给初学者分享一份软件工程中的编程规范【部分】。
1. 基本要求
1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。
1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。
1.3 尽量使用标准库函数和公共函数。
1.4 不要随意定义全局变量,尽量使用局部变量。
1.5 使用括号以避免二义性。&
2.可读性要求
2.1 可读性第一,效率第二。
2.2 保持注释与代码完全一致。
2.3 每个源程序文件,都有文件头说明,说明规格见规范。
2.4 每个函数,都有函数头说明,说明规格见规范。
2.5 主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。
2.7 常量定义(DEFINE)有相应说明。
2.8 处理过程的每个阶段都有相关注释说明。
2.9 在典型算法前都有注释。
2.10 利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为 6个字节。
2.11 循环、分支层次不要超过五层。
2.12 注释可以与语句在同一行,也可以在上行。
2.13 空行和空白字符也是一种特殊注释。
2.14 一目了然的语句不加注释。
2.15 注释的作用范围可以为:定义、引用、条件分支以及一段代码。
2.16 注释行数(不包括程序头和函数头说明部份)应占总行数的 1/5 到 1/3 。
3. 结构化要求
3.1 禁止出现两条等价的支路。
3.2 禁止GOTO语句。
3.3 用 IF 语句来强调只执行两组语句中的一组。禁止 ELSE GOTO 和 ELSE RETURN。
3.4 用 CASE 实现多路分支。
3.5 避免从循环引出多个出口。
3.6 函数只有一个出口。
3.7 不使用条件赋值语句。
3.8 避免不必要的分支。
3.9 不要轻易用条件分支去替换逻辑表达式。
4. 正确性与容错性要求
4.1 程序首先是正确,其次是优美
4.2 无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。
4.3 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。
4.4 所有变量在调用前必须被初始化。
4.5 对所有的用户输入,必须进行合法性检查。
4.6 不要比较浮点数的相等,如: 10.0 * 0.1 == 1.0 , 不可靠
4.7 程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等。
4.8 单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。
5. 可重用性要求
5.1 重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。
5.2 公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。
5.3 公共控件或类应建立使用模板。
盟友评论 >
外汇微信群
跟随优秀操盘手炒外汇

我要回帖

更多关于 外汇趋势分析 的文章

 

随机推荐