策略开发指南
配置指南
Injective Trader 使用 YAML 配置文件来定义行为、组件和策略参数。 需要关注的最重要配置部分是:LogLevelComponents部分下Initializer中的Network和MarketTickersStrategies部分
顶级参数
Components 部分
Components 部分配置框架组件:
注意:大多数用户只需要关注
Network 并在 MarketTickers 中包含他们想要监听的所有市场。
他们不需要修改这些高级组件设置。默认值适用于大多数用例。Strategies 部分
Strategies 部分定义每个交易策略:
Class:必须与你的 Python 类名完全匹配MarketIds:此策略要交易的市场 ID 列表(使用十六进制格式)AccountAddresses:此策略要使用的交易账户列表TradingAccount:用于订单执行的账户(必须在AccountAddresses中)
CIDPrefix:客户端订单 ID 前缀(帮助识别你的订单)Name:用于日志和监控的人类可读名称
- 你可以添加策略需要的任何自定义参数
- 策略名称下的所有参数都将在
self.config中可用 - 将相关参数分组在
Parameters部分下以保持清晰
交易模式配置
框架支持两种交易模式:直接执行模式
授权 (Authz) 模式
注意:你必须指定
TradingAccount 用于直接执行,或者指定 Granter 和 Grantees 用于授权模式。
框架在初始化期间强制执行此要求。策略开发指南
Injective Trader 中的策略遵循基于Strategy 基类的一致结构。本节解释如何构建有效的策略。
策略类结构
你的策略类继承自基础Strategy 类:
最佳实践
- 在
on_initialize中初始化所有参数- 从
self.config获取参数 - 为缺失的参数设置默认值
- 初始化内部状态变量
- 从
- 过滤更新类型
- 只处理你的策略关心的更新类型
- 始终检查 processed_data 中的必需字段
- 验证市场数据
- 在使用前检查 bid/ask 是否存在
- 在基于仓位做出决策之前验证仓位是否存在
- 遵守市场约束
- 将价格和数量四舍五入到市场刻度大小
- 检查最小订单大小和名义要求
- 正确处理交易账户
- 确保交易账户在 AccountAddresses 中
- 为订单指定正确的 subaccount_id
- 实现适当的日志记录
- 记录策略决策和重要事件
- 使用适当的日志级别(info、warning、error)
- 设置自定义参数
- 使用
Parameters部分存储策略特定值 - 记录预期参数
- 使用
