输入/搜索内容
欢迎使用发明者量化交易平台
编程语言
JavaScript
TypeScript
Python
Rust
C++
My语言(麦语言)
PINE语言
Blockly可视化
Workflow工作流
密钥安全性
实盘
策略库
托管者
部署托管者
一键租用托管者
手动部署托管者
托管者操作注意事项
全局指定IP地址
命令行版本托管者程序的参数
实盘数据迁移
托管者监控
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
期权交易
Rust策略编写说明
C++策略编写说明
JavaScript策略编写说明
Web3
内置库
扩展API接口
MCP 服务
交易终端
数据探索
Alpha因子分析工具
通用协议
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明

平台支持使用Rust编程语言编写策略。Rust语言的策略采用预先编译、再执行的方式运行:回测时,策略代码由平台服务器编译,并在浏览器端的回测系统中运行;实盘环境中,Rust语言的策略在编译通过后基于托管者运行。

借助Rust的所有权模型与静态类型系统,您可以在FMZ量化交易平台上编写兼具内存安全与高性能的交易策略。

  • 平台API自动注入
    策略代码只需一个fn main()入口函数。所有平台API(exchangeexchangesTALog!/LogStatus!_G!/_C!等)均通过prelude自动注入,无需任何use/mod声明即可直接调用。可能失败的API调用会返回Result<T>类型,可配合_C!宏实现自动重试。
    rust
    fn main() { // GetTicker返回Result<Ticker>,用_C!宏重试直到调用成功 let ticker = _C!(exchange.GetTicker(None)); Log!("Last:", ticker.Last); }
  • 策略参数注入为全局常量
    界面上配置的策略参数会以全局常量的形式注入策略,其Rust类型由参数的实际值决定(数字对应f64、布尔对应bool、字符串/密码对应&str等),可直接通过参数名引用;您也可以通过params()函数获取参数集的JSON文本并自行解析。
  • 支持第三方crate
    策略源码是唯一的代码文件(不含单独的Cargo.toml),可在源码顶部使用cargo-script风格的frontmatter声明依赖,构建时会自动合并至Cargo.toml:
    rust
    --- [dependencies] serde_json = "1" --- fn main() { let v: serde_json::Value = serde_json::from_str(params()).unwrap(); Log!("参数:", v.to_string()); }
    注意:编译沙盒中未提供系统OpenSSL,因此需要TLS的crate(如HTTP/WebSocket客户端等)请选择基于纯Rust实现的rustls(例如为tokio-tungstenite开启rustls-tls-webpki-roots特性),避免依赖native-tls/openssl-sys;WebSocket连接建议优先使用内置的Dial()函数,无需引入第三方crate。
  • 编辑器支持
    策略编辑器为Rust策略集成了rust-analyzer,可提供代码补全与实时诊断功能。