ccxt,全称CryptoCurrencyeXchangeTrading,是一个用于与加密货币交易所API进行交互的库。它支持多种交易所(如Binance、Okx、Coinbase等),可以方便地获取市场数据、查询账户信息并执行交易等。
ccxt,全称 CryptoCurrency eXchange Trading,是一个用于与加密货币交易所 API 进行交互的库。它支持多种交易所(如 Binance、Okx、Coinbase等),可以方便地获取市场数据、查询账户信息并执行交易等。ccxt库支持多种语言,如JavaScript、Python、PHP、C#,本文将使用Python进行演示。
<br>
确保安装了Python。
ccxt库的安装:
pip install ccxt
<br>
在ccxt的操作中,根据权限可以分为两种操作,一种操作是需要可以直接进行的,另一种则需要API key。
public API:可以实现大众的操作,不涉及到个人的。
import ccxt # 导入ccxt库
print(ccxt.exchanges) # 输出ccxt支持的所有交易所
exchange = ccxt.binance() # 创建Binance交易所实例
markets = exchange.load_markets() # 获取Binance所有交易对信息
print(markets) # 打印交易对信息
ticker = exchange.fetch_ticker('BTC/USDT') # 获取 BTC/USDT 的最新市场数据
print(ticker) # 打印价格信息
# timeframe: 时间帧,每根K线的时间长度; limit: K线条数
K_data = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
print(k_data)
<br>
private API:与个人账户相关联的操作。
对于Binance,API key在【账户】-> 【API管理】中创建。(需要一定的验证等级)
# 以API和私钥生成交易所实例
exchange = ccxt.binance({
'apiKey': 'YOUR_API_KEY',
'secret': 'YOUR_SECRET_KEY',
})
# 获取账户余额
balance = exchange.fetch_balance()
print(balance)
# 订单查询
order_info = exchange.fetch_orders(symbol) # 所有订单
order_info = exchange.fetch_open_orders(symbol) # 未完成的订单
order_info = exchange.fetch_closed_orders(symbol) # 已完成的订单
print(order_info)
# 成交查询
exchange.fetchMyTrades(symbol)
# 限价交易,以60000美元价格买入0.001 BTC
order = exchange.CreateLimitBuyOrder('BTC/USDT', 0.001, 20000)
print(order)
# 市价交易,卖出0.001 BTC
order = exchange.CreateMarketSellOrder('BTC/USDT', 0.001)
print(order)
# 撤单
exchange.CancelOrder(order_id)
<br>
在实际应用中,需要对过往的数据进行分析,因此会结合数据分析的库使用,如panda
。下面是一个demo,实现一个涨买跌卖的简单策略。使用pandas库对ohlcv数据进行分析,得出交易信号,然后执行交易。
import ccxt
import time
import pandas
# 初始化 Binance 交易所
exchange = ccxt.binance({
'apiKey': '你的API_KEY',
'secret': '你的SECRET',
})
# 获取市场数据
def fetch_ohlcv(symbol, timeframe, limit=2):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
df = pandas.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['timestamp'] = pandas.to_datetime(df['timestamp'], unit='ms')
# df.set_index('timestamp', inplace=True) # 将 timestamp 列设为索引
return df
# 简单交易策略
def strategy(df):
if df.iloc[-1]['close'] > df.iloc[-2]['close']:
return 'buy'
elif df.iloc[-1]['close'] < df.iloc[-2]['close']:
return 'sell'
else:
return 'hold'
# 执行策略
symbol = 'BTC/USDT'
timeframe = '1m' # 1分钟K线
while True:
try:
# 获取最近的两条K线数据
df = fetch_ohlcv(symbol, timeframe)
# 执行策略
action = strategy(df)
if action == 'buy':
# 模拟买入0.001 BTC
order = exchange.create_order(symbol, 'market', 'buy', 0.001)
print(f'买入订单:{order}')
elif action == 'sell':
# 模拟卖出0.001 BTC
order = exchange.create_order(symbol, 'market', 'sell', 0.001)
print(f'卖出订单:{order}')
# 每分钟检查一次
time.sleep(60)
except Exception as e:
print(f"出错: {e}")
<br>
本篇文章只是对ccxt的使用进行了简单介绍,对于更多的详细内容,可查阅官方文档。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!