随着投资者技术分析水平的提高和程序化交易的发展,利用MQL4编写交易策略成为了一种趋势。本文将深入探讨技术指标,以及如何在MQL4中编写高效的交易策略。
一、技术指标
- 移动平均线
移动平均线是衡量股票价格趋势的重要工具。通过计算股票价格在一段时间内的平均值,可以得出趋势线。常见的移动平均线包括简单移动平均线(SMA)和指数移动平均线(EMA)。
在MQL4中,可以通过iMA函数来计算移动平均线的值。例如,计算5日SMA的代码如下:
double sma = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, 0);
其中,NULL表示当前图表所显示的货币对;0表示当前图表时间段;5表示计算的周期数;0表示当前价格条数;MODE_SMA表示计算SMA;PRICE_CLOSE表示使用收盘价进行计算;0表示偏移量。
- 相对强弱指标
相对强弱指标(RSI)用于衡量股票价格的涨跌幅度。RSI指标数值在0至100之间,一般认为高于70为超买区,低于30为超卖区。
在MQL4中,可以通过iRSI函数来计算RSI的值。例如,计算14日RSI的代码如下:
double rsi = iRSI(NULL, 0, 14, PRICE_CLOSE, 0);
其中,NULL表示当前图表所显示的货币对;0表示当前图表时间段;14表示计算的周期数;PRICE_CLOSE表示使用收盘价进行计算;0表示偏移量。
- 布林线指标
布林线指标利用统计学的原理,计算出股票价格的标准差,并在股票价格图上画出上、下两条标准差线和中轨线。
在MQL4中,可以通过iBands函数来计算布林线指标的值。例如,计算20日布林线指标的代码如下:
double upper, middle, lower;
iBands(NULL, 0, 20, 2, 0, PRICE_CLOSE, MODE_MAIN, upper, middle, lower);
其中,NULL表示当前图表所显示的货币对;0表示当前图表时间段;20表示计算的周期数;2表示标准差系数;0表示应用于哪些价格条;PRICE_CLOSE表示使用收盘价进行计算;MODE_MAIN表示计算中轨线;upper、middle、lower分别为上、中、下轨线的值。
二、MQL4编写交易策略
在MQL4中,编写交易策略的主要步骤包括:
- 定义全局变量和外部参数
定义全局变量和外部参数,便于策略的灵活调整。例如,定义一个全局变量表示止损点数:
int stopLoss = 20;
- 编写OnTick函数
OnTick函数是程序的主要入口点,它会在每个新的价格条上被调用。
在OnTick函数中,可以编写交易策略的核心代码,例如:
double ma = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, 0);
double rsi = iRSI(NULL, 0, 14, PRICE_CLOSE, 0);
if (rsi > 70 && Bid < ma) {
// sell
}
if (rsi < 30 && Bid > ma) {
// buy
}
以上代码表示如果当前RSI超过70且价格低于5日均线,则卖出;如果当前RSI低于30且价格高于5日均线,则买入。
- 编写交易函数
编写交易函数,包括开仓、平仓、修改止损和止盈点等操作。例如:
void openTrade(int type) {
double stoploss, takeprofit;
if (type == OP_BUY) {
stoploss = Bid - stopLoss * Point;
takeprofit = Bid + stopLoss * Point;
} else {
stoploss = Ask + stopLoss * Point;
takeprofit = Ask - stopLoss * Point;
}
if (OrderSend(Symbol(), type, 0.1, Bid, 3, stoploss, takeprofit, "My EA", 123456, 0, clrGreen) == -1) {
Print("Open trade failed: ", GetLastError());
}
}
以上代码表示在当前价格处开仓,设置止损点位于当前价格下方20个点,设置止盈点位于当前价格上方20个点。
- 编写OnInit函数
OnInit函数会在程序启动时被调用,主要用于初始化程序的参数和变量等。
在OnInit函数中,可以进行一些初始化操作,例如:
int OnInit() {
if (!IsTradeAllowed()) {
Print("Trade is not allowed.");
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
以上代码表示如果当前禁止交易,则停止程序运行。
- 编写OnDeinit函数
OnDeinit函数会在程序结束时被调用,主要用于善后工作,例如关闭打开的文件等。
三、总结
MQL4是编写交易策略的重要工具。了解技术指标和合理运用编程语言,可以编写出高效的交易策略,帮助投资者更好地进行交易。但在使用MQL4编写交易策略时,需要考虑市场风险和股票特性等因素,做好风险管理。