English Русский Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
学习如何设计基于 CCI 的交易系统

学习如何设计基于 CCI 的交易系统

MetaTrader 5交易 | 27 六月 2022, 11:06
1 758 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

概述

来自我们的系列文献的新篇章,我们将学习如何基于最常用的技术指标,并配合简单的策略,来设计交易系统。 这次我们将讨论商品通道指数(CCI)指标。 像往常一样,我将尝试解释这个主题的基本原理,从而帮助您理解其思路和用法。 终极目标,这种方式可能会给您一些见解和新想法,并可在交易中运用它们。

在本文中,我们将基于 CCI 设计一款交易系统。 涵盖的主题:

我们将从商品通道指数(CCI)的详细信息开始,它衡量什么,我们如何计算它。 当理解了我们所做工作的基本原理和根源时,我们就能够更有效地运用这些工具,并发现更多关于它的思路和见解。 这就是我们将在 “CCI 定义” 主题中讨论的内容。 之后,我们将制定一个在不同行情趋势或条件下可与 CCI 一起配合运用用的简单策略 — 这是我们将在 “CCI 策略” 章节学习的内容。 然后,我们将学习如何根据这一策略设计交易系统,规划我们需要设计什么,以及我们希望计算机做什么 — “CCI交易系统蓝图” 章节。 然后,我们将学习如何设计我们规化好的交易系统蓝图 — “CCI 交易系统” 章节。

在本文中,我们将利用 MetaTrader 5 交易平台,和 MetaQuotes 语言编辑器。 您可以从以下链接下载 MetaTrader 5:https://www.metatrader5.com/zh/download

一旦下载并安装 MetaTrader 5 之后,您将看到如下图所示的终端:

MT5 终端

然后,您可以在交易终端打开的同时,按 F4 或在终端中选择工具菜单,随后单击 MetaQuotes 语言编辑器,即可打开 MetaQuotes 语言编辑器:

 MQL 打开

或按下 MetaTrader 5 工具栏中的 IDE 按钮:

MT5 IDE 按钮

在此,我需要提到编程在交易中的好处,因为它可以帮助我们严守纪律。 纪律是我们交易成功的一个重要因素,因为情绪可能会对交易有害:应该根据盈利交易计划制定正确的决策,但大多数交易者出于恐惧、贪婪或其它情绪,而无法采取正确的行动或决策。

我们可以依据我们的条件,通过程序来执行我们的交易计划,故此,我们提供了编程功能。 该程序将根据我们的规则完成我们需要做的事情,如此即可不涉及可能影响我们交易的情绪,这意味着该程序能帮助我们遵守纪律。 这就是 MQL5 派上用场的地方,因为它能帮助我们依据交易条件和计划编制程序,然后在终端中以自动执行的方式进行交易。 根据我们的交易计划,这些程序的逻辑可以从简单到非常复杂。

免责声明:本文的所有内容仅用于教学目的,不针对其它目的。 因此,您将对基于本文内容所采取的任何行动负责,因为本文内容并不保证任何结果。

现在,我们准备好开始我们的文章,来为我们的学习旅程搭建一个新的平台。 那么,我们这样做吧... 


CCI 定义

在本章节中,我们将更详尽地学习商品通道指数(CCI)指标:它衡量什么、如何计算、以及如何运用它。 

唐纳德·兰伯特(Donald Lambert)创建的商品通道指数(CCI)指标是一款动量指标,衡量当前价格相对于给定时间区段的平均价格。 兰伯特创建这一指标时,最初的目标是衡量大宗商品的周期性波动,但它也可以衡量其它金融产品。 CCI 可用于发现趋势强度和逆转,根据其作为动量指标的性质,这是正常结果。

根据 CCI 的计算及其衡量方法,当 CCI 较高时,这意味着价格远远高于其平均水平;反之亦然,当 CCI 较低时,这意味着价格远远低于其平均水平。

CCI 的计算步骤如下:

  • 获取典型价格 (TP):

TP = (最高价 + 最低价 + 收盘价)/3

  • 获取 TP 的简单移动平均值:

TP 的 SMA = TP 合计/n

  • 获取平均偏差:

平均偏差: = Abs(TP-SMA) 合计/n

  • 获取 CCI:

CCI =  (TP-TP 均值)/(0.015*平均偏差)

现在,我们举一个例子来应用此计算:

假设我们有金融产品的 14 天数据:

天数 最高价 最低价 收盘价
1 100 90 110
2 130 100 120
3 140 110 130
4 130 100 120
5 120 95 110
6 140 120 130
7 160 130 150
8 170 150 160
9 155 130 140
10 140 120 130
11 160 140 150
12   180 160 170
13   190 170 190
14   200 180 210

此处就是我们如何利用这些数据来计算 CCI:

  • 首先,我们计算典型价格(TP):

TP = (最高价 + 最低价 + 收盘价)/3

因此,计算典型价格之后,将如下所示:

示例 CCI1

  • 然后,我们依据计算出的 TP,再计算其简单移动平均值(SMA):

TP 的 SMA = TP 合计/n

结果如下:

实示例 CCI2

  • 然后,我们计算 TP 和其 SMA 之间的绝对值差,即计算平均偏差:

Abs (TP-SMA)

就是这个:

示例 CCI3

  • 现在,我们需要计算平均偏差:

平均偏差: = Abs(TP-SMA) 合计/n

示例 CCI4

  • 现在,是计算 CCI 的时候了:
CCI =  (TP-TP 均值)/(0.015*平均偏差)

CCI = (196.67-141.19)/(0.015*22.86)

CCI = 55.48/0.3429

CCI = 161.80

如今,我们不再需要手动计算指标,因为 MetaTrader 5 提供了内置的现成指标。 您可以立即从平台中选择 CCI 指标使用它,如下图所示:

CCI 插入

选择 CCI 后,将出现以下窗口:

 CCI 窗口

指标的上一个窗口显示其参数:

  • 1: 确定指标的周期。
  • 2: 为指标设置计算用的价格类型,这里我们选择典型价格。
  • 3: 设置指标样式:CCI 颜色、CCI 线型、和 CCI 线宽。

指定所有参数后,按确定,指标就会在图表上显示:

图表上的 CCI 指标

CCI 是一个在 100 和 -100 之间摇摆的振荡器


CCI 策略

在这一部分中,我们将讨论两种可采用 CCI 的简单策略。 可根据行情趋势或方向(上升趋势、下降趋势和横向)选用其中一种策略。 另一个是 CCI 的值与 0 和 100 或 -100 级别的简单交叉。 在我们讨论这些策略之前,我需要提到,有许多策略可以与 CCI 配合使用。 您最好先在一个演示账户上自行测试每一种策略,看看在您的交易中它是否管用,然后再把它用于一个实盘账户。

因此,策略如下。

第一种策略:根据行情趋势使用 CCI

    • 上行趋势期间:

      上行趋势是指在行情方向上,连创更高的低点和更高的高点,这意味着随着价格上涨,买家可以控制价格。 在这种行情条件下,我们可用 CCI 作为信号提供者,在 CCI 指示线突破高位 100 时生成买入信号。 如此,CCI > 100。 然后我们可以用另一种有效的工具,例如价格行动来获利。

      CCI > 100 = 做多

      获利了结信号可以依据另一个更有用的工具,例如价格突破之前低点的动作
        • 下行趋势期间:

          下行趋势是与上行趋势相反的趋势:价格连创更低的高点和更低的低点,这意味着卖方掌控行情,价格下跌。 在这样的行情中,CCI 也可以用来产生信号:当 CCI 线突破低位 -100 时,就会出现做空信号。 价格动作可以用来获利了结。

          CCI < -100 = 做空

          可以依据另一个更有用的工具作为获取获利回吐信号,例如突破先前高点的价格动作
            • 横盘期间:

              在横盘走势期间,我们可以发现买家和卖家之间存在一种平衡,因此从视觉上观察,没有人在行情中占优势。 它是除了上行和下行趋势之外的任意状况。

              在横盘期间,我们也可以利用 CCI 生成信号。 当 CCI 指示线突破低位 -100 时,这是做多信号;当 CCI 指示线突破高位 100 时,此刻获利了结。 或者,当 CCI 指示线突破高位 100 时,这是做空信号,而当 CCI 指示线突破低位 -100 时,此刻获利了结。

              CCI < -100 = 做多
              CCI > 100 = 获利了结
              CCI > 100 = 做空

              CCI < -100 = 获利了结

                第二种策略:零轴交叉信号:

                  在本文中,我们可以按照不同的方式运用 CCI,即我们可以根据零轴交叉入场,并根据持仓类型(做多或做空),以及与 100 和 -100 的交叉来获利了结。

                    • 对于做多信号:

                      观察 CCI 值相对于零轴。 当 CCI 值突破零轴向上时,这是做多信号;当 CCI 值突破高位 100 时,我们可以获利了结。

                      CCI > 0 = 做多
                      CCI > 100 = 获利了结

                        • 对于做空信号:

                          观察 CCI 值相对于零轴。 当 CCI 值突破零轴向下时,这是做空信号;当 CCI 值突破低位 -100 时,我们可以获利了结。

                          CCI < 0 = 做空
                          CCI < -100 = 获利了结 

                          CCI 交易系统蓝图

                          现在,我们进入本文最有趣的部分,因为我们需要对上述策略进行编程,从而在人工观察 CCI 时自动发送信号。

                          如此,我们现在需要对上述策略进行编码,并根据我们的具体需求通知计算机下一步该怎么做。 我们将按部就班地为此设计蓝图。

                            第一种策略:根据行情趋势运用 CCI:
                              • 上行趋势期间:

                                我们需要程序在每一次即时报价时来检查 CCI 值,并根据 CCI 值采取相应动作。

                                如果 CCI 高于 100,则做多,如果不是的话,则什么也不做。

                                CCI 上行趋势蓝图

                                  • 下行趋势期间:

                                    在每一次即时报价时来检查 CCI 值,并采取相应动作。

                                    如果 CCI 值低于 -100,给出做空信号;如果不是的话,则什么也不做。

                                    CCI 下行趋势蓝图

                                      • 横盘期间:

                                        在横盘期间,我们需要程序检查 CCI 值,并根其采取相应动作。

                                        如果 CCI 值低于 -100,给出做多信号,获利了结。 如果 CCI 不低于 -100,检查 CCI 是否高于 -100,且低于 100,此时什么也不做 (保持);如果 CCI 高于 100,给出做空信号,然后检查如果 CCI 低于 -100,获利了结;如果 CCI 值低于 100 且高于 -100,此时什么也不做 (保持)。

                                        CCI 横盘蓝图

                                          第二种策略:零轴交叉信号:
                                            • 对于做多信号:

                                              在每次即时报时检查 CCI 值和零轴。 当 CCI值大于零,在图表上生成一个做多信号,而当 CCI 值高于 100 时在图表上出示一个获利了结信号。

                                              零轴交叉 CCI 策略 — 做多蓝图

                                                • 对于做空信号:
                                                  在每次即时报价时检查 CCI 值和零轴,当 CCI 值低于零轴时,在图表上显示一个做空信号;而当 CCI 值低于 -100 时,给出一个获利了结信号。

                                                  零轴与 CCI 交叉策略 — 做空蓝图

                                                  CCI 交易系统

                                                  现在,我们需要编写上述策略,作为计算机执行所需操作的代码。

                                                  首先,我们需要编写一个简单的程序,在图表上显示 CCI 的值。 编程包括以下步骤:

                                                  1. 创建价格数组。
                                                  2. 从当前数据整理价格数组。
                                                  3. 定义 CCI 属性。
                                                  4. 整理结果。
                                                  5. 获取当前数据的值。
                                                  6. 绘制 CCI 值并在图表上显示这些值。

                                                  以下是如何针对前面的步骤进行编码,从而创建一个程序,令计算机自动在图表上显示 CCI 的值:

                                                  //+------------------------------------------------------------------+
                                                  //|                                            Simple CCI 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"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //Charting CCI values
                                                     Comment ("CCI Value = ",CCIValue);
                                                    }
                                                  //+------------------------------------------------------------------+

                                                  之后,我们可以在导航器中找到该程序(Simple CCI System),选择它,并在交易平台中执行:

                                                  刷新 CCI 导航器

                                                  可通过双击或拖放该程序(Simple CCI System)至图表打开。 之后,将打开以下窗口:

                                                  Simple CCI System 窗口

                                                  启用“允许算法交易”选项,并按确定后,Simple CCI System 程序(EA)将加载到图表上,并在图表上显示 CCI 值:

                                                  Simple CCI System 附加 

                                                  现在,我们来学习如何针对上述两种策略进行编码:

                                                  • 第一种策略:根据行情趋势运用 CCI:
                                                    • 上行趋势期间:

                                                  CCI > 100 = 做多


                                                  我们将执行以下步骤:

                                                  1. 为价格创建数组。
                                                  2. 从当前数据整理价格数组。
                                                  3. 定义 CCI 属性.
                                                  4. 整理结果。
                                                  5. 获取当前数据的值。
                                                  6. 设置上行趋势期间 CCI 信号条件。

                                                  以下是如何针对这些步骤进行编码:

                                                  //+------------------------------------------------------------------+
                                                  //|                                         Uptrend CCI Strategy.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"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals for uptrend
                                                     if(CCIValue> 100)
                                                     Comment ("UPTREND CCI - BUY SIGNAL ");
                                                     
                                                    }
                                                  //+------------------------------------------------------------------+
                                                  

                                                  此后,我们可以在导航器中找到该程序 Uptrend CCI Strategy:

                                                  Uptrend strategy CCI 导航器

                                                  再次双击或拖放到 图表上,即可打开该程序 CCI Uptrend Strategy。 将打开以下窗口:

                                                  Uptrend CCI strategy 窗口

                                                  启用“允许算法交易”,并按确定之后,程序(EA)— Uptrend CCI Strategy — 将附着到图表上:

                                                  Uptrend CCI strategy 附着

                                                  Uptrend CCI Strategy 的信号将根据此策略显示:

                                                  Uptrend CCI Strategy - 做多信号

                                                  • 下行趋势期间:

                                                  CCI < -100 = 做空

                                                  我们将针对以下步骤进行编码:

                                                  1. 为价格创建数组。
                                                  2. 从当前数据整理价格数组。
                                                  3. 定义 CCI 属性.
                                                  4. 整理结果。
                                                  5. 获取当前数据的值。
                                                  6. 设置下形趋势期间 CCI 信号条件。

                                                  以下是可在交易平台上启动并自动执行我们需求的程序代码:

                                                  //+------------------------------------------------------------------+
                                                  //|                                       Downtrend CCI Strategy.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"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue< -100)
                                                     Comment ("DOWNTREND CCI - SHORT SIGNAL ");
                                                    }
                                                  //+------------------------------------------------------------------+
                                                  

                                                  在导航器中找到该程序 Downtrend CCI Strategy:

                                                  Downtrend strategy CCI 导航器

                                                  双击或拖放到图表上,从而打开此程序 Downtrend CCI Strategy 。 将打开以下窗口:

                                                  Downtrend CCI strategy 窗口

                                                  启用“允许算法交易”,并按确定之后,程序(EA)— Downtrend CCI Strategy — 将附着到图表上:

                                                  Downtrend CCI strategy 附着

                                                  Downtrend CCI Strategy 程序的信号将根据该策略出现,如下图所示:

                                                  Downtrend CCI Strategy - 做空信号

                                                  • 横盘期间:
                                                    • 对于做多信号:

                                                  CCI < -100 = 做多

                                                  CCI > 100 = 获利了结

                                                  步骤:

                                                  1. 为价格创建数组。
                                                  2. 从当前数据整理价格数组。
                                                  3. 定义 CCI 属性。
                                                  4. 整理结果。
                                                  5. 获取当前数据的值。
                                                  6. 设置横盘期间 CCI 信号条件。

                                                  编写以下步骤的代码,来创建一个可以执行我们所需操作的程序:

                                                  //+------------------------------------------------------------------+
                                                  //|                                  Sideways CCI Strategy - Buy.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"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue< -100)
                                                     Comment ("SIDEWAYS CCI - BUY SIGNAL ");
                                                     
                                                     if(CCIValue> 100)
                                                     Comment ("SIDEWAYS CCI - TAKE PROFIT");
                                                    }
                                                  //+------------------------------------------------------------------+

                                                  在导航器中查找此程序 Sideways CCI Strategy - Buy:

                                                   Sideways buy strategy CCI 导航器

                                                  双击或将其放到图表上打开它。 将打开以下窗口:


                                                  Sideways CCI buy strategy 窗口

                                                  启用“允许算法交易”,并按确定之后,程序(EA)— Sideways CCI Strategy - Buy — 将附着到图表上:

                                                  Sideways CCI buy strategy a附着

                                                  然后,我们可以根据此策略查找出现的信号 Sideways CCI Strategy - Buy:

                                                  Sideways CCI - 做多

                                                  获利了结信号 CCI > 100 = 获利了结。 示例:

                                                  Sideways CCI - Buy - TP

                                                    • 对于做空信号:

                                                  CCI > 100 = 做空

                                                  CCI < -100 = 获利了结

                                                  我们将通过以下步骤对其编码:

                                                  1. 为价格创建数组。
                                                  2. 从当前数据整理价格数组。
                                                  3. 定义 CCI 属性。
                                                  4. 整理结果。
                                                  5. 获取当前数据的值。
                                                  6. 设置横盘期间 CCI 做空信号条件。

                                                  下面是如何编写这些步骤来创建程序 Sideways CCI Strategy - Short:

                                                  //+------------------------------------------------------------------+
                                                  //|                                Sideways CCI Strategy - Short.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"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue> 100)
                                                     Comment ("SIDEWAYS CCI - SHORT SIGNAL ");
                                                     
                                                     if(CCIValue< -100)
                                                     Comment ("SIDEWAYS CCI - TAKE PROFIT");
                                                    }
                                                  //+------------------------------------------------------------------+

                                                  此后我们的程序 Sideways CCI Strategy - Short 即可在导航器里找到:

                                                  Sideways short strategy CCI 导航器

                                                  双击或拖放到图表上,从而打开此程序 Sideways CCI Strategy - Short 。 将打开以下窗口:

                                                  Sideways CCI short strategy 窗口

                                                  启用“允许算法交易”,并按确定之后,程序(EA)— Sideways CCI Strategy - Short — 将附着到图表上,并与如下内容相同:

                                                  Sideways CCI short strategy 附着

                                                  信号将根据此策略 Sideways CCI Strategy - Short 显示:

                                                  Sideways CCI - 做空

                                                  当  CCI < -100 = 获利了结:

                                                  Sideways CCI - Short - TP

                                                  • 第二种策略:零轴交叉信号:
                                                    • 对于做多信号:

                                                  CCI > 0 = 做多
                                                  CCI > 100 = 获利了结 

                                                  我们将通过以下步骤对其编码:

                                                  1. 为价格创建数组。
                                                  2. 从当前数据整理价格数组。
                                                  3. 定义 CCI 属性。
                                                  4. 整理结果。
                                                  5. 获取当前数据的值。
                                                  6. 设置 CCI 值和零轴交叉时的条件。

                                                  按步骤创建程序 Zero crossover CCI Strategy - Buy:

                                                  //+------------------------------------------------------------------+
                                                  //|                            Zero crossover CCI Strategy - Buy.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"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                    
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue > 0)
                                                     Comment ("Zero crossover CCI - BUY SIGNAL ");
                                                     
                                                     if(CCIValue > 100)
                                                     Comment ("Zero crossover CCI - TAKE PROFIT");
                                                    }
                                                  //+------------------------------------------------------------------+
                                                  

                                                  在导航器里查找该程序 Zero crossover CCI Strategy - Buy :

                                                  Zero crossover buy strategy CCI 导航器

                                                  双击或将其拖放到图表上打开它。 将打开以下窗口:

                                                  Zero crossover CCI strategy - Buy 窗口


                                                  启用“允许算法交易”,并按确定之后,程序(EA)— Zero crossover CCI Strategy - Buy — 将附着到图表上:

                                                  Zero crossover CCI strategy - Buy 附着

                                                  信号将根据此策略 Zero crossover CCI Strategy - Buy 显示:

                                                  Zero crossover CCI strategy - Buy

                                                  当  CCI > 100 = 获利了结下图就是其示例:

                                                  Zero crossover CCI strategy - Buy - TP

                                                    • 对于做空信号:

                                                  CCI < 0 = 做多
                                                  CCI < -100 = 获利了结 

                                                  我们将通过以下步骤对其编码:

                                                  1. 为价格创建数组。
                                                  2. 从当前数据整理价格数组。
                                                  3. 定义 CCI 属性。
                                                  4. 整理结果。
                                                  5. 获取当前数据的值。
                                                  6. 设置 CCI 值和零轴交叉时的条件。

                                                  按步骤编码来创建该程序 Zero crossover CCI Strategy - Short:

                                                  //+------------------------------------------------------------------+
                                                  //|                          Zero crossover CCI Strategy - Short.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"
                                                  //+------------------------------------------------------------------+
                                                  void OnTick()
                                                    {
                                                     //Creating an array of prices
                                                     double ArrayOfPrices[];
                                                     
                                                     //Sorting price array from current data
                                                     ArraySetAsSeries(ArrayOfPrices,true);
                                                     
                                                     //CCI properties Definition
                                                     int CCIDef = iCCI(_Symbol,_Period,14,PRICE_CLOSE);
                                                     
                                                     //Storing results
                                                     CopyBuffer(CCIDef,0,0,3,ArrayOfPrices);
                                                     
                                                     //Getting value of current data
                                                     double CCIValue = (ArrayOfPrices[0]);
                                                     
                                                     //CCI signals
                                                     if(CCIValue < 0)
                                                     Comment ("Zero crossover CCI - SHORT SIGNAL ");
                                                     
                                                     if(CCIValue < -100)
                                                     Comment ("Zero crossover CCI - TAKE PROFIT");
                                                    }
                                                  //+------------------------------------------------------------------+
                                                  

                                                  之后在导航器里即可找到该程序 Zero crossover CCI Strategy - Short :

                                                  Zero crossover short strategy CCI 导航器

                                                  双击或拖放到图表上,从而打开此程序 Zero crossover CCI Strategy - Short。 将打开以下窗口:

                                                  Zero crossover CCI strategy - Short 窗口

                                                  启用“允许算法交易”,并按确定之后,程序(EA)— Zero crossover CCI Strategy - Short — 将附着到图表上:

                                                  Zero crossover CCI strategy - Short 附着

                                                  信号将根据此策略 Zero crossover CCI Strategy - Short 显示:

                                                  Zero crossover CCI strategy - Short

                                                  当  CCI < -100 = 获利了结下图就是其示例:

                                                  Zero crossover CCI strategy - Short - TP

                                                  结束语

                                                  商品通道指数指标 CCI — 是另一款有益于我们交易的工具,在测试 CCI 的每一项策略后,可以获得更好的结果,在测试盈利的情况下还可进一步对其优化。 您可以认为本文是针对一种新工具的介绍,如果它适合您的交易计划和风格,则您就可在交易中运用它。 

                                                  正如我们在本文中所知,什么是 CCI 指标,它意味着什么,它衡量什么,我们如何计算它,并看到了一个示例,以便加深我们对这一工具的认知识和了解,这就是我们得到更多见解和新思路的理由。

                                                  然后,我们还掌握了 CCI 在不同行情条件下(上行、下行和横盘)、以及与零轴交叉时可供运用的简单策略,正如我所提及的,CCI 可以配合许多策略,您可以了解其中哪些策略对您的交易更有用,但我相信,当您了解了一些基本知识后,您会更有效地运用它。

                                                  然后,我们知道了如何设计这一策略的蓝图,这有助于编写我们的程序,从而设计基于 CCI 的交易系统。 现在,我们知道了如何以 MQL5 针对该策略进行编码,以及如何将该交易系统连接到我们的 Meta Trader 5 交易平台,执行并自动生成信号,最后我们会看到如何在图表上生成信号。

                                                  我现在需要确认的是,您必须预先测试任何新策略,然后才能在实盘帐户上使用它。 我希望这篇文章能为您和您的交易提供有用的信息,或者为您的交易提供新的思路或见解。


                                                  本文由MetaQuotes Ltd译自英文
                                                  原文地址: https://www.mql5.com/en/articles/10592

                                                  DoEasy. 控件 (第 3 部分): 创建绑定控件 DoEasy. 控件 (第 3 部分): 创建绑定控件
                                                  在本文中,我将创建绑定到基准元素的从属控件。 开发任务将使用基准控件功能执行。 此外,我还会稍微修改一下图形元素阴影对象,因为把它应用于任何有阴影的对象时会遇到一些逻辑错误。
                                                  从头开始开发智能交易系统(第 8 部分):概念上的飞跃 从头开始开发智能交易系统(第 8 部分):概念上的飞跃
                                                  实现新功能的最简单途径是什么? 在本文中,我们将后撤一步,然后再前进两步。
                                                  从头开始开发智能交易系统(第 9 部分):概念上的飞跃  (II) 从头开始开发智能交易系统(第 9 部分):概念上的飞跃 (II)
                                                  在本文中,我们将把 Chart Trade 这个应用程序放置在浮动窗口当中。 在前一篇中,我们创建了一个基本系统,该系统支持在浮动窗口中使用模板。
                                                  DoEasy. 控件 (第 2 部分): 操控 CPanel 类 DoEasy. 控件 (第 2 部分): 操控 CPanel 类
                                                  在本文中,我将剔除一些与操控图形元素相关的错误,并继续开发 CPanel 控件。 尤其是,我将实现为所有面板文本对象设置默认字体参数的方法。