每个交易日的股票都会上涨或者下跌,在这个过程中笔者们偶尔会想针对部分股票进行股价的涨跌幅进行监控,或者自动进行交易,在这个需求前提下,现有券商、股票分析软件都会带有机器人自动交易策略功能,大部分都需要收费或者部分策略不能满足自己的需求,笔者这边提供2种实现思路:
1、借助现有股票量化交易平台编写策略和回测分析,然后在券商软件层面进行策略执行。
2、自己编写功能代码来监控估价,对股价波动进行特殊处理满足特殊需求。
第一种实现成本较低,但功能受限于平台;第二种实现成本毋庸置疑相对较高,但是逻辑可以自己控制。那么为了方便大家学习小编附一部分用Python搭建自己的量化回测分析代码!
#先引入后面可能用到的包(package)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
%matplotlib inline
#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
#使用tushare获取交易数据
#设置token
import tushare as ts
token='输入在tushare.pro上获取的token'
ts.set_token(token)
pro=ts.pro_api(token)
#pro=ts.pro_api(token)
index={'上证综指': '000001.SH','深证成指': '399001.SZ','沪深300': '000300.SH','创业板指': '399006.SZ','上证50': '000016.SH','中证500': '000905.SH','中小板指': '399005.SZ','上证180': '000010.SH'}
#获取当前交易的股票代码和名称
def get_code():df = pro.stock_basic(exchange='', list_status='L')codes=df.ts_code.valuesnames=df.name.valuesstock=dict(zip(names,codes))#合并指数和个股成一个字典stocks=dict(stock,**index)return stocks
#获取行情数据
def get_data(stock,start='20151009',end=''):#如果代码在字典index里,则取的是指数数据code=get_code()[stock]if code in index.values():df=ts.pro_bar(ts_code=code,asset='I',start_date=start, end_date=end)#否则取的是个股数据else:df=ts.pro_bar(ts_code=code, adj='qfq',start_date=start, end_date=end)#将交易日期设置为索引值df.index=pd.to_datetime(df.trade_date)df=df.sort_index()return df
那么量化交易的实现也是离不开level2行情接口的, Level-2里面有一个很重要的是逐笔委托,很多量化私募以及T0策略都要用!为了方便理解接下来小编给大家展示一下level2逐笔委托实例!
- Level-2C++实例(逐笔委托)
字段名 | 类型 | 备注 |
stock_exchange | uint32 | 证券市场,1-SH,2-SZ |
stock_code | string | 证券代码 |
created_at | int64 | 委托日期时间戳(毫秒) |
code | string | 委托编号 |
price | uint32 | 委托单价 |
volume | uint64 | 委托数量 |
amount | uint64 | 成交金额 |
tx_dir | uint32 | 交易方向:0-未知,1-买入,2-卖出 |
tx_kind | uint32 | 交易类型:1-市价,2-限价,3-本方优先,10-撤单, 11-暂不清楚( 基金/ 债券有此值) |
返回实例:
那么大家可以通过https://gitee.com/l2gogogo 查询level2接口信息,若是对量化交易和level2接口有不明白的也可以通过下面名片给小编留言!