首页 系统交易 帖子

利用MQL5 Wizard创建基于反转蜡烛图模式的交易信号

附件
268.zip (4.16 KB, 下载 0次)

MQL5 Wizard 让我们能够自动创建交易系统(EA),即使没有编程经验也能轻松使用。

在这个系统中,CSignalCandles 类提供了基于反转蜡烛图模式的交易信号。这个策略被称为 “基于反转蜡烛图模式的信号”,可以通过MQL5 Wizard自动创建EA。

这个系统的核心思想是通过计算复合蜡烛图来识别反转模式。反转模式类似于日本蜡烛图分析中的“锤子”和“吊人”模式,但它采用的是复合蜡烛图,而不是单根蜡烛图,并且不需要小蜡烛体来确认反转。

输入参数包括:

  • 范围(Range) - 用于计算复合蜡烛图的最大蜡烛数。
  • 最小值(Minimum) - 复合蜡烛图的最小尺寸(以常规点数表示)。
  • 大影线(ShadowBig)和小影线(ShadowSmall) - 复合蜡烛图影线的大小。
  • 限价(Limit)、止损(StopLoss)和止盈(TakeProfit) - 开盘价、止损和止盈水平,相对于复合蜡烛图的收盘价。
  • 过期时间(Expiration) - 订单过期时间(以蜡烛数表示),用于处理挂单交易(Limit!=0.0)。

反转蜡烛图模式的确定方法如下:

系统从最近完成的蜡烛(索引1)开始,计算复合蜡烛图的参数,直到范围输入参数指定的蜡烛数。如果复合蜡烛图的大小大于最小值参数指定的值,则会通过分析其影线来检查复合蜡烛图的反转条件。

熊市的力量通过复合蜡烛图上影线的大小来表征,而牛市的力量通过下影线的大小来表征。

  • 确认熊市趋势反转(牛市开始)需要满足以下条件:下影线的大小(牛市力量)必须大于大影线输入参数指定的值,而上影线的大小(熊市力量)必须小于小影线输入参数指定的值。
  • 确认牛市趋势反转(熊市开始)需要满足以下条件:上影线的大小(熊市力量)必须大于大影线输入参数指定的值,而下影线的大小(牛市力量)必须小于小影线输入参数指定的值。

除了反转策略,还可以通过指定负值的限价输入参数来使用突破策略(参见 MQL5 Wizard - 基于两条EMA交叉的交易信号,带有日内时间过滤)。

根据限价的不同,市场进入方式有三种:

  1. Limit>0. 它将在价格回调时进入,价格优于市场价格(根据交易信号下达买入限价或卖出限价挂单)。
  2. Limit<0. 它将在价格趋势方向上进入(根据交易信号使用买入止损或卖出止损挂单)。
  3. Limit=0. 它将使用市场价格进行交易。

这个策略在CSignalCandles类中实现。

图1. 基于反转蜡烛图模式的交易信号

图1. 基于反转蜡烛图模式的交易信号


交易信号

交易信号在CSignalCandles类中实现,使用Candle()函数进行分析:

int  Candle(int ind); // 根据复合蜡烛图类型返回正数/负数                         // 返回值是复合蜡烛图中蜡烛的数量(从ind开始)

构建复合蜡烛图时可以使用多个蜡烛(条)。最少的蜡烛数量由范围参数定义。在某些情况下,复合蜡烛图可以用少于范围的蜡烛形成(当满足大小/影线条件时)。如果复合蜡烛图不能形成,Candle函数将返回0。


1. 开立多头头寸

开立多头头寸需要形成牛市复合蜡烛图。函数将检查这一点,并在复合蜡烛图尚未形成或是熊市时返回。否则,它会计算复合蜡烛图的大小(所需的价格、止损和止盈水平计算)并计算挂单的价格水平。

请注意,挂单类型(买入限价或买入止损)取决于限价输入参数的符号(如果Limit=0或|price-ask|<止损水平,则会下达市场买单;如果Limit>0,则会下达买入限价挂单;如果Limit<0,则会下达买入止损挂单)。

//+------------------------------------------------------------------+ //| 检查开立多头头寸的条件                | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)   { //--- 检查牛市复合蜡烛图形成的事实    if(Candle(1)<=0) return(false); //--- 获取复合蜡烛图的大小    double size=m_high_composite-m_low_composite; //--- 计算挂单价格    price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size); //--- 计算止损价格    sl   =m_symbol.NormalizePrice(price-m_stop_loss*size); //--- 计算止盈价格    tp   =m_symbol.NormalizePrice(price+m_take_profit*size); //--- 设置订单过期时间    expiration+=m_expiration*PeriodSeconds(m_period); //--- 条件满足,返回true    return(true);   }

2. 平掉多头头寸

如果形成了熊市复合蜡烛图,则平掉多头头寸。

//+------------------------------------------------------------------+ //| 检查平掉多头头寸的条件                         |//+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseLong(double& price)   { //--- 检查熊市复合蜡烛图形成的事实    if(Candle(1)>=0) return(false); //---    price=0.0; //--- 条件满足,返回true    return(true);   }


3. 开立空头头寸

开立空头头寸需要形成熊市复合蜡烛图。如果复合蜡烛图尚未形成,或不是熊市,则返回。否则,我们将确定其大小并计算挂单的价格水平。

(订单类型取决于限价输入参数的符号,见“开立多头头寸”)。

//+------------------------------------------------------------------+ //| 检查开立空头头寸的条件(卖出)                  | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)   { //--- 检查熊市复合蜡烛图形成的事实    if(Candle(1)>=0) return(false); //--- 获取复合蜡烛图的大小    double size=m_high_composite-m_low_composite; //--- 计算挂单价格    price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size); //--- 计算止损价格    sl   =m_symbol.NormalizePrice(price+m_stop_loss*size); //--- 计算止盈价格    tp   =m_symbol.NormalizePrice(price-m_take_profit*size); //--- 设置订单过期时间    expiration+=m_expiration*PeriodSeconds(m_period); //--- 条件满足,返回true    return(true);   }


4. 平掉空头头寸

如果形成了牛市复合蜡烛图,则平掉空头头寸。

//+------------------------------------------------------------------+ //| 检查平掉空头头寸的条件                        |//+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseShort(double& price)   { //--- 检查牛市复合蜡烛图形成的事实  if(Candle(1)<=0) return(false); //---    price=0.0; //--- 条件满足,返回true    return(true);   }

使用MQL5 Wizard创建专家顾问

要基于该策略创建交易机器人,您需要在MQL5 Wizard的“创建现成的专家顾问”选项中选择信号属性为“基于反转蜡烛图模式的信号”

图2. 在MQL5 Wizard中选择基于反转蜡烛图模式的信号

图2. 在MQL5 Wizard中选择基于反转蜡烛图模式的信号

接下来,您需要指定所需的跟踪止损算法和资金和风险管理系统。专家顾问的代码将自动生成,您可以编译并在MetaTrader 5客户端终端的策略测试器中进行测试。


测试结果

我们来看看在历史数据上回测专家顾问的情况(EURUSD M15,测试周期:2010年1月1日-2011年1月5日,范围=3,最小值=50,大影线=0.5,小影线=0.2,限价=0,止损=2.0,止盈=1.0,过期时间=4)。

在创建专家顾问时,我们使用了固定手数(固定手数交易, 0.1),未使用跟踪止损算法(未使用跟踪)。

图3. 基于反转蜡烛图模式的专家顾问测试结果

图3. 基于反转蜡烛图模式的专家顾问测试结果


附件: SignalCandles.mqh文件和CSignalCandles类必须放置在terminal_data_folder\MQL5\Include\Expert\Signal文件夹中。

expert_candles.mq5文件包含使用MQL5 Wizard创建的专家顾问的代码。


相关帖子

评论 (0)