区块链是一种技术。简单、通俗来说,区块链技术就是人人记账,或者分布式账本。在互联网时代,每个系统背后都有数据库,这个数据库可以看作是一个大的账本,以往都是维护系统的人负责管理数据库,记录用户的行为,也就是记账,而区块链“去中心化”,它让系统中的每一个成员都参与其中,不仅人人记账,而且通过链接,人人都能拥有完整的账本
行情数据简介
行情数据是交易过程中最基本、最重要的部分。一次完整的交易通常分为三个步骤:接收行情、分析行情(策略部分)、发出买卖指令并成交(算法交易部分)。对于高频交易和低延迟交易者,行情数据的精度和细度尤其重要。精度是指数据的准确性和能在多大程度上反映市场的真实情况,细度是指行情的推送频率。
行情数据分为两部分:交易行情和订单委托行情。交易行情就是交易数据,包括最新成交价、成交量、成交额、最高价、最低价等字段信息;订单委托行情就是买卖报价和委托量,根据委托价格的不同,可以分为一档、五档、十档等行情;通常把交易行情和订单委托行情结合在一起,形成TAQ(Trades and Quotes)行情。
tick行情也称逐笔行情,是完整记录了市场所有信息的数据,即会记录市场每一个event,如发生一次交易或者增加一个新订单,是最精细和最完整的行情数据。
快照(snapshot)行情是对tick行情数据在时间维度上进行一定频率切片后的统计数据,是一个时间截面上的统计数据。tick数据更为精确,快照行情根据时间频率的不同精确度也不同。
实现mysql存储
import pymysql as mysql
import pandas as pd
from sqlalchemy import create_engine
from repoistory.base.repoistory import Repoistory
import configEnv.config as conf
class MysqlRepoistory(Repoistory):
def getMysqlConn(self):
return mysql.connect(
host=conf.config.host,
port=conf.config.port,
user=conf.config.user,
password=conf.config.password,
database=conf.config.database,
charset=conf.config.charset
)
def createMysqlEngine(self):
return create_engine(conf.config.mysql_engine)
def handle_cursor(self,func,args,*kwargs):
connect=self.getMysqlConn()
try:
cursor_obj=connect.cursor()
func(connect,cursor_obj,args,*kwargs)
cursor_obj.close()
finally:
connect.close()
def saveData(self,data:pd.DataFrame,repoistoryParam:dict):
eng=self.createMysqlEngine()
tableName=repoistoryParam.get('table_name')
data.to_sql(name=tableName,con=eng,if_exists="append",index=False)
def readData(self,repoistoryParam:dict)->pd.DataFrame:
eng=self.createMysqlEngine()
query_sql=repoistoryParam.get('query_sql')
#index_col=repoistoryParam.get('index_col')
return pd.read_sql(sql=query_sql,con=eng)
if __name__=='__main__':
mysql=MysqlRepoistory()
repoistoryParam={"query_sql":"select*from trade_daily where stock_code='000002'"}
db=mysql.readData(repoistoryParam)
print(db)
2.使用mysql存储实例,将来换别的存储方式只需新的存储对象,然后替换掉
代码如下(示例):
if __name__=='__main__':
mysql=MysqlRepoistory()
repoistoryParam={"query_sql":"select*from trade_daily where stock_code='000002'"}
db=mysql.readData(repoistoryParam)
print(db)