非常重要的问题:使用CCXT框架来操控交易所,默认情况都是执行币币交易spot,那么如何操控期货呢?这里在官方文档没有介绍,网上也么有相关的文章介绍,今天在这里总结一下!
对于期货,必须按照期货的参数来传值!
import ccxt
from app.exchanges.config.exchange_api_config import ExchangeAPIConfig
exchange = ccxt.okex3({
"apiKey": ExchangeAPIConfig.okex_api_v3["api_key"],
"secret": ExchangeAPIConfig.okex_api_v3["seceret_key"],
"password": ExchangeAPIConfig.okex_api_v3["passphrase"],
'timeout': 30000,
'enableRateLimit': True,
})
'''
以OKEX为例,CCXT如何来获取期货futures的K先数据和下单!
第一步:请运行方法exchange.load_markets()获取交易市场的数据架构!
第二步:这些交易数据就包含okex交易所的所有交易对,其中包括【spot(币币)、margin(币币杠杆)、futures(交割合约、swap(永续合约))】
第三步:查看spot的【symbol属性】和futures的【symbol属性】的格式!
官方文档仅介绍了spot币币交易的symbol格式为BTC/USDT,
却并没有说明期货futures的格式为【okex为例】:BTC-USD-191115【19年周合约】 BTC-USD-191227【19年季度】
'''
exchange.load_markets()
# 获取spot币币交易的市场数据结构
print(exchange.market("BTC/USDT"))
# 获取周合约的交易的市场数据结构
print(exchange.market("BTC-USD-191115"))
# 查询futures期货的K线数据
data = exchange.fetch_ticker("ETH-USD-191115")
# 【ccxt统一api调用】期货的交易,参数完全需要根据交易所api类传【注意;期货的参数amount数量必须大于1的整数】
order = exchange.create_order("ETH-USD-191227", "1", "sell", 1, 181.1,
params={"client_oid": "oktfuture0", "order_type": "0"})
# 【cctx隐式api调用】【注意;期货的参数size数量必须大于1的整数】
order = exchange.futures_post_order({
"client_oid": "oktfuture0",
"instrument_id": "ETH-USD-191227",
"type": "1",
"size": "1",
"price": "181.1",
"order_type": "0"
})
print(order)
spot币币交易参考市场数据结构:https://ccxt.readthedocs.io/en/latest/manual.html#market-structure
#spot币币的市场结构数据
"BTC/USDT":{
'percentage': True,
'taker': 0.0015,
'maker': 0.001,
'precision': {
'amount': 8,
'price': 1
},
'limits': {
'amount': {
'min': 0.001,
'max': None
},
'price': {
'min': 0.1,
'max': None
},
'cost': {
'min': 0.0001,
'max': None
}
},
'id': 'BTC-USDT',
'symbol': 'BTC/USDT',
'base': 'BTC',
'quote': 'USDT',
'baseId': 'BTC',
'quoteId': 'USDT',
'info': {
'base_currency': 'BTC',
'instrument_id': 'BTC-USDT',
'min_size': '0.001',
'quote_currency': 'USDT',
'size_increment': '0.00000001',
'tick_size': '0.1'
},
'type': 'spot',
'spot': True,
'futures': False,
'swap': False,
'active': True
}
# futures期货的市场数据结构
'BTC-USD-191115':{
'percentage': True,
'taker': 0.0005,
'maker': 0.0002,
'precision': {
'amount': None,
'price': 2
},
'limits': {
'amount': {
'min': None,
'max': None
},
'price': {
'min': 0.01,
'max': None
},
'cost': {
'min': None,
'max': None
}
},
'id': 'BTC-USD-191115',
'symbol': 'BTC-USD-191115',
'base': 'BTC',
'quote': 'USD',
'baseId': 'BTC',
'quoteId': 'USD',
'info': {
'instrument_id': 'BTC-USD-191115',
'underlying_index': 'BTC',
'quote_currency': 'USD',
'tick_size': '0.01',
'contract_val': '100',
'listing': '2019-11-01',
'delivery': '2019-11-15',
'trade_increment': '1',
'alias': 'this_week',
'underlying': 'BTC-USD',
'base_currency': 'BTC',
'settlement_currency': 'BTC',
'is_inverse': 'true',
'contract_val_currency': 'USD'
},
'type': 'futures',
'spot': False,
'futures': True,
'swap': False,
'active': True
}
请参考我的文章:https://blog.csdn.net/weixin_43343144/article/details/102989697