手把手教你做一套外汇量化系统(5)- MT4 EA基本结构及运行原理

标签:
mt4ea外汇交易系统程序化交易财经 |
分类: 手把手教你写赚钱系统 |
在MT4平台左侧导航栏里面Expert Advisor 点右键,选择create,就会跳出新创建一个EA的对话框,输入交易系统的名字就可以创建一个新的EA,如下图:
http://s6/mw690/712ddf6dgx6CFCcjK2V15&690MT4
http://s11/mw690/712ddf6dgx6CFCoA6uu5a&690MT4
完成后我们会发现,MT4自动为我们创建了一些代码,其中包含几个函数,那么这些默认的代码
是做什么的呢,几个函数又是如何被调用的?这里就需要我们深入理解一下EA是如何在MT4软件上
自动运行的原理,这样我们能从根本上理解mt4 EA的优点也能解释mt4 EA一些问题是如何产生的
//+------------------------------------------------------------------+
//|
//|
//|
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software
Corp."
#property
link
//+------------------------------------------------------------------+
//| expert initialization
function
//+------------------------------------------------------------------+
int init()
//----
//----
//+------------------------------------------------------------------+
//| expert deinitialization
function
//+------------------------------------------------------------------+
int deinit()
//----
//----
//+------------------------------------------------------------------+
//| expert start
function
//+------------------------------------------------------------------+
int start()
//----
//----
//+------------------------------------------------------------------+
init() 这个方法是在EA被加载到图表上开始运行的时候最开始调用的函数,所以我们会把需要初始化的变量
都写在这个方法里,还有某些每次重新加载都需要重置的全局变量也要放在这个方法里
deinit()相对应,每次EA被从图表上除掉时会运行这个方法,如果前面有读写文件操作,这里可以释放一些文件句柄等。
start () 这个方法是整个EA的核心入口函数,每次有一个tick进来都都会运行一次这个方法(所谓tick就是每价格的每一次变动),这样每一个tick我们都可以在这个方法里面进行运算,调用技术指标等等,如果符合我们条件我们就可以进行开仓平仓等等交易操作。
前面说过理解了系统的运行逻辑就能明白mt4单进程系统的一些缺点,比如如果我们同时在多个图表上运行不同的EA,在有突发消息出来的时候,tick会大量的进来如果恰好同时有不同系统满足条件开仓的话,同时向服务器下命令,由于mt4不是多线程,所以会造成排队,成交慢,甚至是 context is busy这种系统异常,对于普通系统这些可能不是特别大的问题,但是对于高频交易,影响就比较大了,根据我们经验,解决这种问题可以采用多开几个mt4软件登陆同一个账号,但是分别跑不同的系统。