4.4 Binance_interface APP 币本位合约行情-历史K线

Binance_interface APP 币本位合约行情-历史K线

  • Github地址
  • PyTed量化交易研究院
量化交易研究群(VX) = py_ted

目录

  • Binance_interface APP 币本位合约行情-历史K线
    • 1. APP 币本位合约行情-历史K线函数总览
    • 2. 模型实例化
    • 3. 获取产品的历史K线数据 get_history_candle
    • 4. 获取产品指定数量的最新历史K线数据 get_history_candle_latest
    • 5. 获取产品指定日期的历史K线数据 get_history_candle_by_date
    • 6. 获取历史K线数据中最新的毫秒时间戳 get_history_candle_latest_ts
    • 7. 更新产品历史K线数据到指定时间 update_history_candle
    • 8. 将Binance的candle转化为DataFrame candle_to_df

1. APP 币本位合约行情-历史K线函数总览

方法 解释
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

2. 模型实例化

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

3. 获取产品的历史K线数据 get_history_candle

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': ''}

4. 获取产品指定数量的最新历史K线数据 get_history_candle_latest

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': ''}

5. 获取产品指定日期的历史K线数据 get_history_candle_by_date

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': ''}

6. 获取历史K线数据中最新的毫秒时间戳 get_history_candle_latest_ts

ts_result = market.get_history_candle_latest_ts(
    bar='1m',
)
eprint(ts_result)

输出:

>>> {'code': 200, 'data': 1706192880000.0, 'msg': ''}

7. 更新产品历史K线数据到指定时间 update_history_candle

# 获取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

8. 将Binance的candle转化为DataFrame candle_to_df

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

你可能感兴趣的:(Binance量化交易,区块链,Python,量化交易,实盘交易,Binance)