(第一单元)第1小节:初识MQL4语言
MQL4(全称:MetaQuotes Language 4)是由MetaQuotes Software(迈达克)开发的专门用于编写交易策略的编程语言。专门为MetaTrader 4(MT4)交易平台设计,是一种广泛使用在外汇交易中的程序语言,MetaEditor为MQL4的专用编辑器。
特点和功能:
- 自动化交易:MQL4通过编写专门的交易策略,从而实现自动进行交易操作。交易策略可以基于技术指标、图表操作、价格动作等条件。
- 自定义指标:通过编写自定义指标,分析市场和制定交易决策。自定义指标可以根据交易者的需求计算和显示各种技术指标值。
- 自定义函数库:通过自定义函数库,简化、模块化代码编写过程。把常用功能集合到函数库中,可以在之后的指标、脚本、EA中重复使用。
- 交易操作:丰富的内置函数,用于执行各种交易操作,包括开仓、平仓、修改订单、获取账户信息等。可以使用这些函数定制多样化的交易逻辑。
认识MetaEditor编辑器
在MT4终端按F4,进入编辑器,点击“文件”-“新建”,或者Ctrl+N新建一个.mq4文件,填写EA名称后其他保持默认,点击下一页。勾选所有能勾选的事件处理函数,此时我们就得到了一个简单的EA模板。
程序属性
- #property 预处理器指令,以井号 # 开头,并在EA编译时由预处理器进行处理。用于指导编译器在编译源代码之前执行特定的操作。也是EA文件编译后的封面标识,包含了代码的版本信息、图标、跳转链接以及EA介绍、版本号等信息。
事件处理函数
其中包含了5个必备的预定义的特殊事件处理函数,
- OnInit():初始化事件
- OnDeinit():反初始化事件
- OnTick():报价事件
- OnTimer():定时器事件
- OnChartEvent():图表事件
本节知识点:
1、 OnInit() :EA被加载到图表上时被调用。它通常用于执行初始化操作,例如设置全局变量、加载外部数据等,OnInit() 函数只会在初始化时被调用一次。
- 案例:加载EA的时候检查一次账号是否授权,授权通过后加载EA。
2、OnDeinit() :EA从图表上卸载时被调用。通常用于执行反初始化操作,例如释放内存资源,删除图表信息等。同样OnDeinit() 函数只会在卸载时被调用一次。
- 案例:一些EA会在图表创建图形界面,退出EA的时候把这些元素全部删除。
3、 OnTick() :每次报价更新时被调用。它是最常用的函数之一,用于实时响应市场行情变化。在 OnTick() 函数中,您可以编写代码来根据最新的市场报价执行交易决策等操作。顾名思义,该函数只会在正常报价刷新(K线跳动)时执行,K跳动一次执行该函数内的代码一遍。
- 案例:EA的内部代码会跟随报价的刷新持续执行,报价不动,EA的运行也就不动。
4、OnTimer():定时器事件被触发时被调用。可以使用定时器来设置特定的时间间隔,在每个时间间隔到达时执行自定义操作。例如,您可以使用 OnTimer() 函数来定期检查某个条件,执行特定的任务。(需要注意的是:在一个EA程序中,只能同时加载一个计时器,但可以通过特殊逻辑运算表达编写多个虚拟计时器以满足不同场景的使用),计时器通常在初始化时设置。
- 案例:按照计时器设定的时间间隔,比如1秒或者500毫秒执行一次EA中的代码,执行周期直到EA卸载为止(可以在常规的计时器中模拟多个不同时间段的虚拟计时器,以降低对应代码的执行频率)
5、OnChartEvent():在与图表交互的事件发生时被调用。这些事件可以是鼠标点击、键盘按键或其他与图表交互的操作。通过编写 OnChartEvent() 函数,可以实现与图表交互的自定义逻辑,例如根据鼠标点击位置执行特定操作或捕捉键盘事件等。
案例:点击图表的买入按钮时,根据设定的参数下一个buy单,这就是图表事件的功能应用。