MQL5 向导 - 基于反转烛台模式的交易信号 - MetaTrader 5 专家




MQL5 向导提供自动创建 EA 交易(请参阅MQL5 向导:无需编程即可创建 EA 交易)。
CSignalCandles 类提供基于反转烛台模式的交易信号。该策略称为“基于反转烛台形态的信号”(在 MQL5 向导中自动创建 EA 时)。
该系统的想法是通过计算复合蜡烛来识别反转模式。反转形态类似于日本烛台分析中的“锤子”和“上吊线”形态。但它使用复合蜡烛而不是单一蜡烛,并且不需要复合蜡烛的小实体来确认反转。
输入参数:
反转烛台模式确定如下。
它计算从最近完成的柱(索引为 1)到由范围输入参数定义的柱数量的复合蜡烛参数。如果复合蜡烛尺寸大于最小输入参数指定的值,它将通过分析其阴影来检查复合蜡烛的反转条件。
空头力量以复合蜡烛上影线的大小为特征,多头力量以下影线的大小为特征。
除了反转策略之外,还可以通过指定 Limit 输入参数的负值来使用细分策略(请参阅MQL5 向导 - 基于两个 EMA 交叉和日内时间过滤器的交易信号)。
根据限制,使用三种不同的市场进入方式:
该策略在 CSignalCandles 类中实现。

图 1. 基于反转烛台模式的交易信号
交易信号在 CSignalCandles 类中实现,有一个 Candle() 函数,用于分析:
整数 蜡烛(整数工业);// 根据复合蜡烛的类型返回正/负数 // 返回值是复合蜡烛中的柱(蜡烛)数量(从 ind 开始)
多个蜡烛(条)可用于构造复合蜡烛。最小柱数由 Range 参数定义。在某些情况下,复合蜡烛可以由小于范围的蜡烛形成(当满足大小/阴影条件时)。如果无法形成复合蜡烛,Candle 函数将返回 0。
1. 开多仓
要开立多头头寸,需要看涨复合蜡烛。该函数对其进行检查,如果复合蜡烛尚未形成或复合蜡烛为看跌则返回。另一方面,它计算复合蜡烛尺寸(计算价格、止损和止盈水平所需)并计算挂单的价格水平。
请注意,挂单类型(Buy Limit 或 Buy Stop)取决于 Limit 输入参数的符号(如果 Limit=0 或 |price-ask|
//+------------------------------------------------------------------+ //|检查开立多头头寸的条件(买入) | //+------------------------------------------------------------------+ 布尔值CSignalCandles::CheckOpenLong(双倍的& 价格,双倍的&SL,双倍的& tp、日期时间和到期日) {//--- 检查看涨复合蜡烛形成的事实 如果(蜡烛(1)<=0)返回(错误的);//--- 获取复合蜡烛的大小 双倍的尺寸=m_high_composite-m_low_composite;//--- 计算挂单价格 价格=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size);//--- 计算止损价格 sl =m_symbol.NormalizePrice(价格-m_stop_loss*size);//--- 计算止盈价格 tp =m_symbol.NormalizePrice(价格+m_take_profit*大小);//--- 设置订单到期时间 过期+=m_expiration*PeriodSeconds(m_period);//--- 条件满足,返回true 返回(真的); }
2. 多头平仓
如果看跌复合蜡烛已经形成,则多头头寸被平仓。
//+------------------------------------------------------------------+ //|检查平仓条件 | //+------------------------------------------------------------------+ 布尔值CSignalCandles::CheckCloseLong(双倍的& 价格) {//--- 检查看跌复合蜡烛形成的事实 如果(蜡烛(1)>=0)返回(错误的);//--- 价格=0.0;//--- 条件满足,返回true 返回(真的); }
3. 开空仓
必须形成看跌复合蜡烛才能开空头头寸。如果复合蜡烛未形成,或者不是看跌,则返回。另外,我们确定其大小并计算挂单的价格水平
(订单类型取决于 Limit 输入参数的符号,请参阅“开多头仓位”)。
//+------------------------------------------------------------------+ //|检查开空头寸(卖出)的条件 | //+------------------------------------------------------------------+ 布尔值CSignalCandles::CheckOpenShort(双倍的& 价格,双倍的&SL,双倍的& tp、日期时间和到期日) {//--- 检查看跌复合蜡烛形成的事实 如果(蜡烛(1)>=0)返回(错误的);//--- 获取复合蜡烛的大小 双倍的尺寸=m_high_composite-m_low_composite;//--- 计算挂单价格 价格=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size);//--- 计算止损价格 sl =m_symbol.NormalizePrice(价格+m_stop_loss*大小);//--- 计算止盈价格 tp =m_symbol.NormalizePrice(价格-m_take_profit*size);//--- 设置订单到期时间 过期+=m_expiration*PeriodSeconds(m_period); //--- 条件满足,返回true 返回(真的); }
4. 平仓
如果看涨复合蜡烛已经形成,则空头头寸被平仓。
//+------------------------------------------------------------------+ //|检查空头平仓条件 | //+------------------------------------------------------------------+ 布尔值CSignalCandles::CheckCloseShort(双倍的& 价格) {//--- 检查看涨复合蜡烛形成的事实 如果(蜡烛(1)<=0)返回(错误的);//--- 价格=0.0;//--- 条件满足,返回true 返回(真的); }
使用 MQL5 向导创建 EA 交易
要根据策略创建交易机器人,您需要将信号属性选择为“基于反转烛台模式的信号” 在“创建现成的 EA 交易”选项中MQL5 向导:

图 2. 在 MQL5 向导中选择“基于反转烛台模式的信号”
接下来你必须指定需要的追踪止损算法和资金和风险管理系统。 Expert Advisor 的代码将自动创建,您可以对其进行编译和测试策略测试仪MetaTrader 5 客户端。
测试结果
让我们考虑一下 EA 交易对历史数据的回溯测试(EURUSD M15,测试期:2010 年 1 月 1 日-2011 年 1 月 5 日,范围=3,最小值=50,ShadowBig=0.5,ShadowSmall=0.2,限制=0,止损=2.0,获利=1.0,到期=4)。
在创建 EA 交易时,我们使用了固定交易量 (交易固定手数, 0.1), 未使用追踪止损算法 (未使用尾随)。

附件:带有 CSignalCandles 类的 SignalCandles.mqh 必须放置在terminal_data_folder\MQL5\Include\Expert\Signal 文件夹中。
Expert_candles.mq5包含使用 MQL5 向导创建的 EA 交易的代码。
附件下载
📎 signalcandles.mqh (19.85 KB)
📎 expert_candles.mq5 (6.45 KB)
Source: MQL5 #268
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
