---
title: "如何创建一个智能交易系统或指标 - 算法交易, 交易机器人 - MetaTrader 5帮助"
description: "交易平台包含了内置的编程语言 MetaQuotes Language 5 ( MQL5 ), MetaEditor 开发环境和策略测试工具。 交易平台有其自己的用于交易策略编程的内置编程语言 MetaQuotes Language 5 。它是第五代... - 如何创建一个智能交易系统或指标 - 算法交易, 交易机器人 - MetaTrader 5帮助"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading"
---

[MetaTrader 5帮助](https://www.metatrader5.com/zh/terminal/help) → [算法交易, 交易机器人](https://www.metatrader5.com/zh/terminal/help/algotrading) → 如何创建一个智能交易系统或指标

# 如何创建一个智能交易系统或指标

交易平台包含了内置的编程语言 MetaQuotes Language 5 ([MQL5](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#mql5)), [MetaEditor](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#metaeditor) 开发环境和策略测试工具。

> 任何有关利用 MQL5 开发交易策略的信息可在 [MQL5 社区](https://www.mql5.com/) 官方网站上找到。网站的 [代码库](https://www.mql5.com/zh/code)板块包含现成应用的例程。

## 交易策略 MQL5 编程语言 [#](#mql5)

交易平台有其自己的用于交易策略编程的内置编程语言 [MetaQuotes Language 5](https://www.mql5.com/)。它是第五代 MQL 语言。它可以开发 [智能交易系统](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#type), 将交易过程自动化, 以及实现您自己的交易策略。MQL5 也可以创建 [自定义指标](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#type), [脚本](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#type) 和函数库。

MQL5 特性:

- 语言是面向对象的;
- MQL5 语法类似于 C++;
- 它包含大量用于分析报价, 管理仓位, 调用技术指标, 等等的必要函数;
- 它也是高性能的语言;
- 高保护性可对抗反编译: 全新复杂加密算法, 文件完整性检查, 和语言复杂性;
- [OpenCL](https://www.mql5.com/zh/articles/405)支持在 MQL5 应用里面启用显卡进行计算;
- 集成软件开发环境 [MetaEditor](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#metaeditor) 包括一个调试器。

所有语言构造和函数的详尽说明都在 MQL5 参考里提供。所有关于 MQL5 的必要信息也可以在开发者社区网站 [https://www.mql5.com](https://www.mql5.com/) 里找到。

## MetaEditor [#](#metaeditor)

MetaEditor 是一款集成 [MQL5](https://www.mql5.com/) 开发环境。它是交易平台的一个组成部件。MetaEditor 允许您创建, 编辑, 编译和调试以 [MQL5](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#mql5)编写的源代码。

- MQL5 向导用于创建模板和交易机器人MetaEditor 包含的 MQL5 向导可助您快速创建 MQL5 程序。利用 MQL5 向导, 一位交易者无需编程技能就可简单地创建智能交易系统。您只需要选择用于智能交易系统的交易信号, 以及资金管理和尾随停止算法。智能交易系统代码基于所选参数自动生成。此外, MQL5 向导可以创建 MQL5 程序模板来简化程序员的工作。
- 得助于源代码MetaEditor 可识别语言结构: 如何使用函数的建议提示, 以及加亮源代码里的多种元素。因此, 编辑器强化了在交易程序源代码里的导航功能, 并可加速开发过程。
- 调试MetaEditor 可令您调试程序, 极大便利故障排除。源代码的单步执行可以监视变量值。
- 代码优化剖析编辑器还提供软件剖析工具。您可以标识源代码中最慢的函数并优化您的程序。
- 有关编程和源代码库的文章直接来自编辑器, 您可以找到大量 MQL5 编程指导。您可以另外访问拥有海量免费自动交易程序的代码库。
- 具有版本支持的联线 MQL5 Algo Forge提供安全的文件存储, 并可恢复丢失文件, 以及通过您的 MQL5 社区帐户从任意电脑上访问您的代码。

更多有关 MetaEditor 的详情可在内置的帮助文件里找到。MQL5 的描述可在内置的参考和官方 [MQL5 社区](https://www.mql5.com/)网站中找到。

## 算法交易书籍 [#](#algobook)

为了帮助初学者，我们发布了两本关于 MQL5 编程的综合书籍，专为希望掌握创建交易机器人和算法交易应用程序的人而设计。这些书对材料进行了系统和结构化的介绍，使学习过程更容易。详细的代码示例解释了交易机器人和应用程序的逐步创建，使读者可以更深入地理解算法交易的细节。

“[面向交易者的 MQL5 编程](https://www.mql5.com/zh/book)”是关于MQL5的最完整、最详细的教程，适合各级程序开发人员。初学者将学习基础知识：本书介绍了开发工具和基本编程概念。基于这些材料，您将在 MetaTrader 5 交易平台中创建、编译和运行您的第一个应用程序。具有其他编程语言经验的用户可以直接进入应用部分：在 MQL5 中创建交易机器人和分析应用程序。

“[MQL5 算法交易中的神经网络](https://www.mql5.com/zh/neurobook)”是 MetaTrader 5 平台交易机器人中使用机器学习方法的指南。您将逐步了解神经网络的基本原理及其在算法交易中的应用。随着您的进步，您将构建和训练自己的人工智能解决方案，逐步添加新功能。除了学习 MQL5，您还将获得 Python 和 OpenCL 编程技能，并探索集成矩阵和向量方法，从而能够用简洁高效的代码解决复杂的数学问题。

## 关于交易应用程序开发的文章 [#](#articles)

[MQL5 社区](https://www.mql5.com/) 网站提供了一个关于[MQL4/MQL5编程](https://www.mql5.com/zh/articles)的内容广泛的文章库。文章是创建应用程序的优秀向导，因为它们涵盖了许多涉及EA交易的实际任务。每周都会发布许多新文章。

所有可用文章的列表直接显示在MetaEditor。若要找到需要的资料，请使用[在线搜索](https://www.metatrader5.com/zh/terminal/help/startworking/interface#search)。

![关于MQL4/MQL5编程的文章](https://www.metatrader5.com/i/help/terminal/en/articles.png)

## MQL5 应用的类型 [#](#type)

三种主要交易应用类型可用。

### 智能交易系统

智能交易系统是机械交易系统, 可将分析和交易活动完全自动化, 在金融市场里高效地运作。它们可以在接收的信号基础上及时进行价格数据分析, 并控制交易活动。它们还有助于严格遵循交易策略, 消除情绪影响。

所有智能交易系统保存在交易平台的 [/MQL5/Experts](https://www.metatrader5.com/zh/terminal/help/start_advanced/structure#ea) 文件夹。

### 自定义指标

自定义指标是定制开发的技术指标, 用于分析价格动态。交易战术和智能交易系统基于指标的算法开发。自定义指标仅用于分析品种的价格动态。指标不能交易且不能访问图表。

所有指标保存在交易平台的 [/MQL5/Indicators](https://www.metatrader5.com/zh/terminal/help/start_advanced/structure#indicators) 文件夹。

### 脚本

脚本是用 [MQL5](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#mql5) 编写的应用, 设计用于执行单一动作。脚本可同时执行分析和交易功能。不像 [智能交易系统](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#type), 脚本根据请求执行。换言之, 智能交易系统连续工作, 而脚本执行其功能后退出。

所有脚本保存在交易平台的 [/MQL5/Scripts](https://www.metatrader5.com/zh/terminal/help/start_advanced/structure#scripts) 文件夹。

### 服务

[服务](https://www.metatrader5.com/zh/terminal/help/algotrading/trade_robots_indicators#service)可以为程序端使用自定义价格源以及实现实时交付来自外部系统的价格，如同直接在交易商交易服务器上实施。服务还可以用于在后台执行其他服务任务。

与EA交易、指标和脚本不同，服务并不链接特定的图表。这些应用程序在后台运行，当程序端启动时自动启动（除非被强制停止）。

所有服务都存储在交易平台的[/MQL5/服务](https://www.metatrader5.com/zh/terminal/help/start_advanced/structure#scripts)文件夹中。

> 在 Experts, Indicators, Scripts 和 Services 文件夹内, 应用可以保存在子目录中。它们的位置结构显示在 [导航器](https://www.metatrader5.com/zh/terminal/help/startworking/interface) 窗口。

## 如何创建并运行一个交易应用 [#](#create)

点击 "![创建](https://www.metatrader5.com/i/help/terminal/en/create_icon.png) 创建", 关联菜单位于 [导航器](https://www.metatrader5.com/zh/terminal/help/startworking/interface) 窗口内智能交易系统, 指标或脚本区域。MetaEditor 也可通过按下 F4 启动。

![开始创建交易应用](https://www.metatrader5.com/i/help/terminal/en/ea_create.png)

启动 [MetaEditor](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#metaeditor) 并自动打开 MQL5 向导。使用它生成必要的程序模板来迅速地开始软件开发。让我们来创建一个 简单 脚本, 输出一条消息 "Hello world" 至 [日志](https://www.metatrader5.com/zh/terminal/help/start_advanced/journal)。

![MQL5 向导生成一个应用模板](https://www.metatrader5.com/i/help/terminal/en/example_wizard_script.png)

在结果模板里, 我们添加代码 Print("Hello World"); 并按下 F7 编译它, 得到可执行文件。可执行文件带有扩展名 EX5, 并可在交易平台里运行。

![编译及其结果](https://www.metatrader5.com/i/help/terminal/en/example_compile.png)

编译结果添加在编辑器的记录里。

按照应用类型, 源代码保存于 MQL5\Scripts\ 文件夹里。可执行文件在同一文件夹内创建。您现在可以返回交易平台并运行生成的脚本。

![在交易平台里运行脚本](https://www.metatrader5.com/i/help/terminal/en/example_run_script.png)

> 使用自动交易程序的细节在章节 ["智能交易系统和自定义指标"](https://www.metatrader5.com/zh/terminal/help/algotrading/trade_robots_indicators) 里描述。

## 如何编辑交易应用 [#](#modify)

为了编辑交易机器人或自定义指标, 点击 "![修改](https://www.metatrader5.com/i/help/terminal/en/modify_icon.png) 修改", 关联菜单位于 [导航器](https://www.metatrader5.com/zh/terminal/help/startworking/interface) 窗口, 或者选中它并按回车键。这会启动 [MetaEditor](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#metaeditor) 并打开所选指标的源代码。在您完成指标修改之后, 重新编译它 (F7)。否则平台将使用其先前的未变更版本。

## 如何关闭交易应用 [#](#quit)

在平台里关闭交易应用有许多种方式。

| 交易机器人 | 自定义技术指标 | 脚本 |
| --- | --- | --- |
| - 在 [智能交易系统列表](https://www.metatrader5.com/zh/terminal/help/charts_advanced/charts_objects_list#ea) 窗口里点击 "移除";<br>- 改变图表的 [模板](https://www.metatrader5.com/zh/terminal/help/charts_advanced/templates_profiles);<br>- 改变 [综合配置](https://www.metatrader5.com/zh/terminal/help/charts_advanced/templates_profiles#profiles), 前提是 [在平台设置中启用相应的选项](https://www.metatrader5.com/zh/terminal/help/startworking/settings#profile);<br>- 关闭交易平台;<br>- 关闭智能交易系统正运行其上的图表;<br>- 在同一图表上运行其它的智能交易系统;<br>- 点击 "![移除智能交易系统](https://www.metatrader5.com/i/help/terminal/en/ea_remove_icon.png)移除", 关联菜单位于图表的智能交易系统图标。 | - 点击 "![移除指标](https://www.metatrader5.com/i/help/terminal/en/delete_indicator_icon.png)删除" 或 "![删除指标窗口](https://www.metatrader5.com/i/help/terminal/en/delete_indicator_window.png)删除指标窗口", 位于指标关联菜单;<br>- 点击 [指标列表](https://www.metatrader5.com/zh/terminal/help/charts_advanced/charts_objects_list#indicators) 窗口里的 "删除";<br>- 改变图表的 [模板](https://www.metatrader5.com/zh/terminal/help/charts_advanced/templates_profiles);<br>- 重开图表。 | - 点击 [智能交易系统列表](https://www.metatrader5.com/zh/terminal/help/charts_advanced/charts_objects_list#ea) 窗口内的 "移除"。此窗口也包括正在运行的脚本列表;<br>- 改变图表的 [模板](https://www.metatrader5.com/zh/terminal/help/charts_advanced/templates_profiles);<br>- 改变 [综合配置](https://www.metatrader5.com/zh/terminal/help/charts_advanced/templates_profiles#profiles), 前提是 [在平台设置中启用相应的选项](https://www.metatrader5.com/zh/terminal/help/startworking/settings#profile);<br>- 改变 [图表](https://www.metatrader5.com/zh/terminal/help/charts_analysis/charts) 品种;<br>- 改变图表 [时间帧](https://www.metatrader5.com/zh/terminal/help/charts_analysis/charts#operations);<br>- 关闭交易平台;<br>- 关闭脚本正运行其上的图表;<br>- 在同一图表上运行其它的脚本;<br>- 点击 "![移除脚本](https://www.metatrader5.com/i/help/terminal/en/script_remove_icon.png)移除", 关联菜单位于图表的脚本图标。 |

> 如果交易应用正在图表上运行, 即使您从 [导航器](https://www.metatrader5.com/zh/terminal/help/startworking/interface) 窗口里删除了相应的可执行文件, 它也不会关闭。若 [在交易平台设置里](https://www.metatrader5.com/zh/terminal/help/startworking/settings#enable_ea) 禁止智能交易系统, 并非完全禁止它们。此操作仅限制了智能交易系统进行交易。

## 如何运行下载的 MQ5 源代码文件 [#](#mq5)

如果您只有源代码文件 (*.MQ5), 将之保存在相应类型的应用文件夹里:

- 对于智能交易系统 ― /MQL5/Experts
- 对于指标 ― /MQL5/Indicators
- 对于脚本 ―/MQL5/Scripts

为了快速浏览交易平台的数据文件夹, 点击 "![打开数据文件夹](https://www.metatrader5.com/i/help/terminal/en/terminal_data_icon.png) 打开数据文件夹", 位于 [文件](https://www.metatrader5.com/zh/terminal/help/startworking/interface) 菜单。

为了在交易平台里运行文件, 在 [MetaEditor](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#metaeditor) 里编译它:

- 按下 F4 打开 MetaEditor。
- 在 MetaEditor 里, 在导航器窗口里双击文件名来打开源代码文件。
- 按下 F7 来编译它。

这可创建一个可执行的 *.EX5 文件, 此类型文件可以在交易平台里运行。

> 源文件 (*.MQ5) 不会显示在交易平台的 [导航器](https://www.metatrader5.com/zh/terminal/help/startworking/interface) 窗口里。

## In this section

- [智能交易系统和自定义指标](https://www.metatrader5.com/zh/terminal/help/algotrading/trade_robots_indicators)
- [何处查找交易机器人和指标](https://www.metatrader5.com/zh/terminal/help/algotrading/algotrading_get_ea_indicator)
- 如何创建一个智能交易系统或指标
- [策略测试](https://www.metatrader5.com/zh/terminal/help/algotrading/testing)
- [测试器如何下载历史数据](https://www.metatrader5.com/zh/terminal/help/algotrading/test_preparation)
- [策略优化](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization)
- [测试功能](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_features)
- [测试报告](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_report)
- [测试可视化](https://www.metatrader5.com/zh/terminal/help/algotrading/visualization)
- [测试日志](https://www.metatrader5.com/zh/terminal/help/algotrading/tester_journal)
- [优化类型](https://www.metatrader5.com/zh/terminal/help/algotrading/optimization_types)
- [真实与生成的分时](https://www.metatrader5.com/zh/terminal/help/algotrading/tick_generation)
- [MetaTester 和远程代理](https://www.metatrader5.com/zh/terminal/help/algotrading/metatester)
- [全局变量](https://www.metatrader5.com/zh/terminal/help/algotrading/service_global)

```json
{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "item": {"@id": "https://www.metatrader5.com/zh/terminal/help", "name": "MetaTrader 5帮助"}}, {"@type": "ListItem", "position": 2, "item": {"@id": "https://www.metatrader5.com/zh/terminal/help/algotrading", "name": "算法交易, 交易机器人"}}, {"@type": "ListItem", "position": 3, "item": {"@id": "https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading", "name": "如何创建一个智能交易系统或指标"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: 如何创建一个智能交易系统或指标", "acceptedAnswer": { "@type": "Answer", "text": "交易平台包含了内置的编程语言 MetaQuotes Language 5 ( MQL5 ), MetaEditor 开发环境和策略测试工具。 交易平台有其自己的用于交易策略编程的内置编程语言 MetaQuotes Language 5 。它是第五代 MQL 语言。它可以开发 智能交易系统..." } }] }
```
