• 新添加量子混沌系统板块,欢迎大家访问!---“量子混沌系统”
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏我们吧

MQL4语言编写交易指标和模型的实践经验分享

交易进阶 Qchaos_007 2年前 (2023-08-27) 9072 复制链接

MQL4语言编写交易指标和模型的实践经验分享

作为一名从事多年期货、外汇交易的投资者,熟悉编写程序化交易或者EA是必不可少的技能,而MQL4语言是其中最为常用的编程语言之一。在本文中,我将分享我的实践经验,为想要学习MQL4语言编写交易指标和模型的新手提供帮助。

一、MQL4语言入门及基础知识

在了解MQL4语言之前,首先需要理解交易算法。简单来说,交易算法就是投资者根据市场走势形成一套判断标准,并制定一系列的买卖规则。这些规则可以是基于技术分析、基本面分析或其他因素的。然后,程序会按照这些规则自动进行交易。

学习MQL4编程需要一些计算机基础知识和编程经验,例如数据类型、变量、数组、循环等等。除此之外,还需要学习一些专业术语,例如“Expert Advisor(专家顾问)”,“Indicator(指标)”,“Backtesting(回测)”等等。

二、MQL4技术指标编写与应用

技术指标是衡量市场走势的重要指标,也是编写程序化交易的重要组成部分。以下简要介绍一些常用的技术指标及相应编写方法:

1. 移动平均线(MA)

移动平均线是衡量价格趋势的重要工具。代码实现方法如下:

double MA(int ma_period){

double ma = iMA(NULL, 0, ma_period, 0, MODE_SMA, PRICE_CLOSE, 0);

return (ma);

}

其中,iMA函数用于计算移动平均线,参数说明:

– NULL:为当前图表;

– 0:为当前品种;

– ma_period:为移动平均线的周期;

– 0:为移动平均线与当前价格一致;

– MODE_SMA:为移动平均线的计算模式,表示使用简单移动平均法;

– PRICE_CLOSE:为所取价位,即以收盘价计算;

– 0:表示从当前bar开始计算。

2. 相对强弱指标(RSI)

相对强弱指标用于衡量价格变化程度,属于超买与超卖指标。代码实现方法如下:

double RSI(int rsi_period){

double rsi = iRSI(NULL, 0, rsi_period, PRICE_CLOSE, 0);

return (rsi);

}

其中,iRSI函数用于计算相对强弱指标,参数说明:

– NULL:为当前图表;

– 0:为当前品种;

– rsi_period:为相对强弱指标的周期;

– PRICE_CLOSE:为所取价位范围,即收盘价;

– 0:表示从当前bar开始计算。

3. 布林线(BB)

布林线指标结合简单移动平均线和标准差线来衡量价格波动情况。代码实现方法如下:

void BB(int b_period, double b_dev){

double up_band, dn_band;

double ma = MA(b_period);

double st_dev = b_dev * iStdDev(NULL, 0, b_period, 0, PRICE_CLOSE, 0);

up_band = ma + st_dev;

dn_band = ma – st_dev;

return (up_band, dn_band);

}

其中,iStdDev函数用于计算标准差,参数说明:

– NULL:为当前图表;

– 0:为当前品种;

– b_period:为标准差的周期;

– 0:表示从当前bar开始计算。

三、MQL4交易模型编写与应用

除了技术指标之外,交易模型也是编写程序化交易的重要部分。以下简要介绍一些常见的交易模型及相关的代码实现方法:

1. 均值回归策略

均值回归策略基于股票价格长期趋势恢复的原理,通过寻找异常股票价格并建立多空仓位来获利。代码实现方法如下:

int ticket;

double lots, stop_loss, take_profit;

double ma = MA(20);

double price = Close[0];

if(price > ma){

lots = NormalizeDouble(AccountFreeMargin() / 1000 / MarketInfo(Symbol(), MODE_TICKSIZE), 2);

stop_loss = price – (price – ma) * 1.5;

take_profit = price – (price – ma) * 3;

ticket = OrderSend(Symbol(), OP_SELL, lots, Ask, 3, stop_loss, take_profit, “Sell Order”, MagicNumber, 0, Red);

}else if(price < ma){

lots = NormalizeDouble(AccountFreeMargin() / 1000 / MarketInfo(Symbol(), MODE_TICKSIZE), 2);

stop_loss = price + (ma – price) * 1.5;

take_profit = price + (ma – price) * 3;

ticket = OrderSend(Symbol(), OP_BUY, lots, Bid, 3, stop_loss, take_profit, “Buy Order”, MagicNumber, 0, Green);

}

其中,NormalizeDouble函数用于将交易手数保留两位小数;AccountFreeMargin函数可以获取账户余额;OrderSend函数用于发送交易请求。

2. 动量策略

动量策略基于股票价格趋势加速变化的原理,通过建立多空仓位来获利。代码实现方法如下:

int ticket;

double lots, stop_loss, take_profit;

double rsi = RSI(14);

double price = Close[0];

if(rsi > 70){

lots = NormalizeDouble(AccountFreeMargin() / 1000 / MarketInfo(Symbol(), MODE_TICKSIZE), 2);

stop_loss = price – (price – MA(50)) * 1.5;

take_profit = price – (price – MA(50)) * 3;

ticket = OrderSend(Symbol(), OP_SELL, lots, Ask, 3, stop_loss, take_profit, “Sell Order”, MagicNumber, 0, Red);

}else if(rsi < 30){

lots = NormalizeDouble(AccountFreeMargin() / 1000 / MarketInfo(Symbol(), MODE_TICKSIZE), 2);

stop_loss = price + (MA(50) – price) * 1.5;

take_profit = price + (MA(50) – price) * 3;

ticket = OrderSend(Symbol(), OP_BUY, lots, Bid, 3, stop_loss, take_profit, “Buy Order”, MagicNumber, 0, Green);

}

其中,MA函数用于计算移动平均线的值;MagicNumber为交易请求的唯一标识符,可以用来识别不同的交易请求。

四、总结

本文介绍了MQL4语言的入门基础和常见的技术指标编写方法、交易模型及其应用。对于正在学习MQL4语言或想要将手工交易转变成程序化交易的投资者来说,这些知识都是非常有用的。需要注意的是,程序化交易虽然可以帮助我们更好地管理风险和获利,但也需要谨慎思考和实践。MQL4语言编写交易指标和模型的实践经验分享


量子混沌 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:MQL4语言编写交易指标和模型的实践经验分享