学习如何基于 Ichimoku 设计交易系统
概述
欢迎阅读本系列的一篇新文章,在本文中,您可以学到如何利用最常见的技术指标设计交易系统。 在本文中,我们将详细学习一种新的技术工具,及如何基于该指标的主要概念或思路,配以简单策略创建简单的交易系统。
我们会通过以下主题涵盖该指标:
贯穿 Ichimoku 定义的整个主题,我们将学到什么是 Ichimoku,指标的结构是什么,我们如何计算它,以及它衡量什么。 由此,我们将详细学习该指标,了解其背后的主要概念,以便能够有效地运用它。 Ichimoku 策略则是我们要学习贯彻的主题,配合指标背后的基本概念的简单策略。 然后,我们将为每个提到的策略设计一个分步的策略蓝图,来帮助我们为它们创建一款交易系统,我们将通过 Ichimoku 策略蓝图的主题了解这一点。 除此之外,我们将学习本文中最有趣的部分,其核心是如何利用 MQL5 创建一个交易系统,并在 MetaTrader 5 交易平台中执行每个提到的策略,如同我们在 Ichimoku 交易系统主题里学到的这些。
我们将采用 MetaQuotes 语言(MQL5),这是 MetaTrader 5 中的内置编辑器。 如果您想知道如何下载 MetaTrader 5,并使用 MetaEditor,请您阅读上一篇文章中的在 MetaEditor 里编写 MQL5 代码主题。
我建议您测试所有的内容,并练习您所读的内容,因为如此非常有助于加深您的理解,或为您打开视野,接受新的想法。
免责声明:本文的所有内容仅用于教学目的,并非出于任何其它目的。 故此,您根据本文内容采取的任何行动应自行负责,因为本文内容不保证任何结果。
现在,我们观阅这篇新文章及其主题,开启学习之旅。
Ichimoku 定义
在这一部分中,我们辨别 Ichimoku 指标是什么、它衡量什么、它的结构、以及我们如何计算它,进而来详细了解它。 因此,我们可以深入理解我们需要的有关指标的所有信息,从而在以后能有效运用。
Ichimoku 指标是由 Goichi Hosoda 开发的。 它是日本学校里的工具之一,能用来获得更多关于金融产品的认知,因为我们可以识别趋势方向、支撑和阻力、动量、及交易信号。 如果您想了解更多有关如何识别趋势的信息,可以阅读上一篇文章中的趋势定义。
它有五个图板:
- Tenkan-Sen (转换线)
- Kijun-Sen (基准线)
- Senkou Span A (前导跨距 A)
- Senkou Span B (前导跨距 B)
- Chikou Span (滞后跨距)
现在,我们需要学习如何手工计算 Ichimoku 指标,从而了解该指标背后的概念、及如何有效运用该指标。 如此,我们将通过计算 Ichimoku 中的每个元素来学习这一点。
Tenkan-Sen (转换线)= (9 周期高点 + 9 周期低点)/2
Kijun-Sen (基准线)= (26 周期高点 + 26 周期低点)/2
Senkou Span A (前导跨距 A) = (Tenkan-Sen + Kijun-Sen)/2 但它是在未来的 26 个周期后才被绘制
Senkou Span B (前导跨距 B)= (52 周期高点 + 52 周期低点)/2 但它也是在未来的 26 个周期后才被绘制
Chikou Span (滞后跨距)= 今日收盘,但它绘制的是过去 26 周期的数值
如今,我们不需要手工计算,但我们现在是在学习指标背后的概念。 我们有包含该指标的交易平台,我们只需在图表上从可用指标中选择 Ichimoku,无需任何计算。 在此,我们需要将 Ichimoku 指标插入 MetaTrader5 中的图表,我们从菜单的插入选项卡 --> 指标 --> Ichimoku Kinko Hyo
顺便说一下,Ichimoku 也称作 Ichimogu Kinko-Hyo。
之后,我们将发现指标的窗口如下所示:
上一张图片设置指标的所需参数:
1- 设置 Tenkan sen 的周期
2- 设置 Kijun sen 的周期
3- 设置 Senkou 跨距 B 的周期
我们还可以从“颜色”选项卡中设置所需的指标样式和外观:
1- 选择 Tenkan sen 的颜色
1A- 选择 Tenkan sen 线的样式
1B- 选择 Tenkan sen 线的宽度
2- 选择 Kijun sen 的颜色:
2A- 选择 Kijun 线的样式
2B- 选择 Kijun 线的宽度
3- 选择 Chikou 跨距的颜色
3A- 选择 Chikou 跨距的样式
3B- 选择 Chikou 跨距的宽度
4- 选择云上移时的颜色(Up Kumo)
4A- 选择云上移时的样式(Up Kumo)
4B- 选择云上移时的宽度(Up Kumo)
5- 选择云下移时的颜色(Down Kumo)
5A- 选择云下移时的样式(Down Kumo)
5B- 选择云下移时的宽度(Down Kumo)
我们的首选项设置完毕后,我们可以在图表上找到与以下相同的指标。
正如我们从上图中图表上的指标所看到的,蓝色和红色的线是 Tenkan Sen 和 Kijun Sen,绿色的线是 Chikou Span,这是根据时间帧绘制的过去 26 小时的收盘价,此外还有云(Senkou Span A 和 Senkou Span B),将在未来 26 小时绘制,它是红色的,这意味着它正在向下移动。
Ichimoku 策略
在本主题中,我们将学习如何基于 Ichimoku 指标的基本概念,配合简单策略,加以运用。 我们将见识一种利用 Ichimoku 趋势识别器识别趋势的策略。 我们将要学习的策略,可依据 Ichimoku 强度策略告知我们趋势的强度,然后我们还要学习基于两种不同交叉方法的策略,在出现看涨或看跌信号时可提醒我们,如同我们通过 Ichimoku price-Ki 信号策略和 Ichimoku ten-Ki 信号策略看到的那样。
在开始涉及策略之前,我需要在此确认,您必须在运用任何策略之前先行测试,即使它曾经过测试,也要如此,因为没有任何策略能够适合所有人。 我们当中的每个人都有自己特点的交易个性,或个人交易风格。 故此,适合我的,并不意味着适合您。
除此之外,即使您发现该策略的思路或概念适合您,您依然会发现必须优化之后才能对您有用。 因此,在测试和发现它对您有用之前,不要在您的实盘帐户上运行任何策略,这一点至关重要。
- 策略一:Ichimoku 趋势识别器:
根据这一策略,我们需要一个触发器,可以用来通知我们趋势类型,譬如是上升趋势或下降趋势。 我们将检查三个值,这些值是收盘价、Senkou Span A 和 Senkou Span B。如果收盘价大于 Senkou Span B,与此同时收盘价也大于 Senkou Span A,这会触发已知趋势上升。 反之亦然,如果收盘价低于 Senkou Span B,与此同时收盘价低于 Senkou Span A,这将触发下跌趋势。
收盘价 > Senkou Span B 且收盘价 > Senkou Span A --> 上升趋势
收盘价 < Senkou Span B 且收盘价 < Senkou Span A --> 下跌趋势
- 策略二:Ichimoku 趋势强度:
基于这一策略,我们需要一个触发器,可以告知我们当前趋势是否强劲。 为此,我们将检查三个值,这些值是当前 Senkou Span A、前期 Senkou Span A 和 Senkou Span A。如果当期 Senkou Span A 大于前期 Senkou Span A,同时当期 Senkou Span A 大于 Senkou Span B,则这是趋势上升且强劲的触发因素。 反之亦然,如果当期 Senkou Span A 低于前期 Senkou Span A ,同时,当期 Senkou Span A 低于 Senkou Span AB,则这将是趋势下降且强劲的信号。
当期 Senkou Span A > 前期 Senkoo Span A 且当期 Senkuo Span A > Senkou spanb --> 上升趋势强劲
当期 Senkou Span A < 前期 Senkou Span A 且当期 Senkou Span A < Senkou Span B --> 下跌趋势强劲
- 策略三: Ichimoku 价格-Ki 信号:
Accordi根据这一策略,在上升趋势期间,我们需要一个能够提醒我们看涨信号的触发器,而在下降趋势期间,则需要一个能够提醒我们看跌信号的触发器。 我们将根据该策略检查两个值,收盘价和 Kijun-Sen。 如果收盘价大于 Kijun sen 值,则触发看涨信号。 反之亦然,如果收盘价低于 Kijun sen 值,这是一个看跌信号。
在上涨趋势中,收盘价 > kijum-sen --> 看涨信号
在下跌趋势中,收盘价 < kijum-sen --> 看跌信号
- 策略四: Ichimoku ten-ki 信号:
根据这一策略,在上升趋势期间,我们需要另一个触发器或方法来提醒我们何时有看涨信号;或者在下降趋势中,我们需要看跌信号。 我们将根据该策略检查两个值,Tenkan-sen 和 Kijum-sen。 如果 Tenkan sen 值大于 Kijun sen,则是看涨信号。 反之亦然,如果收 Tenkan-sen 低于 Kijun sen 值,这是一个看跌信号。
Tenkan-sen > Kijun-sen --> 看涨信号
Tenkan-sen < Kijun-sen --> 看跌信号
Ichimoku 策略蓝图
在这一部分中,我们将为每个策略创建一个蓝图,我认为这一步是我们创建交易系统任务中最重要的步骤,因为它能帮助我们设计一个分步蓝图,从而令我们准确地理解我们想要做什么。
- 策略一:Ichimoku 趋势识别器:
基于这一策略,我们需要创建一个能够持续检查收盘价、Senkou Span A 和 Senkou Span B 数值的交易系统。 我们需要交易系统在这些值之间进行比较,以便决定哪个值更大或更小,以此决定是否存在上升趋势或下降趋势,并在图表上显示收盘价和 Ichimoku 指标线的数值。 如果收盘价大于 span B ,且收盘价大于 span A,则趋势向上。 如果收盘价低于 span B ,且收盘价大于 span A,则趋势向下。
- 策略二:Ichimoku 趋势强度:
基于这一策略,我们需要创建一个交易系统来提醒我们当前趋势的强度。 因此,我们需要交易系统连续检查当期 Senkou span A、前期 Senkou span A 和 Senkou span B 的值。 我们需要交易系统在这些值之间进行比较,以便决定哪个值更大或更小,从而在此基础上返回当前趋势的强度。 如果当期 span A 大于前期 span A,且当期 span A 小于 span B,则趋势向上且强劲,并在图表注释上显示 Ichimoku 指标线的值。
- 策略三: Ichimoku 价格-Ki 信号:
根据这一策略,我们需要创建一个交易系统,以便在图表注释里显示一行带有看涨或看跌信号,以及收盘价和 Kijun-sen 指标线值。 因此,我们需要交易系统不断检查收盘价和 Kijun-sen 线的值,并进行比较,以此决定哪一个更大或更小。 如果收盘价大于 Kijun sen,则在图表注释里显示看涨信号、收盘价和 KijunSen 值。 如果收盘价低于 Kijun sen,则在图表注释里显示看跌信号、收盘价和 Kijun sen 值。
- 策略四: Ichimoku ten-ki 信号:
根据这一策略,我们需要创建一个交易系统,根据 Tenkan sen 和 Kijun 值之间的比较,在图表注释里显示看涨或看跌信号,以便决定哪个更大或更小。 因此,我们需要交易系统连续检查这两个值,即 Tenkan Sen 值 Kijun Sen 值,以便返回看涨信号,如果 Tenkan Sen 值大于 Kijun Sen 值,则返回看跌信号;如果 TenkanSen 值低于 KijunSen 值时,返回看跌信号。
Ichimoku 交易系统
在这一部分中,我们将学习如何根据上述策略设计一宽基于 Ichimoku 指标的交易系统。 因此,除了 Tenken-sen 和 Kijun-sen 策略之外,我们将学习如何设计基于 Ichimoku 趋势识别策略、趋势强度策略、价格和 KijunSen 策略的交易系统。
现在,我们将设计一个简单 Ichimoku 系统,把所有 Ichimoku 值显示在图表上的注释里,作为上述策略的基础。
我们把 #include 命令指到文件名 Indicators/Trend.mqh,然后用 CiIchimoku 类来调用 Ichimoku 指标的数据。
#include <Indicators/Trend.mqh>
CiIchimoku*Ichimoku;
通过 void OnInit(),我们调用指标,然后创建 Tenkan sen、Kijun sen、Senkou span A、Senkoo span B 和 Chikou span 的双精度型变量值。
Ichimoku.Refresh(-1); double TenkanVal= Ichimoku.TenkanSen(0); double KijunVal= Ichimoku.KijunSen(0); double SpanAVal= Ichimoku.SenkouSpanA(-26); double SpanBVal= Ichimoku.SenkouSpanB(-26); double ChikouVal= Ichimoku.ChinkouSpan(26);
在图表注释里显示这些值,且每个值均在单独的行中。
Comment("Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal);
因此,完整代码如下所示:
//+------------------------------------------------------------------+ //| Simple Ichimoku system.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Indicators/Trend.mqh> CiIchimoku*Ichimoku; //+------------------------------------------------------------------+ void OnInit() { Ichimoku = new CiIchimoku(); Ichimoku.Create(_Symbol,PERIOD_CURRENT,9,26,52); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { Ichimoku.Refresh(-1); double TenkanVal= Ichimoku.TenkanSen(0); double KijunVal= Ichimoku.KijunSen(0); double SpanAVal= Ichimoku.SenkouSpanA(-26); double SpanBVal= Ichimoku.SenkouSpanB(-26); double ChikouVal= Ichimoku.ChinkouSpan(26); Comment("Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal); } //+------------------------------------------------------------------+
编译完这段代码后,我们将在导航窗口中找到它。
若要执行它,我们双击它,或将其拖放到图表上,即会出现 Ichimoku 系统的窗口。
按“确定”后,它将加载到图表。
以下是该系统生成的信号示例。
正如我们从前面的图片中看到的,我们发现图表上有一条注释,其值如下:
- Tenkan Sen 值
- Kijun Sen 值
- Senkou Span A 值
- Senkou Span B 值
- Chikou Span 值
- 策略一:Ichimoku 趋势识别器:
现在,我们需要设计一款交易系统,为我给出一个注释,含有该策略的当前趋势定义,下面是编写好的该策略的完整代码。
//+------------------------------------------------------------------+ //| Ichimoku trend identifier.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Indicators/Trend.mqh> CiIchimoku*Ichimoku; //+------------------------------------------------------------------+ void OnInit() { Ichimoku = new CiIchimoku(); Ichimoku.Create(_Symbol,PERIOD_CURRENT,9,26,52); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { MqlRates PArray[]; int Data=CopyRates(_Symbol,_Period,0,1,PArray); Ichimoku.Refresh(-1); double TenkanVal= Ichimoku.TenkanSen(0); double KijunVal= Ichimoku.KijunSen(0); double SpanAVal= Ichimoku.SenkouSpanA(-26); double SpanBVal= Ichimoku.SenkouSpanB(-26); double ChikouVal= Ichimoku.ChinkouSpan(26); if(PArray[0].close>SpanBVal&&PArray[0].close>SpanAVal) { Comment("The trend is up","\n", "Close Value is: ",PArray[0].close,"\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal); } if(PArray[0].close<SpanBVal&&PArray[0].close<SpanAVal) { Comment("The trend is down","\n", "Close Value is: ",PArray[0].close,"\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal); } } //+------------------------------------------------------------------+
此代码中的差异与下同:
创建 MqlRates 类型的价格数组,存储价格信息。
MqlRates PArray[];
在为数据创建整数型变量后,调用 CopyRates 函数填充价格数组。 CopyRates 函数获取 MqlRates 的历史数据。
int Data=CopyRates(_Symbol,_Period,0,1,PArray);
Ichimoku 趋势识别器策略的条件基于趋势类型,
在上升趋势的情况下:
if(PArray[0].close>SpanBVal&&PArray[0].close>SpanAVal) { Comment("The trend is up","\n", "Close Value is: ",PArray[0].close,"\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal); }
在下跌趋势的情况下:
if(PArray[0].close<SpanBVal&&PArray[0].close<SpanAVal) { Comment("The trend is down","\n", "Close Value is: ",PArray[0].close,"\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal); }
编译完这段代码后,我们可以在“智能系统”文件夹的“导航器”窗口中找到它,下面图片显示了它。
双击或将其拖放到图表上,Ichimoku 趋势标识器窗口将显示如下:
按下“确定”后,它将加载到图表上。
以下是根据策略条件生成上升趋势和下降趋势信号的示例。
上行趋势信号
正如我们在上一张图片中看到的,图表上有以下注释:
- 趋势上升
- 收盘价值
- Tenkan Sen 值
- Kijun Sen 值
- Senkou Span A 值
- Senkou Span B 值
- Chikou Span 值
该策略提供了含有不同价格和 Ichimoku 元素值的上升趋势类型。
下行趋势信号:
正如我们在上一张图片中看到的,图表上有以下注释:
- 趋势下跌
- 收盘价值
- Tenkan Sen 值
- Kijun Sen 值
- Senkou Span A 值
- Senkou Span B 值
- Chikou Span 值
该策略提供了含有不同价格和 Ichimoku 元素值的上升趋势类型。
- 策略二:Ichimoku 趋势强度:
根据这一策略,我们需要创建一个交易系统,在图表上的注释里显示趋势强度,如果趋势强劲,则显示为上升趋势或下降趋势。 以下代码是以 MQL5 编写的此交易系统,它可以做到这一点:
//+------------------------------------------------------------------+ //| Ichimoku trend strength.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Indicators/Trend.mqh> CiIchimoku*Ichimoku; //+------------------------------------------------------------------+ void OnInit() { Ichimoku = new CiIchimoku(); Ichimoku.Create(_Symbol,PERIOD_CURRENT,9,26,52); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { Ichimoku.Refresh(-1); double TenkanVal= Ichimoku.TenkanSen(0); double KijunVal= Ichimoku.KijunSen(0); double SpanAVal= Ichimoku.SenkouSpanA(-26); double SpanAPrevVal= Ichimoku.SenkouSpanA(-25); double SpanBVal= Ichimoku.SenkouSpanB(-26); double ChikouVal= Ichimoku.ChinkouSpan(26); if(SpanAVal>SpanAPrevVal&&SpanAVal>SpanBVal) { Comment("The trend is up and strong","\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Prev. Value is: ", SpanAPrevVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal); } if(SpanAVal<SpanAPrevVal&&SpanAVal<SpanBVal) { Comment("The trend is down and strong","\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Prev. Value is: ", SpanAPrevVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal); } } //+------------------------------------------------------------------+
该代码中的差异是策略的条件,
如果是强劲的上升趋势:
if(SpanAVal>SpanAPrevVal&&SpanAVal>SpanBVal) { Comment("The trend is up and strong","\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Prev. Value is: ", SpanAPrevVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal); }
如果是强劲的下跌趋势:
if(SpanAVal<SpanAPrevVal&&SpanAVal<SpanBVal) { Comment("The trend is down and strong","\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n", "Senkou Span A Prev. Value is: ", SpanAPrevVal,"\n", "Senkou Span A Value is: ", SpanAVal,"\n", "Senkou Span B Value is: ",SpanBVal,"\n", "Chikou Span Value is: ",ChikouVal); }
编译完这段代码后,我们将在导航窗口中找到它。
双击执行它,我们将发现智能系统的窗口与以下窗口相同:
按“确定”后,智能系统将加载到图表:
以下是在强势上升趋势下测试产生的信号示例:
正如我们在上图中看到的,我们可以在图表上找到具有以下值的注释:
- 趋势上升且强劲
- Tenkan Sen 值
- Kijun Sen 值
- Senkou Span A 前期值
- Senkou Span A 值
- Senkou Span B 值
- Chikou Span 值
此处,我们可以发现注释告诉我们上升趋势很强。 以下是在强下降趋势下测试产生的信号示例:
正如我们在上图中看到的,我们可以在图表上找到具有以下值的注释:
- 趋势下跌且强劲
- Tenkan Sen 值
- Kijun Sen 值
- Senkou Span A 前期值
- Senkou Span A 值
- Senkou Span B 值
- Chikou Span 值
相反,我们可以发现,注释告诉我们,下降趋势很强。
- 策略三: Ichimoku 价格-Ki 信号:
根据这一策略,我们需要创建一款交易系统,根据价格和 Kijun sen 之间的交叉,在图表上生成带有看涨或看跌信号的注释,以下是完整的代码。
//+------------------------------------------------------------------+ //| Ichimoku Price-Ki signal.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Indicators/Trend.mqh> CiIchimoku*Ichimoku; //+------------------------------------------------------------------+ void OnInit() { Ichimoku = new CiIchimoku(); Ichimoku.Create(_Symbol,PERIOD_CURRENT,9,26,52); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { MqlRates PArray[]; int Data=CopyRates(_Symbol,_Period,0,1,PArray); Ichimoku.Refresh(-1); double TenkanVal= Ichimoku.TenkanSen(0); double KijunVal= Ichimoku.KijunSen(0); double SpanAVal= Ichimoku.SenkouSpanA(-26); double SpanBVal= Ichimoku.SenkouSpanB(-26); double ChikouVal= Ichimoku.ChinkouSpan(26); if(PArray[0].close>KijunVal) { Comment("Bullish signal","\n", "Close Value is: ",PArray[0].close,"\n", "Kijun Sen Value is: ",KijunVal,"\n"); } if(PArray[0].close<KijunVal) { Comment("Bearish signal","\n", "Close Value is: ",PArray[0].close,"\n", "Kijun Sen Value is: ",KijunVal,"\n"); } } //+------------------------------------------------------------------+
此代码中的区别:
创建并填充价格数组。
MqlRates PArray[]; int Data=CopyRates(_Symbol,_Period,0,1,PArray);
在看涨信号的情况下,Ichimoku Price Ki 策略的条件,
if(PArray[0].close>KijunVal) { Comment("Bullish signal","\n", "Close Value is: ",PArray[0].close,"\n", "Kijun Sen Value is: ",KijunVal,"\n"); }
在看跌信号的情况下,Ichimoku Price Ki 策略的条件,
if(PArray[0].close<KijunVal) { Comment("Bearish signal","\n", "Close Value is: ",PArray[0].close,"\n", "Kijun Sen Value is: ",KijunVal,"\n"); }
编译完这段代码后,我们可以在导航窗口中找到它。
拖放到图表上可以执行智能系统,将出现智能系统窗口。
按下“确定”后,它将加载到图表上。
以下是测试产生的看涨信号示例。
正如我们在前面的示例中看到的,图表上有一条注释:
- 看涨信号
- 收盘价值
- Kijun-sen 值
这一看涨信号是基于价格和 Kijun-sen 之间的交叉产生的。 以下是测试生成的看跌信号的示例。
正如我们在前面的示例中看到的,图表上有一条注释:
- 看跌信号
- 收盘价值
- Kijun-sen 值
该看跌信号是基于价格和 Kijun-sen 之间的交叉产生的。
- 策略四: Ichimoku ten-ki 策略:
根据这一策略,我们需要创建一个交易系统,根据 Tenkan sen 和 Kijun sen 之间的交叉,在图表上生成带有看涨或看跌信号的注释,以下是完整的代码。
//+------------------------------------------------------------------+ //| Ichimoku ten-Ki signal.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Indicators/Trend.mqh> CiIchimoku*Ichimoku; //+------------------------------------------------------------------+ void OnInit() { Ichimoku = new CiIchimoku(); Ichimoku.Create(_Symbol,PERIOD_CURRENT,9,26,52); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { Ichimoku.Refresh(-1); double TenkanVal= Ichimoku.TenkanSen(0); double KijunVal= Ichimoku.KijunSen(0); double SpanAVal= Ichimoku.SenkouSpanA(-26); double SpanBVal= Ichimoku.SenkouSpanB(-26); double ChikouVal= Ichimoku.ChinkouSpan(26); if(TenkanVal>KijunVal) { Comment("Bullish signal","\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n"); } if(TenkanVal<KijunVal) { Comment("Bearish signal","\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n"); } } //+------------------------------------------------------------------+
此代码中的区别是 Ichimoku ten-Ki 策略的条件,
若是看涨信号情况:
if(TenkanVal>KijunVal) { Comment("Bullish signal","\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n"); }
若是看跌信号情况:
if(TenkanVal<KijunVal) { Comment("Bearish signal","\n", "Tenkan Sen Value is: ",TenkanVal,"\n", "Kijun Sen Value is: ",KijunVal,"\n"); }
编译此代码后,我们将在导航器中找到智能系统。
双击,其窗口将如下出现:
按“确定”后,智能系统将加载到图表:
以下是基于该策略测试产生的看涨信号的示例:
正如我们在前面的示例中看到的,图表上有一条注释:
- 看涨信号
- Tenkan-sen 值
- Kijun-sen 值
该看涨信号基于 tenkan-sen 和 Kijun-sen 之间的交叉产生。 以下是根据该策略测试生成的熊市信号的示例:
正如我们在前面的示例中看到的,图表上有一条注释:
- 看跌信号
- Tenkan-sen 值
- Kijun-sen 值
该看跌信号基于 tenkan-sen 和 Kijun-sen 之间的交叉产生。
结束语
Ichimoku 指标可以作为一个完整的系统,令您在图表上以多个角度识别,正如我们在本文中所了解的,因为您据其识别趋势、趋势强度,并获得交易看涨或看跌信号。 因此,它在交易中非常有用,它可以通过一个指标从多个角度识别,从而制定更好的决策,并提高我们的结果。
我认为我们学完了很多关于这个指标的主题,尽可能多地涵盖它,但可以肯定的是,您可能会发现自己需要参阅这个指标的更多地信息,这是正常的,因为我们仅提供了关于它的基本知识,我鼓励您这样做。
在这篇文章中,我们涵盖了许多关于 Ichimoku 的主题,我们学习了它是什么,它测量什么,它的构造,以及如何依据 Ichimoku 定义来计算它。 我们学习如何基于其基本概念在简单策略里运用它,故我们学习了以下策略:
- Ichimoku 趋势识别器: 告诉我们趋势类型,是上升趋势还是下降趋势。
- Ichimoku 趋势强度: 当趋势强劲时通知我们。
- Ichimoku price-ki 信号: 当有看涨或看跌信号时通知我们。
- Ichimoku ten-ki 信号: 基于另一种方法通知我们何时有看涨或看跌信号。
我们还创建了一个分步蓝图,来帮助我们根据上述策略创建交易系统。 我们利用 MQL5 为每个提到的策略创建了一个交易系统,可在 MetaTrader 5 里运行。 我希望您自己应用本文中所学到的知识,因为实践在任何教育过程中都是非常重要的因素。 我再次确认,在将其用于您的实盘账户之前,必须测试任何策略,因为没有适合每个人的策略。
算法交易是一个令人难以置信的工具,可以帮助我们更好地进行交易,因为它可以帮助我们避免人类情绪干扰,而这可能对我们的交易有害,因为您必须知道情绪在我们的交易中起着重要作用,这将是造成损失的原因。 因此,当我们发现一个工具,其可根据我们的获胜策略自动执行交易,这将是一笔真正的财富。 除此之外,在我们的交易系统为我们工作的同时,我们还能抽出时间做其它有用的事情。
在本文章的结尾,我希望您能发现它对您提高交易水平有很大帮助。 如果您想参阅更多类似的文章,可以阅读我在本系列中的其它文章,了解如何运用最流行的技术指标设计交易系统。
本文由MetaQuotes Ltd译自英文
原文地址: https://www.mql5.com/en/articles/11081