- 显示:
- 1415
- 等级:
- 已发布:
- 2017.02.07 11:12
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
智能交易系统 Exp_2pbIdealMA, 基于移动平均线交叉, 并依据趋势缩减持仓。当柱线收盘时, 若快速移动均线 2pbIdeal1MA 与慢速 2pbIdeal3MA 交叉, 会形成交易信号。进而, 如果持仓的最后一笔成交的利润点超过 EA 输入参数中指定的阈值, 则缩减持仓量。快速移动均线的向上突破作为买入的信号。向下突破 — 则卖出。仓位缩减的信息存储在交易的注释字符串中, 格式为: 缩减数量 / 最后成交价 / 最后成交量。
放置 2pbIdeal1MA.ex5 和 2pbIdeal3MA.ex5 编译文件至 <终端_数据_文件夹>\MQL5\Indicators。
编译之后, Exp_2pbIdealMA_ReOpen.ex5 交易系统文件将 2pbIdeal1MA.ex5 和 2pbIdeal3MA.ex5 指标作为 资源 包含在内, 所以, 编译 EA 时不需要它们出现在终端文件夹里即可工作!为此目的, 已将相应的代码添加到 EA 代码中, 以便将这些指标包含在交易系统的可执行文件中。
指标可执行文件已作为资源添加到全局范围
//---- 在 EA 代码里包含指标作为资源
#resource "\\Indicators\\2pbIdeal1MA.ex5"
#resource "\\Indicators\\2pbIdeal3MA.ex5"
#resource "\\Indicators\\2pbIdeal1MA.ex5"
#resource "\\Indicators\\2pbIdeal3MA.ex5"
在 OnInit() 函数块里将字符串路径更改为指标的资源
//---- 获取 2pbIdeal1MA 指标的句柄
InpInd1_Handle=iCustom(Symbol(),InpInd_Timeframe,"::Indicators\\2pbIdeal1MA.ex5",Period1,Period2,0);
if(InpInd1_Handle==INVALID_HANDLE)
{
Print("获取 2pbIdeal1MA 指标句柄失败!错误代码=",GetLastError(),".");
return(INIT_FAILED);
}
//---- 获取 2pbIdeal3MA 指标的句柄
InpInd2_Handle=iCustom(Symbol(),InpInd_Timeframe,"::Indicators\\2pbIdeal3MA.ex5",PeriodX1,PeriodX2,PeriodY1,PeriodY2,PeriodZ1,PeriodZ2,0);
if(InpInd2_Handle==INVALID_HANDLE)
{
Print("获取 2pbIdeal3MA 指标句柄失败!错误代码=",GetLastError(),".");
return(INIT_FAILED);
}
InpInd1_Handle=iCustom(Symbol(),InpInd_Timeframe,"::Indicators\\2pbIdeal1MA.ex5",Period1,Period2,0);
if(InpInd1_Handle==INVALID_HANDLE)
{
Print("获取 2pbIdeal1MA 指标句柄失败!错误代码=",GetLastError(),".");
return(INIT_FAILED);
}
//---- 获取 2pbIdeal3MA 指标的句柄
InpInd2_Handle=iCustom(Symbol(),InpInd_Timeframe,"::Indicators\\2pbIdeal3MA.ex5",PeriodX1,PeriodX2,PeriodY1,PeriodY2,PeriodZ1,PeriodZ2,0);
if(InpInd2_Handle==INVALID_HANDLE)
{
Print("获取 2pbIdeal3MA 指标句柄失败!错误代码=",GetLastError(),".");
return(INIT_FAILED);
}
因此, 已编译的交易系统可执行文件能够在其它交易终端上独自使用, 而无需指标。
在测试时使用的省缺自动交易程序的输入参数如下所示。止损和止盈测试中未使用。
图例. 1. 图表中是交易例子
测试结果 2015 品种 GBPJPY H4:
图例. 2. 测试结果图表
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/16958