简介:
借助MQL5向导,交易者可以根据交易信号类别、持仓跟踪和资金管理,自动生成交易系统的代码。结合标准库中的交易信号类别,您可以开发和测试自己的交易系统。只需编写一个交易信号模块即可。
书籍《全球顶尖交易员的策略》(俄文)中描述了涉及MetaStock软件包的技术分析的指标和交易策略。除了常规的交易信号外,书中还探讨了基于蜡烛图反转形态与随机指标、CCI、MFI以及RSI的结合使用的信号。
将“反转”蜡烛图形态与振荡器信号结合使用,可以减少虚假信号的数量,并提高交易系统的有效性。
在之前的文章中,我们探讨了基于蜡烛图形态与随机指标确认的交易信号:
在本描述中,我们将考虑将所有这些模型与随机指标信号结合使用的结果。
1. 看涨和看跌蜡烛图模型及其检测
CandlePattern 类中也包含了检测某些看涨和看跌蜡烛图形态(除了锤头/吊人组合)的函数。
检查看跌蜡烛图形态的形成通过 CheckPatternAllBullish() 函数来完成:
//+------------------------------------------------------------------+ //| 检查看涨形态的形成 | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternAllBullish() { return(CheckPatternThreeWhiteSoldiers() || CheckPatternPiercingLine() || CheckPatternMorningDoji() || CheckPatternBullishEngulfing() || CheckPatternBullishHarami() || CheckPatternMorningStar() || CheckPatternBullishMeetingLines()); }
检查看跌蜡烛图形态的形成通过 CheckPatternAllBearish() 函数来完成:
//+------------------------------------------------------------------+ //| 检查看跌形态的形成 | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternAllBearish() { return(CheckPatternThreeBlackCrows() || CheckPatternDarkCloudCover() || CheckPatternEveningDoji() || CheckPatternBearishEngulfing() || CheckPatternBearishHarami() || CheckPatternEveningStar() || CheckPatternBearishMeetingLines()); }
2. 与随机指标结合的交易信号
当形成看涨/看跌模型并且有来自随机指标的确认时,开仓。%D信号线的值应在相应的临界水平(30和70)以上或以下。
退出信号有两种情况:
- 当形成相反的蜡烛图形态时(对于多头头寸为看跌形态,对于空头头寸为看涨形态)。
- 根据%D的后续表现。如果%D达到与市场相反的水平(多头为80,空头为20),或如果%D未确认反转信号,达到多头20和空头80的值。
检查市场进出条件的操作在以下方法中进行:
- int CCP_Stoch::LongCondition() - 检查开多头仓位(m_pattern_0)和关闭空头仓位(m_pattern_1)的条件;
- int CCP_Stoch::ShortCondition() - 检查开空头仓位(m_pattern_0)和关闭多头仓位(m_pattern_1)的条件。
2.1. 开多头仓位并关闭空头仓位
-
开多头仓位的信号是形成看涨蜡烛图组合并满足 StochSignal(1)<30 条件(随机指标在上一个完成的柱上的信号线值小于30);
-
关闭空头仓位的信号是形成其中一个看涨蜡烛图形态,或者随机指标线向上穿越20水平线或向上穿越80水平线。
//+------------------------------------------------------------------+ //| 检查市场模型是否形成 | //| 检查条件以开空头仓位(m_pattern_0)和退出多头仓位(m_pattern_1) | //+------------------------------------------------------------------+ int CCP_Stoch::LongCondition() { int res=0; //---- 检查开空头仓位的条件 //---- 形成看涨形态且随机指标信号线<30 if(CheckPatternAllBullish() && (StochSignal(1)<30)) res=m_pattern_0; // 开多头仓位的信号 //--- 检查空头仓位关闭的条件 //--- 形成看跌形态或信号线的交叉(向上20,向上80) if(CheckPatternAllBullish() || ((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80))) res=m_pattern_1; // 信号关闭空头仓位 //--- return(res); }
2.2. 开空头仓位并关闭多头仓位
-
开空头仓位的信号是形成其中一个看跌蜡烛图形态,并满足 StochSignal(1)>70 条件(随机指标在上一个完成的柱上的信号线值大于70);
-
关闭多头仓位的信号是形成其中一个看跌蜡烛图形态,或者随机指标线向下穿越80水平线或向下穿越20水平线。
//+------------------------------------------------------------------+ //| 检查市场模型是否形成 | //| 检查条件以开空头仓位(m_pattern_0)和退出多头仓位(m_pattern_1) | //+------------------------------------------------------------------+ int CCP_Stoch::ShortCondition() { int res=0; //--- 检查开空头仓位的条件 //---- 形成看跌形态且随机指标信号线>70 if(CheckPatternAllBearish() && (StochSignal(1)>70)) res=m_pattern_0; // 开空头仓位的信号 //--- 检查多头仓位关闭的条件 //---- 形成看跌形态或 信号线交叉(向下80,向下20) if(CheckPatternAllBearish() || ((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20))) res=m_pattern_1; // 信号关闭多头仓位 //--- return(res); }
2.3. 基于“蜡烛图形态+随机指标”的反转形态创建交易专家顾问
CCP_Stoch类不包含在标准的交易信号库中。因此,请下载ccp_stoch.mqh文件(附加),并将其保存到\terminal_folder\Include\Expert\Signal\MySignals目录中使用。candlepatterns.mqh文件也应复制到与ccp_stoch.mqh相同的目录。之后,请重新启动MetaEditor以便在MQL5向导中使用该文件。
要根据此策略通过MQL5向导创建交易机器人,请在第二步选择“基于蜡烛图形态+随机指标的信号”信号类型:

图1. 在MQL5向导中选择“基于蜡烛图形态+随机指标”的信号生成器
在随后的步骤中,指定所需的追踪止损类型和资金管理系统。专家顾问的代码将自动生成。现在,它应该被编译以准备开始测试。
2.4. 测试结果
基于历史数据的专家顾问测试结果(EURUSD H1,测试周期:2000.1.1-2011.2.2,PeriodK=33,PeriodD=37,PeriodSlow=30,MA_period=25)。
该专家顾问使用固定交易量为0.1手的模块(固定手数交易)。未使用追踪止损(未使用追踪)。

图2. 基于“蜡烛图形态+随机指标”交易信号生成器的专家顾问测试结果
可以使用MetaTrader 5的策略测试器找到最佳的交易系统参数。
由MQL5向导创建的专家顾问代码附在expert_cp_stoch.mq5文件中。
评论 0