量化交易研究群(VX) = py_ted
方法 | 解释 |
---|---|
get_history_candle | 获取产品的历史K线数据 |
get_history_candle_latest | 获取产品指定数量的最新历史K线数据 |
get_history_candle_by_date | 获取产品指定日期的历史K线数据 |
get_history_candle_latest_ts | 获取历史K线数据中最新的毫秒时间戳 |
update_history_candle | 更新产品历史K线数据到指定时间 |
candle_to_df | 将Binance的candle转化为DataFrame |
from binance_interface.app import BinanceCM
from binance_interface.app.utils import eprint
import paux.date
# 转发:需搭建转发服务器,可参考:https://github.com/pyted/binance_resender
proxy_host = None
key = 'xxxx'
secret = 'xxxx'
binanceCM = BinanceCM(
key=key,
secret=secret,
proxy_host=proxy_host,
timezone='Asia/Shanghai',
)
market = binanceCM.market
candle_result = market.get_history_candle(
symbol='BTCUSD_PERP',
start='2023-01-01 00:00:00',
end='2023-01-01 23:59:00',
bar='1m',
)
eprint(candle_result)
输出:
>>> {'code': 200,
>>> 'data': array([[1.67250240e+12, 1.65781000e+04, 1.65803000e+04, ...,
>>> 3.11300000e+03, 1.87770117e+01, 0.00000000e+00],
>>> [1.67250246e+12, 1.65803000e+04, 1.65803000e+04, ...,
>>> 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
>>> [1.67250252e+12, 1.65804000e+04, 1.65804000e+04, ...,
>>> 3.74900000e+03, 2.26110347e+01, 0.00000000e+00],
>>> ...,
>>> [1.67258862e+12, 1.65399000e+04, 1.65430000e+04, ...,
>>> 3.07400000e+03, 1.85833263e+01, 0.00000000e+00],
>>> [1.67258868e+12, 1.65430000e+04, 1.65446000e+04, ...,
>>> 1.50000000e+03, 9.06709593e+00, 0.00000000e+00],
>>> [1.67258874e+12, 1.65453000e+04, 1.65460000e+04, ...,
>>> 9.73600000e+03, 5.88436566e+01, 0.00000000e+00]]),
>>> 'msg': ''}
candle_result = market.get_history_candle_latest(
symbol='BTCUSD_PERP',
length=600,
bar='1m',
)
eprint(candle_result)
输出:
>>> {'code': 200,
>>> 'data': array([[1.70615694e+12, 3.99759000e+04, 3.99759000e+04, ...,
>>> 2.52000000e+02, 6.30379800e-01, 0.00000000e+00],
>>> [1.70615700e+12, 3.99759000e+04, 3.99795000e+04, ...,
>>> 1.67700000e+03, 4.19518756e+00, 0.00000000e+00],
>>> [1.70615706e+12, 3.99795000e+04, 3.99840000e+04, ...,
>>> 8.52000000e+02, 2.13095785e+00, 0.00000000e+00],
>>> ...,
>>> [1.70619276e+12, 3.99779000e+04, 3.99920000e+04, ...,
>>> 2.94600000e+03, 7.36830830e+00, 0.00000000e+00],
>>> [1.70619282e+12, 3.99768000e+04, 3.99817000e+04, ...,
>>> 1.71500000e+03, 4.28997026e+00, 0.00000000e+00],
>>> [1.70619288e+12, 3.99817000e+04, 3.99872000e+04, ...,
>>> 6.32000000e+02, 1.58064849e+00, 0.00000000e+00]]),
>>> 'msg': ''}
candle_result = market.get_history_candle_by_date(
symbol='BTCUSD_PERP',
date='2023-01-01', # 默认时区为美国时区
bar='1m',
)
eprint(candle_result)
输出:
>>> {'code': 200,
>>> 'data': array([[1.67250240e+12, 1.65781000e+04, 1.65803000e+04, ...,
>>> 3.11300000e+03, 1.87770117e+01, 0.00000000e+00],
>>> [1.67250246e+12, 1.65803000e+04, 1.65803000e+04, ...,
>>> 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
>>> [1.67250252e+12, 1.65804000e+04, 1.65804000e+04, ...,
>>> 3.74900000e+03, 2.26110347e+01, 0.00000000e+00],
>>> ...,
>>> [1.67258862e+12, 1.65399000e+04, 1.65430000e+04, ...,
>>> 3.07400000e+03, 1.85833263e+01, 0.00000000e+00],
>>> [1.67258868e+12, 1.65430000e+04, 1.65446000e+04, ...,
>>> 1.50000000e+03, 9.06709593e+00, 0.00000000e+00],
>>> [1.67258874e+12, 1.65453000e+04, 1.65460000e+04, ...,
>>> 9.73600000e+03, 5.88436566e+01, 0.00000000e+00]]),
>>> 'msg': ''}
ts_result = market.get_history_candle_latest_ts(
bar='1m',
)
eprint(ts_result)
输出:
>>> {'code': 200, 'data': 1706192880000.0, 'msg': ''}
# 获取candle1,待更新
candle1 = market.get_history_candle(
symbol='BTCUSD_PERP',
start='2023-01-01 10:00:00',
end='2023-01-02 10:00:00',
bar='1m',
)['data']
# 更新candle1到指定日期时间(智能节约权重)
candle_result = market.update_history_candle(
candle=candle1, # 支持candle1为空
symbol='BTCUSD_PERP',
length=1440, # 保留数量
end='2023-01-02 23:59:00', # end默认为本地计算机时间戳
bar='1m',
)
eprint(candle_result)
candle_start = paux.date.to_fmt(
candle_result['data'][0, 0],
timezone='Asia/Shanghai',
)
candle_end = paux.date.to_fmt(
candle_result['data'][-1, 0],
timezone='Asia/Shanghai',
)
candle_length = candle_result['data'].shape[0]
print('历史K线时间起点:', candle_start)
print('历史K线时间终点:', candle_end)
print('历史K线时间长度:', candle_length)
输出:
>>> {'code': 200,
>>> 'data': array([[1.67258880e+12, 1.65461000e+04, 1.65495000e+04, ...,
>>> 1.85700000e+04, 1.12219613e+02, 0.00000000e+00],
>>> [1.67258886e+12, 1.65495000e+04, 1.65540000e+04, ...,
>>> 1.72440000e+04, 1.04186162e+02, 0.00000000e+00],
>>> [1.67258892e+12, 1.65543000e+04, 1.65700000e+04, ...,
>>> 2.67070000e+04, 1.61268588e+02, 0.00000000e+00],
>>> ...,
>>> [1.67267502e+12, 1.67247000e+04, 1.67247000e+04, ...,
>>> 5.07000000e+02, 3.03144451e+00, 0.00000000e+00],
>>> [1.67267508e+12, 1.67246000e+04, 1.67246000e+04, ...,
>>> 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
>>> [1.67267514e+12, 1.67223000e+04, 1.67234000e+04, ...,
>>> 7.54300000e+03, 4.51072737e+01, 0.00000000e+00]]),
>>> 'msg': ''}
>>> 历史K线时间起点: 2023-01-02 00:00:00
>>> 历史K线时间终点: 2023-01-02 23:59:00
>>> 历史K线时间长度: 1440
candle = candle_result['data']
candle
输出:
>>> array([[1.67258880e+12, 1.65461000e+04, 1.65495000e+04, ...,
>>> 1.85700000e+04, 1.12219613e+02, 0.00000000e+00],
>>> [1.67258886e+12, 1.65495000e+04, 1.65540000e+04, ...,
>>> 1.72440000e+04, 1.04186162e+02, 0.00000000e+00],
>>> [1.67258892e+12, 1.65543000e+04, 1.65700000e+04, ...,
>>> 2.67070000e+04, 1.61268588e+02, 0.00000000e+00],
>>> ...,
>>> [1.67267502e+12, 1.67247000e+04, 1.67247000e+04, ...,
>>> 5.07000000e+02, 3.03144451e+00, 0.00000000e+00],
>>> [1.67267508e+12, 1.67246000e+04, 1.67246000e+04, ...,
>>> 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
>>> [1.67267514e+12, 1.67223000e+04, 1.67234000e+04, ...,
>>> 7.54300000e+03, 4.51072737e+01, 0.00000000e+00]])
df = market.candle_to_df(candle)
df.head()
输出:
>>> openTs open high low close volume \
>>> 0 2023-01-02 00:00:00 16546.1 16549.5 16546.0 16549.4 18729.0
>>> 1 2023-01-02 00:01:00 16549.5 16554.0 16549.4 16554.0 17332.0
>>> 2 2023-01-02 00:02:00 16554.3 16570.0 16554.3 16567.0 51092.0
>>> 3 2023-01-02 00:03:00 16567.0 16567.0 16559.2 16559.3 41125.0
>>> 4 2023-01-02 00:04:00 16559.2 16559.3 16554.8 16554.8 13111.0
>>>
>>> closeTs turnover tradeNum buyVolume buyTurnover
>>> 0 2023-01-02 00:00:59 113.180418 251.0 18570.0 112.219613
>>> 1 2023-01-02 00:01:59 104.717900 215.0 17244.0 104.186162
>>> 2 2023-01-02 00:02:59 308.499808 873.0 26707.0 161.268588
>>> 3 2023-01-02 00:03:59 248.335691 771.0 26800.0 161.837695
>>> 4 2023-01-02 00:04:59 79.184971 220.0 374.0 2.258660