python做量化投资系列之比特币初始配置
作者:云金杞 时间:2021-06-28 06:01:31
本文实例为大家分享了python比特币初始配置的具体代码,供大家参考,具体内容如下
# -*- coding: utf-8 -*-
"""
Created on Fri Jan 13 10:36:19 2017
@author: yunjinqi
E-mail:yunjinqi@qq.com
Differentiate yourself in the world from anyone else.
"""
#用于访问OKCOIN 现货REST API
#####################################################
import http.client
import urllib
import json
import hashlib
import time
def buildMySign(params,secretKey):
sign = ''
for key in sorted(params.keys()):
sign += key + '=' + str(params[key]) +'&'
data = sign+'secret_key='+secretKey
return hashlib.md5(data.encode("utf8")).hexdigest().upper()
def httpGet(url,resource,params=''):
conn = http.client.HTTPSConnection(url, timeout=10)
conn.request("GET",resource + '?' + params)
#print(resource + '?' + params)
response = conn.getresponse()
data = response.read().decode('utf8')
return json.loads(data)
def httpPost(url,resource,params):
headers = {
"Content-type" : "application/x-www-form-urlencoded"
}
conn = http.client.HTTPSConnection(url, timeout=10)
temp_params = urllib.parse.urlencode(params)
#print("https://"+url+resource+"?"+str(temp_params))
conn.request("POST", resource,temp_params,headers)
response = conn.getresponse()
data = response.read().decode('utf-8')
params.clear()
conn.close()
return data
#####################################################
import urllib
class OKCoinSpot:
def __init__(self,url,apikey,secretkey):
self.__url = url
self.__apikey = apikey
self.__secretkey = secretkey
print(self.__secretkey)
#获取OKCOIN现货行情信息
def ticker(self,symbol = ''):
TICKER_RESOURCE = "/api/v1/ticker.do"
params=''
if symbol:
params = 'symbol=%(symbol)s' %{'symbol':symbol}
return httpGet(self.__url,TICKER_RESOURCE,params)
#获取OKCOIN现货市场深度信息
def depth(self,symbol = ''):
DEPTH_RESOURCE = "/api/v1/depth.do"
params=''
if symbol:
params = 'symbol=%(symbol)s' %{'symbol':symbol}
return httpGet(self.__url,DEPTH_RESOURCE,params)
#获取OKCOIN现货历史交易信息
def trades(self,symbol = ''):
TRADES_RESOURCE = "/api/v1/trades.do"
params=''
if symbol:
params = 'symbol=%(symbol)s' %{'symbol':symbol}
return httpGet(self.__url,TRADES_RESOURCE,params)
#获取用户现货账户信息
def userinfo(self):
USERINFO_RESOURCE = "/api/v1/userinfo.do"
params ={}
params['api_key'] = self.__apikey
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,USERINFO_RESOURCE,params)
#现货交易
def trade(self,symbol,tradeType,price='',amount=''):
TRADE_RESOURCE = "/api/v1/trade.do"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'type':tradeType
}
if price:
params['price'] = price
if amount:
params['amount'] = amount
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,TRADE_RESOURCE,params)
#现货批量下单
def batchTrade(self,symbol,tradeType,orders_data):
BATCH_TRADE_RESOURCE = "/api/v1/batch_trade.do"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'type':tradeType,
'orders_data':orders_data
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,BATCH_TRADE_RESOURCE,params)
#现货取消订单
def cancelOrder(self,symbol,orderId):
CANCEL_ORDER_RESOURCE = "/api/v1/cancel_order.do"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'order_id':orderId
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,CANCEL_ORDER_RESOURCE,params)
#现货订单信息查询
def orderinfo(self,symbol,orderId):
ORDER_INFO_RESOURCE = "/api/v1/order_info.do"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'order_id':orderId
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,ORDER_INFO_RESOURCE,params)
#现货批量订单信息查询
def ordersinfo(self,symbol,orderId,tradeType):
ORDERS_INFO_RESOURCE = "/api/v1/orders_info.do"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'order_id':orderId,
'type':tradeType
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,ORDERS_INFO_RESOURCE,params)
#现货获得历史订单信息
def orderHistory(self,symbol,status,currentPage,pageLength):
ORDER_HISTORY_RESOURCE = "/api/v1/order_history.do"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'status':status,
'current_page':currentPage,
'page_length':pageLength
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,ORDER_HISTORY_RESOURCE,params)
def getKline(self,duration,size,since):
kline_resourse = "https://www.okcoin.cn/api/v1/kline.do"
params = {
#'api_key': self.__apikey,
'symbol': "btc_cny",
'type': duration,
'size': size,
'since': since
}
temp_params = urllib.parse.urlencode(params)
#print(temp_params)
return httpGet(self.__url, kline_resourse, temp_params)
########################################################
#!/usr/bin/python
# -*- coding: utf-8 -*-
#用于访问OKCOIN 期货REST API
import urllib
class OKCoinFuture:
def __init__(self,url,apikey,secretkey):
self.__url = url
self.__apikey = apikey
self.__secretkey = secretkey
#OKCOIN期货行情信息
def future_ticker(self,symbol,contractType):
FUTURE_TICKER_RESOURCE = "/api/v1/future_ticker.do"
params = ''
if symbol:
params += '&symbol=' + symbol if params else 'symbol=' +symbol
if contractType:
params += '&contract_type=' + contractType if params else 'contract_type=' +symbol
return httpGet(self.__url,FUTURE_TICKER_RESOURCE,params)
#OKCoin期货市场深度信息
def future_depth(self,symbol,contractType,size):
FUTURE_DEPTH_RESOURCE = "/api/v1/future_depth.do"
params = ''
if symbol:
params += '&symbol=' + symbol if params else 'symbol=' +symbol
if contractType:
params += '&contract_type=' + contractType if params else 'contract_type=' +symbol
if size:
params += '&size=' + size if params else 'size=' + size
return httpGet(self.__url,FUTURE_DEPTH_RESOURCE,params)
#OKCoin期货交易记录信息
def future_trades(self,symbol,contractType):
FUTURE_TRADES_RESOURCE = "/api/v1/future_trades.do"
params = ''
if symbol:
params += '&symbol=' + symbol if params else 'symbol=' +symbol
if contractType:
params += '&contract_type=' + contractType if params else 'contract_type=' +symbol
return httpGet(self.__url,FUTURE_TRADES_RESOURCE,params)
#OKCoin期货指数
def future_index(self,symbol):
FUTURE_INDEX = "/api/v1/future_index.do"
params=''
if symbol:
params = 'symbol=' +symbol
return httpGet(self.__url,FUTURE_INDEX,params)
#获取美元人民币汇率
def exchange_rate(self):
EXCHANGE_RATE = "/api/v1/exchange_rate.do"
return httpGet(self.__url,EXCHANGE_RATE,'')
#获取预估交割价
def future_estimated_price(self,symbol):
FUTURE_ESTIMATED_PRICE = "/api/v1/future_estimated_price.do"
params=''
if symbol:
params = 'symbol=' +symbol
return httpGet(self.__url,FUTURE_ESTIMATED_PRICE,params)
#期货全仓账户信息
def future_userinfo(self):
FUTURE_USERINFO = "/api/v1/future_userinfo.do?"
params ={}
params['api_key'] = self.__apikey
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,FUTURE_USERINFO,params)
#期货全仓持仓信息
def future_position(self,symbol,contractType):
FUTURE_POSITION = "/api/v1/future_position.do?"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'contract_type':contractType
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,FUTURE_POSITION,params)
#期货下单
def future_trade(self,symbol,contractType,price='',amount='',tradeType='',matchPrice='',leverRate=''):
FUTURE_TRADE = "/api/v1/future_trade.do?"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'contract_type':contractType,
'amount':amount,
'type':tradeType,
'match_price':matchPrice,
'lever_rate':leverRate
}
if price:
params['price'] = price
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,FUTURE_TRADE,params)
#期货批量下单
def future_batchTrade(self,symbol,contractType,orders_data,leverRate):
FUTURE_BATCH_TRADE = "/api/v1/future_batch_trade.do?"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'contract_type':contractType,
'orders_data':orders_data,
'lever_rate':leverRate
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,FUTURE_BATCH_TRADE,params)
#期货取消订单
def future_cancel(self,symbol,contractType,orderId):
FUTURE_CANCEL = "/api/v1/future_cancel.do?"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'contract_type':contractType,
'order_id':orderId
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,FUTURE_CANCEL,params)
#期货获取订单信息
def future_orderinfo(self,symbol,contractType,orderId,status,currentPage,pageLength):
FUTURE_ORDERINFO = "/api/v1/future_order_info.do?"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'contract_type':contractType,
'order_id':orderId,
'status':status,
'current_page':currentPage,
'page_length':pageLength
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,FUTURE_ORDERINFO,params)
#期货逐仓账户信息
def future_userinfo_4fix(self):
FUTURE_INFO_4FIX = "/api/v1/future_userinfo_4fix.do?"
params = {'api_key':self.__apikey}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,FUTURE_INFO_4FIX,params)
#期货逐仓持仓信息
def future_position_4fix(self,symbol,contractType,type1):
FUTURE_POSITION_4FIX = "/api/v1/future_position_4fix.do?"
params = {
'api_key':self.__apikey,
'symbol':symbol,
'contract_type':contractType,
'type':type1
}
params['sign'] = buildMySign(params,self.__secretkey)
return httpPost(self.__url,FUTURE_POSITION_4FIX,params)
def getKline(self,duration,size,since):
kline_resourse = "https://www.okcoin.com/api/v1/future_kline.do?"
params = {
#'api_key': self.__apikey,
'symbol': "btc_usd",
'type': duration,
'contract_type':"quarter",
'size': size,
'since': since
}
temp_params = urllib.parse.urlencode(params)
return httpGet(self.__url, kline_resourse, temp_params)
#return httpPost(self.__url,kline_resourse,params)
#temp_params = urllib.parse.urlencode(params)
#print(temp_params)
# return httpGet(self.__url, kline_resourse, temp_params)
########################
来源:http://blog.csdn.net/qq_26948675/article/details/54783472
标签:python,比特币
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python实现按首字母分类查找功能
2023-10-13 11:05:09
在FLASH中调用ASP的方法
2009-03-09 18:32:00
基于Python实现视频转字符画动漫小工具
2022-12-20 04:33:54
![](https://img.aspxhome.com/file/2023/0/117860_0s.png)
Windows下安装python MySQLdb遇到的问题及解决方法
2022-07-20 13:22:36
Python动刷新抢12306火车票的代码(附源码)
2021-04-27 08:13:24
![](https://img.aspxhome.com/file/2023/2/105272_0s.jpg)
38个Asp内置函数介绍
2008-11-27 16:25:00
XML和XSLT结合使网站设计浑然一体
2008-09-05 17:13:00
Python采用socket模拟TCP通讯的实现方法
2021-04-03 09:43:23
Python迭代和迭代器详解
2023-11-20 08:52:28
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2023-06-18 23:56:20
![](https://img.aspxhome.com/file/2023/1/64321_0s.gif)
Christopher Schmitt 谈学习CSS的益处
2008-07-13 14:15:00
利用python汇总统计多张Excel
2023-12-31 14:22:11
![](https://img.aspxhome.com/file/2023/0/77690_0s.jpg)
网页内容呈现建议十条
2007-11-06 13:24:00
Python实现批量执行同目录下的py文件方法
2022-01-23 21:20:39
![](https://img.aspxhome.com/file/2023/6/110266_0s.jpg)
ASP连接MSSQL2005 数据库
2009-03-08 19:20:00
如何使用VSCode愉快的写Python于调试配置步骤
2021-11-21 06:16:12
![](https://img.aspxhome.com/file/2023/4/104894_0s.png)
python+opencv实现目标跟踪过程
2023-03-29 01:29:15
![](https://img.aspxhome.com/file/2023/4/67394_0s.gif)
wxPython色环电阻计算器
2023-12-21 20:08:54
Python复制Word内容并使用格式设字体与大小实例代码
2023-01-10 05:48:20
python批量生成身份证号到Excel的两种方法实例
2022-05-16 14:25:43
![](https://img.aspxhome.com/file/2023/5/92265_0s.png)