Docs - 算法交易
算法交易工具是一个高级平台,允许用户使用JavaScript编写、测试和模拟自定义交易算法。它提供了一个灵活的、事件驱动的环境,用户可以在其中实现复杂的交易策略并针对历史市场数据进行回测。
字段:
- 股票代码 - 算法将交易的资产代码数组。这些可以包括股票代码部分中描述的任何类型的股票代码。
- 余额 - 可用于交易的初始现金余额,以基础货币计。这代表交易算法的初始资本。
- 日期 - 定义算法将被模拟的历史时期的开始和结束日期元组。
- 杠杆 - 当设置为真时,启用杠杆交易,允许算法持有大于可用现金余额的头寸。这应谨慎使用,因为它既增加了潜在回报也增加了风险。
- 初始保证金 - 初始保证金要求,表示为0到1之间的小数。这仅在启用杠杆时适用。它定义了必须由可用现金覆盖的头寸价值的比例。
- 最小保证金 - 最小保证金要求,也表示为0到1之间的小数。这是触发保证金追加的阈值。仅在启用杠杆时适用。
- 代码 - 定义交易算法的JavaScript代码。这是用户实现其交易逻辑的地方,使用提供的AlgoWorkspace环境。
代码 (AlgoWorkspace):
AlgoWorkspace为算法执行提供了一个事件驱动的环境。它提供了一组事件、属性和方法,允许用户与模拟环境交互并实现其交易逻辑。
可用事件:
this.on('start', async (next, timeseries) => { ... })- 在模拟开始时触发。timeseries参数提供对所有资产的整个历史数据集的访问。this.on('data', async (next) => { ... })- 为模拟中的每个数据点(通常是每个交易日)触发。这通常是实现主要交易逻辑的地方。this.on('end', async (next, result) => { ... })- 在模拟结束时触发。result参数提供对最终模拟结果的访问。this.on('error', async (next, errors) => { ... })- 当模拟过程中发生错误时触发。errors参数包含有关遇到的错误的详细信息。
属性和方法:
this.date- 模拟中的当前日期。this.assets- 包含每个正在交易的资产的当前价格和其他相关数据的数组。this.portfolio- 表示当前投资组合状态,包括现金余额和资产头寸。this.index- 模拟中的当前迭代索引。this.length- 模拟中的总迭代次数。this.inputs- 包含模拟的初始输入参数。this.state- 用户定义的对象,用于在整个模拟过程中存储自定义状态数据。this.buy(assetCode: string, quantity: number): void- 为指定的资产和数量执行买入订单。this.sell(assetCode: string, quantity: number): void- 为指定的资产和数量执行卖出订单。this.print(...msgs: string[]): void- 将消息记录到模拟输出。this.depositCash(amount: number): void- 向投资组合添加指定金额的现金。this.loadScript(path: string): Promise- 加载外部JavaScript文件,允许使用额外的库或模块。this.download(obj: any, name?: string): void- 生成一个包含指定对象数据的可下载文件。
这些工具和方法为实现和测试复杂的交易策略提供了一个全面的环境。用户可以在AlgoWorkspace内访问市场数据、管理投资组合、执行交易和分析结果。