在算法中请求加密货币数据:创建订阅与实战示例

·

在算法交易中,获取准确的加密货币数据是策略成功的关键。本文将指导你如何在算法中订阅加密货币数据流,掌握订阅创建、市场设置、杠杆调整等核心操作,并提供实战示例以加深理解。

创建加密货币数据订阅

要订阅加密货币数据,你需要在算法的 Initialize 方法中调用 AddCrypto 方法。该方法会返回一个包含 Symbol 属性的 Crypto 对象,用于在 OnData 方法中访问实时数据。

基础订阅示例

以下代码展示了如何创建比特币(BTCUSD)的数据订阅:

_symbol = AddCrypto("BTCUSD").Symbol;
self._symbol = self.add_crypto("BTCUSD").symbol

通过保存该符号引用,你可以在后续的数据处理中轻松获取该加密货币的实时价格信息。

动态资产组合

如需创建动态的加密货币资产组合,可以添加加密货币宇宙(Crypto Universe),这将允许你灵活调整所跟踪的资产范围。

关键配置选项

市场选择

不同的交易所可能提供不同的价格数据。LEAN 支持多个加密货币市场,你可以通过指定 market 参数来设置数据来源:

_symbol = AddCrypto("BTCUSD", market: Market.Coinbase).Symbol;
self._symbol = self.add_crypto("BTCUSD", market=Market.COINBASE).symbol

各经纪商模型通常已为每种资产类别设置了默认市场,因此在使用特定经纪商模型时,可能无需额外指定市场。

数据填充设置

数据填充(Fill Forward)确保在每个时间切片中都有数据点:若当前切片无数据,则使用前一个数据点。默认情况下该功能开启。禁用填充可能导致陈旧填充或零交易量问题:

_symbol = AddCrypto("BTCUSD", fillForward: false).Symbol;
self._symbol = self.add_crypto("BTCUSD", fill_forward=False).symbol

杠杆调整

杠杆水平影响你的购买力和保证金要求。不同经纪商提供的杠杆不同,你可以在创建订阅时通过 leverage 参数进行调整:

_symbol = AddCrypto("BTCUSD", leverage: 3).Symbol;
self._symbol = self.add_crypto("BTCUSD", leverage=3).symbol

合理设置杠杆对于风险控制和资金利用至关重要。👉 查看实时杠杆工具 以优化你的交易策略。

实战示例:初始化币安算法

以下示例演示如何为币安交易所的 BTC/USDT 和 ETH/USDT 交易对请求数据。币安经纪商模型提供了准确的费用和填充模拟,确保回测的真实性。

由于两个交易对的报价货币均为 USDT,需将账户货币设置为 USDT 而非 USD,以避免因货币转换问题导致的订单失败。

public class CryptoExampleAlgorithm : QCAlgorithm
{
    public override void Initialize()
    {
        SetBrokerageModel(BrokerageName.Binance, AccountType.Cash);
        SetAccountCurrency("USDT", 100000);
        AddCrypto("BTCUSDT");
        AddCrypto("ETHUSDT");
    }
}
class CryptoExampleAlgorithm(QCAlgorithm):
    def initialize(self) -> None:
        self.set_brokerage_model(BrokerageName.BINANCE, AccountType.CASH)
        self.set_account_currency("USDT", 100000)
        self.add_crypto("BTCUSDT", market=Market.BINANCE)
        self.add_crypto("ETHUSDT", market=Market.BINANCE)

此示例展示了如何正确配置经纪商模型、账户货币及数据订阅,为算法交易奠定坚实基础。

常见问题

什么是数据填充(Fill Forward)?

数据填充是一种数据补偿机制。当某个时间点缺少数据时,系统会自动使用前一个有效数据点进行填充,确保数据连续性,避免策略因数据缺失而出现异常。

如何选择适合的市场?

市场选择取决于你的交易需求和经纪商支持。常见市场包括 Coinbase、Binance 等。若已设置经纪商模型,通常无需手动指定市场,系统会自动匹配默认市场。

杠杆设置有哪些注意事项?

杠杆放大收益的同时也增加风险。不同经纪商提供的杠杆比例不同,需根据自身风险承受能力和策略需求进行设置。过高杠杆可能导致强制平仓,需谨慎管理。

加密货币数据订阅支持哪些资产?

目前支持主流加密货币交易对,如 BTCUSD、ETHUSD 等。具体资产列表可参考相关数据集文档。非 Fungible 资产(如 NFT)目前暂不支持。

账户货币设置为何重要?

账户货币需与交易对的报价货币一致,以避免货币转换错误。例如,交易 USDT 报价的资产时,账户货币应设置为 USDT,确保资金计算和订单执行的准确性。

如何动态调整加密货币资产组合?

通过添加加密货币宇宙(Crypto Universe),你可以实现资产的动态管理,根据特定条件自动调整所跟踪的加密货币,适应市场变化。

掌握这些核心概念和操作,你将能够高效地在算法中集成加密货币数据,构建 robust 的交易策略。不断实践和优化,提升你的算法交易能力。