随着电子交易的普及,越来越多投资者开始使用程序化交易进行投资,而EA正是程序化交易的核心。本文将介绍使用MQL4编写自己的EA的入门知识,帮助投资者构建适合自己的交易算法。
一、MQL4简介
MQL4(MetaQuotes Language 4)是MetaTrader 4(MT4)交易平台所采用的编程语言。它允许用户开发自己的自动交易程序、定制指标和脚本,以及执行其他形式的技术分析。MQL4包含了许多内置函数和库,可帮助开发人员构建高质量、高性能的EA。
二、MQL4程序结构
MQL4程序由4个部分组成:预处理指令、变量声明、函数定义和主函数。以下是一个简单的MQL4程序示例:
“`
//预处理指令
#property copyright “Copyright 2021, My Company”
#property link “https://www.mycompany.com”
#property version “1.0”
//变量声明
extern double Lots = 0.1;
extern int StopLoss = 30;
extern int TakeProfit = 60;
//函数定义
int start()
{
//主函数
}
“`
1. 预处理指令
预处理指令是在程序运行之前先进行处理的指令。它们通常用于指定版权信息、版本号、作者等信息,以及导入其他库和资源。
2. 变量声明
变量声明是程序中用于存储数据的容器。在MQL4中,变量可以属于以下几种类型:整数(int)、浮点数(double)、布尔值(bool)、日期和时间(datetime)、字符串(string)等。有时候,我们需要将某些变量设定为可配置的,以便程序运行时可以根据设置来使用不同的变量值。这时候可以使用`extern`关键字,在程序中预定义一些参数供用户来更改。
3. 函数定义
函数是MQL4程序的基本代码单元。它们是一段封装过的可重用代码块,接受输入参数并返回输出结果。在MQL4中,有许多内置函数供开发人员使用,例如用于计算交易手数、成本和指标值的函数。
4. 主函数
MQL4编程的核心是`start()`函数。它是程序执行的起点,并包含了主要的交易逻辑代码。
三、编写一个简单的EA
下面我们将编写一个简单的EA,当某个货币对价格上涨并突破30日移动平均线时,就会生成一个买入信号。
首先,我们需要定义三个变量:
“`
double lot_size;
double stop_loss;
double take_profit;
“`
然后在`start()`函数中,我们需要获取当前交易账户的资金和持仓信息:
“`
double account_balance = AccountBalance();
int orders_total = OrdersTotal();
“`
接下来,我们需要计算当前货币对的30日移动平均线:
“`
double ma_30 = iMA(NULL,PERIOD_D1,30,0,MODE_SMA,PRICE_CLOSE,0);
double bid_price = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
“`
然后判断是否产生买入信号:
“`
if((bid_price > ma_30) && (orders_total == 0))
{
//生成买入订单
OrderSend(_Symbol,OP_BUY,lot_size,bid_price,3,bid_price-stop_loss,bid_price+take_profit,””,MagicNumber,0,Green);
}
“`
最后,在EA搭载完成后,进行相关的测试、优化和回测。
四、总结
MQL4编写EA是程序化交易过程中的重要环节。本文介绍了MQL4的基本语法和程序结构,并以一个简单的示例介绍了EA编写的基本流程。但要注意的是,EA的编写需要具备一定的编程基础和市场分析能力,需要投资者经过反复练习和调试,才能成功构建一个适合自己投资策略的EA。