使用 Coinbase Advanced Trade API Python 客户端进行自动化加密货币交易

·

概述

Coinbase Advanced Trade API Python 客户端是一个非官方的 Python 封装库,旨在为开发者提供便捷的方式来与 Coinbase Advanced Trade API 进行交互,从而管理其在 Coinbase 平台上的加密货币交易活动。该库基于官方的 Coinbase Python SDK 构建,提供了更高的稳定性和更丰富的功能。

主要特性

安装与配置

安装包

使用 pip 命令安装该包:

pip install coinbase-advancedtrade-python

开发环境设置

对于开发环境,建议安装测试依赖:

pip install -e ".[test]"

运行测试

安装完成后,可以运行测试来验证安装:

python -m unittest discover -s coinbase_advanced_trader/tests

获取 API 密钥

在使用之前,需要从 Coinbase Developer Platform 获取 API 密钥和密钥。新型的 API 密钥格式如下:

API Key: organizations/{org_id}/apiKeys/{key_id}
API Secret: -----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----\n

身份验证示例

使用新的认证方法进行身份验证的示例代码如下:

from coinbase_advanced_trader.enhanced_rest_client import EnhancedRESTClient

api_key = "organizations/{org_id}/apiKeys/{key_id}"
api_secret = "-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----\n"

client = EnhancedRESTClient(api_key=api_key, api_secret=api_secret)

使用官方 SDK 功能

EnhancedRESTClient 继承自 Coinbase SDK 的 RESTClient,这意味着你可以使用官方 SDK 提供的所有功能。例如,使用 get_product 函数获取产品信息:

product_info = client.get_product(product_id="BTC-USDC")
print(product_info)

使用封装策略

该客户端提供了多种简化交易操作的封装方法。以下是一些示例:

市价买入

# 执行市价买入
client.fiat_market_buy("BTC-USDC", "10")

限价买入

# 以当前现货价格附近挂单买入 $10 的 BTC-USDC
client.fiat_limit_buy("BTC-USDC", "10")

# 以 $10,000 的限价挂单买入 $10 的 BTC-USDC
client.fiat_limit_buy("BTC-USDC", "10", "10000")

# 以当前现货价格的 90% 挂单买入 $10 的 BTC-USDC
client.fiat_limit_buy("BTC-USDC", "10", price_multiplier=".90")

限价卖出

# 以 $100,000 的限价挂单卖出 $10 的 BTC-USDC
client.fiat_limit_sell("BTC-USDC", "10", "100000")

# 以当前现货价格附近挂单卖出 $5 的 BTC-USDC
client.fiat_limit_sell("BTC-USDC", "5")

# 以当前现货价格的 110% 挂单卖出 $5 的 BTC-USDC
client.fiat_limit_sell("BTC-USDC", "5", price_multiplier="1.1")

账户余额操作

EnhancedRESTClient 提供了多种方法来检索和管理加密货币余额。

列出所有非零余额

获取账户中所有非零余额的加密货币字典:

balances = client.list_held_crypto_balances()
print(balances)

获取特定加密货币余额

使用 get_crypto_balance 方法获取特定加密货币的可用余额。该方法利用缓存机制来提高数据检索效率,并返回 Decimal 类型的余额(如果未找到账户则返回 0):

balance = client.get_crypto_balance("BTC")
print(balance)

注意:这两种方法都使用缓存机制来减少 API 调用。账户数据会缓存一小时,之后才会从 Coinbase 重新获取。

增强的账户信息

除了检索基本余额外,EnhancedRESTClient 还支持通过 get_account_by_currency 方法获取详细的账户信息。该方法:

使用场景:当你需要特定账户的全面详细信息时,例如在发起存款或取款前验证账户信息。

示例

# 获取 USD 账户的详细账户信息
account = client.get_account_by_currency("USD")
if account:
    print(f"Account UUID: {account.uuid}")
    print(f"Account Name: {account.name}")
    print(f"Balance: {account.available_balance}{account.currency}")
else:
    print("No account found for USD")

法币存款示例

你可以使用存款功能将法币(例如美元)存入你的 Coinbase 账户。以下示例展示了如何使用已知的账户和付款方法 ID 存入 25 美元。(在实际使用中,请将占位符 ID 替换为实际值。)

示例

from coinbase_advanced_trader.enhanced_rest_client import EnhancedRESTClient

# 初始化客户端(确保你的 API 密钥和密钥已安全设置)
client = EnhancedRESTClient(api_key="your_api_key", api_secret="your_api_secret")

# 在存款前运行此命令以获取你的付款方法 ID(银行账户等)
client.show_deposit_methods()

# 使用已知 ID 将 25 美元存入你的 Coinbase 账户
client.deposit_fiat(
    account_id="your_usd_account_id",  # 替换为你的实际 USD 账户 ID(参见 get_account_by_currency)
    payment_method_id="your_payment_method_id",  # 替换为你的实际付款方法 ID(参见 show_deposit_methods)
    amount="25.00",
    currency="USD"
)

所有存款详细信息都会由服务自动记录。请务必使用安全的方法来存储和检索你的密钥和账户标识符。

Fear and Greed Index 的使用

该客户端使用 fear-and-greed-crypto 包来获取当前的 Fear and Greed Index 值。该指数有助于确定市场情绪并自动化交易决策。

# 基于 Fear and Greed Index 进行交易
client.trade_based_on_fgi("BTC-USDC", "10")

你可以通过更新 Fear and Greed Index 计划来自定义交易行为:

# 获取当前 FGI 计划
current_schedule = client.get_fgi_schedule()

# 使用自定义阈值和操作更新 FGI 计划
new_schedule = [
    {'threshold': 15, 'factor': 1.2, 'action': 'buy'},  # 在极度恐惧时买入更多
    {'threshold': 37, 'factor': 1.0, 'action': 'buy'},  # 在恐惧时正常买入
    {'threshold': 35, 'factor': 0.8, 'action': 'sell'}, # 在贪婪时卖出部分
    {'threshold': 45, 'factor': 0.6, 'action': 'sell'}  # 在极度贪婪时卖出更多
]

client.update_fgi_schedule(new_schedule)

该计划确定:

例如,使用上述计划:

AlphaSquared 集成

该客户端现在包含与 AlphaSquared 的集成,允许你基于 AlphaSquared 的风险分析执行交易策略。

设置

  1. AlphaSquared 获取你的 AlphaSquared API 密钥。
  2. 初始化 AlphaSquared 客户端以及 Coinbase 客户端:
from coinbase_advanced_trader import EnhancedRESTClient, AlphaSquaredTrader
from alphasquared import AlphaSquared

# 初始化 Coinbase 客户端
coinbase_api_key = "YOUR_COINBASE_API_KEY"
coinbase_api_secret = "YOUR_COINBASE_API_SECRET"
coinbase_client = EnhancedRESTClient(api_key=coinbase_api_key, api_secret=coinbase_api_secret)

# 初始化 AlphaSquared 客户端
alphasquared_api_key = "YOUR_ALPHASQUARED_API_KEY"
alphasquared_client = AlphaSquared(alphasquared_api_key, cache_ttl=60)

# 创建 AlphaSquaredTrader
trader = AlphaSquaredTrader(coinbase_client, alphasquared_client)

执行 AlphaSquared 策略

基于 AlphaSquared 的风险分析执行交易策略:

# 设置交易参数
product_id = "BTC-USDC"
strategy_name = "My Custom Strategy"  # 你在 AlphaSquared 中的自定义策略名称

# 执行策略
trader.execute_strategy(product_id, strategy_name)

这将:

  1. 从 AlphaSquared 获取指定资产的当前风险等级。
  2. 根据 AlphaSquared 中定义的自定义策略和当前风险,确定适当的操作(买入/卖出)和价值。
  3. 如果条件满足,在 Coinbase 上执行相应的交易。
注意:请确保在生产代码中处理异常并实施适当的日志记录。此集成仅适用于自定义策略;不适用于 AlphaSquared 提供的默认策略。

自定义策略

你可以通过修改 AlphaSquaredTrader 类中的 execute_strategy 方法来创建自定义策略。这允许你根据 AlphaSquared 提供的风险级别定义特定的交易逻辑。

AWS Lambda 兼容性

在 AWS Lambda 中使用此包时,请确保你的 Lambda 函数配置为使用 Python 3.12。Lambda 层中的加密二进制文件是为 Python 3.12 编译的,使用不同的 Python 运行时版本会导致兼容性问题。

配置你的 Lambda 函数:

  1. 将运行时设置为 Python 3.12
  2. 使用最新版本中提供的 Lambda 层
  3. 如果构建自定义层,请确保使用与 Lambda 运行时相同的 Python 版本构建。

文档与资源

有关 Coinbase Advanced Trader API 的更多信息,请查阅 官方 API 文档

👉 探索更多自动化交易策略

常见问题

什么是 Coinbase Advanced Trade API Python 客户端?

这是一个非官方的 Python 封装库,旨在简化与 Coinbase Advanced Trade API 的交互过程。它提供了易于使用的方法来执行交易、管理账户余额和集成第三方服务。

如何获取 API 密钥?

你需要从 Coinbase Developer Platform 获取 API 密钥和密钥。新型的 API 密钥格式包含组织 ID 和密钥 ID,密钥采用 EC 私钥格式。

该客户端支持哪些交易类型?

该客户端支持市价单、限价单等多种交易类型。你还可以使用价格乘数来设置相对于当前价格的买卖订单。

如何管理账户余额?

该客户端提供了多种方法来检索和管理加密货币余额,包括列出所有非零余额、获取特定货币余额以及获取详细的账户信息。

什么是 Fear and Greed Index?

Fear and Greed Index 是一个衡量市场情绪的指标,范围从 0 到 100。该客户端集成了此指标,允许你根据市场情绪自动化交易决策。

如何集成第三方策略服务?

该客户端支持与 AlphaSquared 等第三方服务的集成。你需要在相应的平台注册并获取 API 密钥,然后在代码中初始化相应的客户端。

该客户端是否支持 AWS Lambda?

是的,该客户端支持在 AWS Lambda 环境中运行。但需要注意使用正确的 Python 版本(3.12)和相应的依赖层。

免责声明

该项目与 Coinbase 没有隶属、维护或认可关系。使用此软件风险自负。交易加密货币存在财务损失的风险。该软件的开发人员不对使用此软件时产生的任何财务损失或损害负责。此软件中的任何内容都不应被视为使用特定策略进行交易的诱因或财务建议。