跳转至

如何使用 AI 在 Python 中创建外汇交易机器人

本文和视频演示了如何使用 AI 为 cTrader 创建一个免费的 Python 交易机器人。

注意

cTrader 是唯一提供原生 Python 支持的主要平台,允许任何人创建强大的 Python 机器人来自动化交易策略。 无需适配器或复杂的变通方法。

虽然演示中使用了 ChatGPT,但使用 AI 创建交易机器人的相同步骤也适用于 Gemini、Claude、DeepSeek 等。

选择 Python 模板

在 cTrader Windows 或 Mac 中打开 cTrader Algo,然后点击新建开始创建新的交易机器人。

在算法创建向导中,构建一个新算法并为其命名。

选择 Python 作为编程语言,然后选择使用模板选项。

cTrader 提供了多种 Python 模板,涵盖了每种策略类型、分析风格或自动化交易活动。 这些预构建的算法已经包含完整的交易逻辑和可调参数,因此一旦保存并构建,它们就可以使用。

注意

完整的算法模板集合可在 cTrader Windows 或 Mac 的算法创建向导中找到,您也可以在我们的公共仓库中访问它们。

假设我们专注于突破交易。 因此,我们选择 Sample Breakout cBot。

注意

热门算法模板的详细描述,包括Breakout cBot,可在我们的知识库中找到。

Breakout cBot 利用价格突破预定义支撑或阻力位的走势,并由 Bollinger Bands 指标驱动其决策。 让我们构建交易机器人并进行回测。

按下 Ctrl+B 或点击代码编辑器顶部的构建

构建成功后,点击 cBot 名称下的任何可用实例。

在主网格中,导航到回测选项卡。 使用默认参数执行一年的回测,以评估机器人的结果。 cBot 在此期间产生了 22% 的收益,在交易统计选项卡中记录了 194 笔交易中的 74 笔盈利交易。

使用 AI 升级 cBot

借助 AI 的帮助,您可以升级交易机器人的代码以获得更好的结果,并识别出能产生更高回报的参数组合。

RSI 是一个动量指标,可以过滤掉弱势突破或虚假信号。 该指标应完美融合并补充 Sample Breakout cBot 中使用的 Bollinger Bands。 作为参考,您可以在帮助中心文章中获取 Super cBot 的 RSI 集成。

获取 RSI 集成代码片段,将其附加到包含所有必要信息的提示中,然后将所有内容输入 AI 工具:

提示

研究 RSI 在 Super cBot 中的集成方式,然后在 Special cBot 中实现相同的 RSI 过滤条件。

[Special cBot 代码]

[集成 RSI 的 Super cBot 代码]

AI 思考后提供了与 RSI 集成的 Special cBot 代码。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import clr

clr.AddReference("cAlgo.API")

# <strong>Import cAlgo API types</strong>
from cAlgo.API import *

# <strong>Import trading wrapper functions</strong>
from robot_wrapper import *

class SampleBreakoutcBot():
    Label = "Sample Breakout cBot"

    def on_start(self):
        # Bollinger Bands for breakout consolidation logic
        self.bollingerBands = api.Indicators.BollingerBands(api.Source, api.Periods, api.Deviations, api.MAType)

        # Track consolidation bars
        self.consolidation = 0

        # --- RSI filter (same style as grid cBot) ---
        self.rsi_period = getattr(api, "RsiPeriod", 14)
        self.rsi_overbought = getattr(api, "RsiOverbought", 70)
        self.rsi_oversold = getattr(api, "RsiOversold", 30)
        self.rsi = api.Indicators.RelativeStrengthIndex(api.Bars.ClosePrices, self.rsi_period)

    def on_bar(self):
        top = self.bollingerBands.Top.Last(1)
        bottom = self.bollingerBands.Bottom.Last(1)

        # Detect consolidation via band height
        if top - bottom <= api.BandHeightPips * api.Symbol.PipSize:
            self.consolidation += 1
        else:
            self.consolidation = 0

        if self.consolidation >= api.ConsolidationPeriods:
            volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.Quantity)

            # Breakout up
            if api.Ask > top:
                if self.passes_rsi_filter():
                    api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                    self.consolidation = 0
                else:
                    api.Print("RSI filter blocked BUY breakout (RSI={:.2f}, range {}-{})"
                              .format(self.get_rsi_value(), self.rsi_oversold, self.rsi_overbought))

            # Breakout down
            elif api.Bid < bottom:
                if self.passes_rsi_filter():
                    api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                    self.consolidation = 0
                else:
                    api.Print("RSI filter blocked SELL breakout (RSI={:.2f}, range {}-{})"
                              .format(self.get_rsi_value(), self.rsi_oversold, self.rsi_overbought))

    # --- Helpers copied in spirit from the grid cBot ---
    def get_rsi_value(self):
        # Use the last CLOSED bar for stability
        return self.rsi.Result.Last(1)

    def passes_rsi_filter(self):
        r = self.get_rsi_value()
        return (r > self.rsi_oversold) and (r < self.rsi_overbought)

接下来,要求 AI 根据我们的策略推荐交易机器人的最佳参数设置。

提示

我希望 cBot 生成更平滑、更慢的信号,并能与 RSI 过滤器自然配合。
我更偏好较少的交易次数,但要求更干净的突破。
我将盘整周期设置为 1,因为我希望在
波动性被压缩时 cBot 能立即做出反应。

哪种移动平均类型最适合这种需求?

AI 思考后提供了一些有用的信息。 它推荐 Wilders Smoothing 作为我们策略的最佳移动平均线类型。

应用 AI 推荐

返回 cTrader 中的代码编辑器并应用推荐的更改。 粘贴更新后的代码,然后构建升级后的 cBot。

再次打开回测选项卡。 按照 AI 的建议将移动平均线设置为 Wilders Smoothing,然后运行相同一年期的回测。

这次,同一时期的回测报告显示收益率为 97%,与原始 cBot 逻辑的 22% 相比有了显著提升。

新结果展示了 AI 指导在优化交易机器人性能和参数以提供出色结果方面的有效性。 机器人的胜率也显著提高,93 笔交易中有 51 笔盈利。

在云端启动 cBot

得益于云同步,新的 cBot 会自动在您 cTrader ID 激活的所有 cTrader 应用程序中可用。 您甚至可以在 cTrader Mobile 或 Web 中启动交易机器人

只需点击启动图标。

由于 cBot 在云端运行,即使您的 cTrader 应用程序关闭或设备关闭,它也会 24 小时不间断地进行交易。 无需 VPS。

将 cBot 变现

您可以选择在cTrader 商店中将您的 cBot 变现,这是一个连接交易产品买家和卖家的安全且动态的市场。

发布产品,请直接从云端选择您要出售的 cBot 或上传文件,然后提供必要的详细信息。 发布后,算法将在 cTrader 商店上线,供数百万 cTrader 用户购买。

注意

通过 cTrader 商店进行的算法分发是完全安全的,因为您的源代码永远不会被泄露或上传到任何地方。 您的知识产权也受到尊重,因为每个产品购买都是单用户且不可转让的。

Image title