一个小程序,可以实现OKEX平台上所有行情数据的获取,v5版本,这个是数据获取以及以csv格式保存到本地的py
先上代码
分三段讲解一下如何使用
1.模块导入以及类的实例化
把自己的api_key啥的填一下就OK
import datetime
import time
import pandas as pd
from gary import OkexSpot
ok = OkexSpot(
symbol="ETH-USDT-SWAP",
access_key="",
secret_key="",
passphrase="",
host="https://www.okex.com"
)
2.这是Dataframe显示的设置,可根据自己实际需要选择
其他的一些使用例子,可以自己运行下看看,具体是啥意思下一个文件有注释
# 显示Dateframe所有列(参数设置为None代表显示所有行,也可以自行设置数字)
pd.set_option('display.max_columns', None)
# 显示Dateframe所有行
pd.set_option('display.max_rows', None)
# # 设置Dataframe数据的显示长度,默认为50
# pd.set_option('max_colwidth', 200)
# # 禁止Dateframe自动换行(设置为Flase不自动换行,True反之)
# pd.set_option('expand_frame_repr', False)
# a = ok.get_exchange_info()
# a = ok.get_kline('1m', '1628592780000')[0]['data'] # o.h.l.c
# a = ok.get_asset('USDT')[0]['data'][0]['details'][0]
# a = ok.get_order_history('SWAP', 'all')[0]['data']from gary import OkexSpot
# a = ok.get_order_status('344979967079510017')
# a = ok.open(price=0, quantity=1, side='buy', order_type='market')
# a = ok.close(price=0, quantity=1, side='sell', order_type='market')
# a = ok.get_open_orders()
# print(a)
3.数据获取以及保存
day = 30
ed = 1622563200000 + 3600000 * 24 * (day-1) #6-2-000000
Time = ed
time_m = ed - 3600000 * 23
data = pd.DataFrame()
while Time >= time_m:
k_data = ok.get_kline('1m', str(Time))[0]['data']
data_columes = ['datetime', 'open', 'high', 'low', 'close', 'volumei', 'volumef']
k_data = pd.DataFrame(data=k_data, columns=data_columes)
k_data = k_data.set_index('datetime')
data = data.append(k_data)
if Time == time_m:
# path = 'E:/restv5/data_kline/data_kline_1m_2021-6/6-'+str(day)+'.csv'
data.to_csv(str(path))
Time = Time - 3600000
print(data)
另外的的文件:(已修改,可直接用于合约,将两个文件都放于同一目录下)
import base64
import hmac
import json
import time
import requests
from urllib.parse import urljoin
class OkexSpot:
def __init__(self, symbol, access_key, secret_key, passphrase, host=None):
self.symbol = symbol
self._host