熙羽 发表于 2013-8-28 19:30:11

【MQL4编程使用“索引与总结”新手入门,程序员复习】

本帖最后由 熙羽 于 2013-8-28 19:31 编辑



语言介绍
MetaQuotes Language 4 (MQL4) 是一种新的内置型程序用来编写交易策略。 这种语言可以创建你自己的智能交易,使自己的交易策略能够完全自动地执行。而且,MQL4 还能自定义客户指标,脚本和数据库。
内包含了大量可以分析当前及历史报价所必须的函数,以及一些基本的运算和逻辑操作。并内置了一些基本的指标和操作命令。
MetaEditor 4集合了编写 MQL4 程序代码的各种语句,它能帮助使用者方便地写出规范的代码。 MetaQuotes Language Dictionary 是 MQL4 语言的帮助工具,它包含了我们在使用工程中所有可能用到的函数。

编程特点
MetaQuotes Language 4(MQL4) 可以编写不同作用的程序代码:

[*]智能交易 是一种连接到特定图表的自动交易系统。它能够根据设置的节点自动启动 ,当它开始运行后,它不会同时去处理另一个新的指令(也就是说必须等到当前程序完成)。 这种交易系统能够在提醒用户可以交易的同时,将交易定单自动送到交易服务器。与大多数交易系统一样, 它也能够用历史数据测试交易策略,并在图表上显示出来。
智能交易存储在 terminal_directory\experts。

[*]自定义指标 可用来编写新的技术指标,和内置的指标一样,它不能用来进行自动交易, 只能作为分析数据的工具。
自定义指标储存在 terminal_directory\experts\indicators。

[*]脚本 是执行单一功能的一段程序,和 智能交易不同,脚本不能单独执行,只能被调用。
脚本存储在 terminal_dictionary\experts\scripts。

[*]数据库 常被使用的自定义函数的集合。数据库不能单独运行。
数据库建议存储在terminal_directory\experts\libraries。

[*]包含文件 包含文件常被使用的程序块源代码,这些文件能够被包含在智能交易,脚本,客户指标和数据库 的源代码中。 使用包含文件比调用资料库更灵活快捷。
包含文件交易储存在 terminal_directory\experts\include。

语法简介

MetaQuotes Language 4(MQL4)的语法和C语言比较类似并且是一款面向过程语言。如果你C语言基础非常好很快就能上手。
除了以下这些特点和C语言不同:

[*]没有运算地址;

[*]没有 do ... while 语句;

[*]没有 goto ... 语句;

[*]没有 [条件][表达式 1]:[表达式 2] 语句;

[*]没有复合数据类型 (结构);

[*]复合负值是不允许的,例如:val1=val2=0; arr=val; cond=(cnt=OrdersTotal)>0; 等等;

[*]逻辑表达式的计算完成前不可以提前终止。

主要的数据类型如下七个:

[*]整型数据 (int)

[*]布尔数据 (bool)

[*]字符数据 (char)

[*]字符串数据 (string)

[*]浮点型数据 (double)

[*]颜色数据 (color)

[*]日期时间数据 (datetime)

主要的储存类型如下两个:

[*]外部参数储存(extern)

[*]静态变量储存(static)

主要的操作符类型如下十个:

[*]终止操作符(break)

[*]多重选择操作符(case)

[*]继续操作符(continue)

[*]多重选择操作符 (default)

[*]条件操作符(else)

[*]循环操作符(for)

[*]条件操作符(if)

[*]返回操作符(return)

[*]多重选择操作符(switch)

[*]循环操作符(while)

主要的其他如下两个:

[*]假 0(false)

[*]真 1(true)

主要的算术运算符如下八个:

[*]+(加法运算符)

[*]- (减法运算符)

[*]-(改变运算符)

[*]* (乘法运算符)

[*]/ (除法运算符)

[*]% (取摸运算符)

[*]++(增量运算符)

[*]-- (减量运算符)

主要的赋值运算符如下十一个:

[*]= ( 值 )

[*]+= (加法值)

[*]-= (减法值)

[*]*= ( 乘法值)

[*]/= (除法值)

[*]%=(百分比值)

[*]>>= (右移值)

[*]<<= (左移值)

[*]&= (位逻辑运算符 AND值)

[*]|= (位逻辑运算符OR值)

[*]^=(位逻辑运算符 OR值)

主要的逻辑运算符如下十六个:

[*]|| (逻辑或)

[*]&& (逻辑并)

[*]!(真假)

[*]-(改变运算符)

[*]~ (位逻辑运算符)

[*]& (位逻辑运算符 AND )

[*]| (位逻辑运算符 OR)

[*]^ (位逻辑运算符 OR)

[*]<< (左移)

[*]>> (右移)

[*]< (小于)

[*]<= (小于等于)

[*]> (大于)

[*]>= (大于等于)

[*]== (等于)

[*]!= (不等于)

编程工具
MT4采用自带集成MetaEditor作为代码编译器。简单讲,编译器就是将“高级语言(MQL4)”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程:源代码→ 预处理器 → 编译器 → 目标代码 → 链接器 → 可执行程序 (EA、指标、脚本)

编程指南
MT4编程入门教材-MQL语言参考
MQL语言编码规范,在您进行编码之前应该阅读的规范
智能测试报告中数字的意义
【520FX原创】mql4常见问题你问我答
【520FX原创】MQL4编程模版1.03【520FX自定义函数库】计算指定时间到现在的K线个数
【520FX自定义函数库】在文件尾部追加写入数据
【520FX自定义函数库】当日最后出场单是否盈利
【520FX自定义函数库】计算最新出场单的手数
【520FX自定义函数库】计算最新出场单的盈亏
【520FX自定义函数库】画出一条水平线
【520FX自定义函数库】在指定的2个K线之间画出长方形
【520FX自定义函数库】在指定K线上画出文字
【520FX自定义函数库】平均持仓价格
【520FX自定义函数库】计算连续亏损的出场单个数
【520FX自定义函数库】判断最新出场单是否是当前K线出场的
【520FX自定义函数库】计算最新出场单的出场K线的序号
【520FX自定义函数库】计算当前持仓单的总盈亏比
【520FX自定义函数库】计算当前持仓个数
【520FX自定义函数库】平掉除最新持仓单以外的所有持仓按
【520FX自定义函数库】平掉所有持仓单
【520FX自定义函数库】获得最新持仓单的持仓类型
【520FX自定义函数库】获得当前最新持仓单的开仓价格
【520FX自定义函数库】计算当前总持仓量
【520FX自定义函数库】动态计算下单手数

仞利天 发表于 2013-12-10 15:40:56

520FX的自定义函数库功能很强大,顶一个。
另外:强烈建议楼主将使用频率较高的 “移动止损 ”加入520FX自定义函数库

lucy冯 发表于 2014-1-8 15:15:22

{:soso_e179:}{:soso_e179:}{:soso_e179:}我初学的,顶起来!

aggopie 发表于 2013-11-6 11:37:57

终于找到自定义库啦,哭了

zw0806 发表于 2013-8-28 20:55:43

谢谢分享

人民币 发表于 2013-8-28 21:50:47

路过。。。感谢分享。。

子泉 发表于 2013-8-30 16:33:00


路过。。。感谢分享。。

minister 发表于 2013-8-30 21:07:03

感谢分享。。

激光 发表于 2013-9-12 23:29:11

进来学习学习,谢谢分享

csxsin 发表于 2013-9-22 23:43:51

好复杂啊 我完全不懂

29004131 发表于 2013-10-6 13:47:38

进来学习学习,谢谢分享

zzshmily 发表于 2013-10-12 09:03:44

顶下收藏了

who 发表于 2013-11-10 15:57:21

。。感谢分享。。:hug::hug:

调整结束 发表于 2013-12-30 02:39:08

基础备用

水滴-金融巴菲特 发表于 2013-12-31 16:00:35

多谢分享:lol
页: [1] 2 3 4 5 6 7
查看完整版本: 【MQL4编程使用“索引与总结”新手入门,程序员复习】