Question: 如何在cTrader交易平台上运行交易机器人(EA)?
cTrader的算法层称为cTrader Algo。该平台的交易机器人称为cBots(cTrader对“EA”的称谓)。您可以在 cTrader Desktop 上本地运行它们,通过cTrader CLI进行无界面操作,或直接从 Desktop、Web 或 Mobile 端全天候在云端运行。您还可以在进行实盘交易前执行回测和优化,并将机器人打包/分享为单一.algo文件。以下是您可遵循的清晰指南。
cTrader Algo工具箱概览
- cBots:可在特定符号和时间框架下运行的可执行机器人。可保存参数集(.cbotset)并创建具有不同输入的多重实例。
- 回测与优化:支持 tick/M1/H1 数据源、可视化回放、Renko/区间柱状图测试、遗传算法与网格优化器,并可导出优化结果(.optres)。
- 云端运行:在cTrader托管云端全天候运行cBots,无需保持设备开机;仅cBots在云端运行(指标/插件在本地运行)。
- CLI与外部进程:无需启动完整桌面应用即可运行cBots,或将其启动为外部进程并关闭用户界面以节省资源。
- 安装/共享:双击.algo文件即可安装; 桌面端将立即提供云端启动或本地启动选项。
在cTrader Desktop本地运行cBot
- 创建或安装机器人。
– 创建:在算法交易 → cBots → 新建中,选择空白模板或示例模板,编辑代码后点击创建(Ctrl+B)。
– 安装:双击已获取的.algo包; cTrader将自动添加并打开Algo应用程序。 - 在市场中创建实例。通过“+”图标或三点菜单→添加实例进行添加。每个实例均关联特定交易品种和时间周期 (例如EURUSD, H1)。
- 设置参数。
参数面板显示代码中定义的所有输入项。通过.cbotset文件保存/加载预设配置。 - 启动与停止。
点击启动cBot运行程序;授予代码要求的访问权限。使用停止终止实例。仅在停止状态下可更改符号/时间间隔。
重要性说明:在cTrader中,您需要运行实例而非“将EA附加到图表”。实例具有独立性,可为同一机器人创建不同配置的克隆实例。
开始交易前进行回溯测试(并进行合理优化)
回溯测试模式与数据
在您的cBot实例中打开回溯测试标签页。选择初始资本、佣金、数据源(服务器 tick 数据、M1 柱状图、H1 柱状图或本地M1 CSV)以及点差模式(固定或随机)。您可以执行非实时(快速)或可视化回放。
可进行测试的图表类型
为实例选择Renko或区间柱状图,然后在此类图表上进行回测。
可获得的结果
cTrader将生成资金图表、交易统计(净利润、盈利系数、跌幅、盈亏计数)、订单、持仓、历史记录、事件以及可搜索的日志。
优化
切换至优化选项卡。选择要扫描的参数, 选择网格法或遗传算法,设定标准(标准或您编写的自定义GetFitness()),并通过滑块控制CPU资源。将结果保存至.optres文件,单击即可应用任意轮次的参数。
在cTrader云端实现cBots全天候运行
云端功能
云端执行可在托管环境中运行您的cBot,即使您关闭cTrader或关闭设备也不受影响。实例数量受限(例如, 每个账户最多一个模拟账户和十个真实账户,具体取决于经纪商)。
仅cBot可在云端运行;指标和插件仍保留在本地设备上。
通过桌面端、网页端或移动端启动
– 桌面端:添加/启动 cBot 时,选择在云端启动。
– 网页端:cTrader Web Algo
– 移动端:cTrader Mobile Algo 同样支持启动/停止云端实例;退出应用后云端仍会继续运行。
云端重要限制
云端运行于Linux系统;请确保外部库为多平台通用且在编译时完成引用(不使用Assembly.Load()
加载缺失DLL)。某些 API 功能在云端会被禁用或行为改变(例如忽略 GUI 窗口;不发送HTTP请求)。社区反馈证实,云端 cBot 的互联网访问权限被封锁。p>
云端访问权限规则
若您的cBot声明FullAccess(文件系统、注册表等),则不适用于云端运行。请尽可能使用[Robot(AccessRights = AccessRights.None)]
;该参考文档同时列出了访问权限范围。
不使用桌面用户界面运行:外部进程与CLI
外部进程(从桌面启动)
右键单击本地 cBot 实例,选择 在外部进程中启动。这将使其在主应用程序 外部 启动;随后您可 关闭 cTrader,cBot 仍将继续运行。
cTrader CLI(无图形界面)
cTrader 4.8+ 版本内置cTrader CLI。您可通过命令提示符/PowerShell对 cBot 进行运行或回测,指定账户、 符号、时间周期,并通过命令行或.cbotset输入参数。CLI还提供列出账户、符号及获取算法元数据的命令。(CLI需使用.NET 6算法)。
文档示例:
ctrader-cli run C:\bots\MyBot.algo -c=myctid --pwd-file=C:\secrets\pw.pwd --account=1234567 --symbol=EURUSD --period=h1
ctrader-cli run C:\bots\MyBot.algo C:\bots\MyParams.cbotset -c=myctid --pwd-file=C:\secrets\pw.pwd --account=1234567 --symbol=EURUSD --period=h1
ctrader-cli backtest C:\bots\MyBot.algo --start=01/01/2024 --end=31/08/2024 --data-mode=m1 --balance=10000 --commission=30 --spread=1 --report=C:\out\report.html --ctid=myctid --pwd-file=C:\secrets\pw.pwd --account=1234567 --symbol=EURUSD --period=h1
安装与共享机器人(.algo)
- 安装
双击.algo文件。对于cBot,您将看到在云端启动或本地启动选项。对于指标,默认参数将应用于当前图表;对于插件,cTrader会将其添加到用户界面。 - 共享
通过云端同步将您的cBot分发给受邀用户及个人主页;您也可发送链接或直接共享.algo文件。(仅cBots在云端运行;指标/插件仅共享,本地执行)。
关于编译和运行时易引发困惑的实用细节
- 正确编译以确保可移植性
云端运行需要编译时。若在运行时加载 DLL 或依赖 Windows 专有技术(WinForms/WPF/WinAPI),cBot 将无法在云端运行。请使用通用包,并确保其包含在编译中。 - 访问权限策略
除非确实需要特权功能,否则请设置AccessRights.None。API 参考定义了 None、FileSystem、Internet、Registry 和 FullAccess;云端接受 None(但仍会阻止 HTTP),而本地桌面可使用提升权限运行。 - 网络访问的细微差别
该平台为本地运行添加了“无FullAccess的网络访问”功能,但云平台仍禁止HTTP并记录了具体限制;论坛回复也证实了这一点。请设计不依赖出站HTTP的云端机器人。 - 网页/移动端运行
您可以通过Algo网页和移动应用启动和管理云实例。您无法在云端运行自定义指标/插件,这些功能仍需在本地桌面实现。li> - 性能优化
当无需 tick 级逻辑时,请使用OnBar()
替代OnTick()
,可降低 CPU 消耗。 - 多实例与预设
在不同符号或时间框架中创建同一cBot的多个实例,并将输入保存为.cbotset文件,以便在实盘中精确复现配置。
从首次启动到全天候稳定运行:紧凑型工作流
- 在 cTrader Desktop 中安装或编码您的 cBot → 编译直至获得“编译成功”
- 使用 tick 或 bar 数据进行回溯测试;如有必要,使用可视化模式验证图表中的行为
- 使用GA或网格算法优化以设定参数范围;保存 .optres文件并应用最佳运行结果。
- 创建实例于目标符号/时间框架;保存您的.cbotset文件。
- 选择运行方式:
– 云端:由cTrader管理的24/7运行(无HTTP,受Linux限制)。
– 外部进程:若需在关闭桌面用户界面后继续运行机器人。
– CLI:通过无图形界面和脚本/自动化实现完全控制。
机器人运行后可监控的内容
- 持仓/订单/历史记录:回测与优化界面视图实时更新,完整呈现实时交易监控的核心架构。
- 日志与事件:支持按实例和事件类型搜索的日志,以及服务器事件元数据。
- 资产与统计:资产曲线、净利润、回撤指标、交易次数及平均值。
简明解答常见问题
- 我可以在浏览器中启动 cBot 并保持其运行吗?
可以,请使用 cTrader Web Algo 启动 Cloud 实例;即使关闭浏览器,Cloud 仍会保持其运行。 - 能否在云端运行指标/插件?
不行。仅cBot机器人可在云端运行,指标/插件必须在本地桌面运行。 - 使用网络资源需要FullAccess权限吗?
本地机器人无需此权限(无需FullAccess即可访问网络)。
云端机器人完全无法发送HTTP请求。
若希望机器人在关闭桌面后继续运行怎么办?
请在外部进程中启动或通过cTrader CLI运行;这两种方式均可在无主界面情况下持续运行。 - CLI需要什么版本的.NET?
.NET 6用于现代算法;CLI可在cTrader 4.8+版本中使用。
提升可靠性的开发者说明
- 计划使用云端时创建跨平台架构(避免使用Windows专属UI框架;将依赖项编译至.algo文件)。
- 优先采用AccessRights.None使机器人兼容云端并更易共享;在参考文档中了解AccessRights模型。
- 使用LocalStorage API实现AccessRights.None环境下文件的安全持久化 (桌面端)环境中安全持久化文件;避免对云端文件系统路径进行假设。
- 使用Parameters和.cbotset以可预测方式编程部署(桌面端或CLI)。
在cTrader平台中,您将创建或安装一个cBot机器人,对其进行构建、 回测并优化,随后可选择在本地、外部/无图形界面模式或云端运行实例。云端执行旨在实现自动且持续运行(受文档化API限制),而桌面/命令行界面则在您自有设备上提供最大灵活性。平台官方工具——.algo包、.cbotset预设、回测/优化、外部进程和CLI——涵盖从初始编译到稳定持续运行的全部需求。
遵循本指南的步骤,您将能够在 cTrader 上以可预测的方式运行交易机器人,并完全掌控其运行方式和位置。
- Close