- 显示:
- 1420
- 等级:
- 已发布:
- 2017.02.06 12:55
- 已更新:
- 2017.09.06 12:29
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
整个开发链: Candels High Open 指标, 基于CandelsHighOpen 信号模块的EA交易。
SignalCandelsHighOpen 交易信号模块假定 Candels High Open 自定义指标已经编译好并放在 \MQL5\Indicators\ 文件夹下了。这个路径是在下面的代码块中指定的:
//+------------------------------------------------------------------+
//| 创建 "Candels High Open" 指标 |
//+------------------------------------------------------------------+
bool CSignalCHO::CreateCandelsHighOpen(CIndicators *indicators)
{
//--- 检查指针
if(indicators==NULL) return(false);
//--- 把对象加到集合中
if(!indicators.Add(GetPointer(m_SignalCHO)))
{
printf(__FUNCTION__+": 加入 CandelsHighOpen 对象失败");
return(false);
}
//--- 设置 Candels High Open 指标参数
MqlParam parameters[2];
//---
parameters[0].type=TYPE_STRING;
parameters[0].string_value="Candels High Open.ex5";
parameters[1].type=TYPE_INT;
parameters[1].integer_value=m_reverse_signals; // 反转
//--- 对象初始化object initialization
if(!m_SignalCHO.Create(m_symbol.Name(),m_period,IND_CUSTOM,2,parameters))
{
printf(__FUNCTION__+": 初始化 CandelsHighOpen 对象失败");
return(false);
}
//--- 缓冲区数量
if(!m_SignalCHO.NumBuffers(1)) return(false);
//--- 达到这一行表示函数执行成功 - 返回 'true'
return(true);
}
//| 创建 "Candels High Open" 指标 |
//+------------------------------------------------------------------+
bool CSignalCHO::CreateCandelsHighOpen(CIndicators *indicators)
{
//--- 检查指针
if(indicators==NULL) return(false);
//--- 把对象加到集合中
if(!indicators.Add(GetPointer(m_SignalCHO)))
{
printf(__FUNCTION__+": 加入 CandelsHighOpen 对象失败");
return(false);
}
//--- 设置 Candels High Open 指标参数
MqlParam parameters[2];
//---
parameters[0].type=TYPE_STRING;
parameters[0].string_value="Candels High Open.ex5";
parameters[1].type=TYPE_INT;
parameters[1].integer_value=m_reverse_signals; // 反转
//--- 对象初始化object initialization
if(!m_SignalCHO.Create(m_symbol.Name(),m_period,IND_CUSTOM,2,parameters))
{
printf(__FUNCTION__+": 初始化 CandelsHighOpen 对象失败");
return(false);
}
//--- 缓冲区数量
if(!m_SignalCHO.NumBuffers(1)) return(false);
//--- 达到这一行表示函数执行成功 - 返回 'true'
return(true);
}
如果指标放到另外的文件夹, 例如 \MQL5\Indicators\Examples\, 指标的路径应该如下:
parameters[0].string_value="Examples\\Candels High Open.ex5";
买入和卖出信号:
因为 Candels High Open 指标在缓冲区中只包含三个值:
- "+1" - 买入信号
- "0" - 没有信号
- and "-1" - 卖出信号
交易信号模块也是一样:
//+------------------------------------------------------------------+
//| 返回买入信号量 |
//+------------------------------------------------------------------+
int CSignalCHO::LongCondition()
{
int signal=0;
//--- 对于根据订单时刻工作 idx=0, 对于根据完成的柱工作 idx=1
int idx=StartIndex();
//--- 最后完成柱的信号值
double ind_value=Signal(idx);
//---
if(ind_value>0.0)
{
signal=100; // 出现了买入信号
}
//--- 返回信号值
return(signal);
}
//+------------------------------------------------------------------+
//| 返回卖出信号量 |
//+------------------------------------------------------------------+
int CSignalCHO::ShortCondition()
{
int signal=0;
//--- 对于根据订单时刻工作 idx=0, 对于根据完成的柱工作 idx=1
int idx=StartIndex();
//--- 最近完成柱的信号值
double ind_value=Signal(idx);
//---
if(ind_value<0.0)
{
signal=100; // 生成卖出信号
}
//--- 返回信号值
return(signal);
}
//| 返回买入信号量 |
//+------------------------------------------------------------------+
int CSignalCHO::LongCondition()
{
int signal=0;
//--- 对于根据订单时刻工作 idx=0, 对于根据完成的柱工作 idx=1
int idx=StartIndex();
//--- 最后完成柱的信号值
double ind_value=Signal(idx);
//---
if(ind_value>0.0)
{
signal=100; // 出现了买入信号
}
//--- 返回信号值
return(signal);
}
//+------------------------------------------------------------------+
//| 返回卖出信号量 |
//+------------------------------------------------------------------+
int CSignalCHO::ShortCondition()
{
int signal=0;
//--- 对于根据订单时刻工作 idx=0, 对于根据完成的柱工作 idx=1
int idx=StartIndex();
//--- 最近完成柱的信号值
double ind_value=Signal(idx);
//---
if(ind_value<0.0)
{
signal=100; // 生成卖出信号
}
//--- 返回信号值
return(signal);
}
当通过MQL5向导生成EA交易时,搜索描述为 "Analyzing High and Open of the last three bars" ("分析最近三个柱的最高价和开盘价")的信号模块:
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/16861

Candels High Open 指标分析了最近三个柱的最高价和开盘价。

在输入参数中带有时段选项,并且以分形标签形式显示数值的 Zigzag2_R_Color 指标。

CandelsHighOpen EA交易是基于 Candels High Open 指标交易信号模块的。EA 有进行市场交易和挂单的功能,以及可以基于抛物线SAR指标设置移动止损。

Original Turtle Rule Trader EA 交易实现了在 "The Original Turtle Trading Rules(最初的海龟交易规则)" 一书中描述的交易系统。EA的代码中实现了 Donchian 通道的显示, 资金管理,建仓和加仓以及移动止损水平。