python股票成交明细_量化交易之股票实盘记录——买卖区间图形化

前言

量化交易系统中可视化图形是指导交易策略开发非常关键的辅助工具,通过直观的图形分析可以清楚的了解到策略的执行效果,以及存在的问题、改善的空间。

Matplotlib是Python上基础的可视化图形库,本文通过应用Matplotlib库实现交易记录的图形化显示,当运行一个量化策略后可图形化显示在大周期下的买卖价位和持股时间。

导入交易信息

交易信息存储为CSV格式,包括买入时间、卖出时间、交易股数、股票代码等。codecs.open模块打开CSV文件,csv.DictReader模块将文件迭代读取后返回字典格式的迭代对象。

此处需要注意的是迭代对象reader被迭代后,指针已经移到元素末尾,再次使用reader时指针并不会自动返回到首位置,需要重新再入迭代对象。另外需要注意编码格式,codecs.open指定GB2312打开文件,读取返回的是unicode。

if os.path.isfile('C:\programPY\Ex_Quant_Tran\REAL_MplSellBuy.600797ZDWX.csv'): f=codecs.open('C:\programPY\Ex_Quant_Tran\REAL_MplSellBuy.600797ZDWX.csv','rb','gb2312')#GB2312编码——>unicode

reader = csv.DictReader(f)

rows= [row for row in reader]

f.close()

可视化交易区间

(1)获取交易起始日期。由于在.py文件开头声称了代码文件编码为utf-8,因此文件内字符串为utf-8编码,字典键值“买入/卖出时间”需要注意编码格式,u'中文' 字符串的编码指定为unicode,而s='中文' 此处为utf-8编码。可以打印长度进行确认,utf-8编码的’汉’长度是3(‘xE6xB1x89’) ,Unicode由于是对字节串使用字符编码进行解码后获得,长度为1。

buy_date = row["买入时间"]

sell_date = row["卖出时间"]

start = stock_df.index.get_loc(buy_date)#'2017-01-16' 索引—>位置

end = stock_df.index.get_loc(sell_date)#'2017-03-16' 索引—>位置

(2)填充买卖持有区间。Pyplot模块的fill_between可填充同一个坐标轴下的两个函数之间的区域,即0和收盘价曲线之间,alpha为底色的透明度设置。当买入时的收盘价格高于卖出时为绿色,表示亏钱,反之为红色。

if stock_df.Close[end] < stock_df.Close[start]:#赔钱显示绿

plt.fill_between(stock_df.index[start:end],0,stock_df.Close[start:end],color='green',alpha=0.38)

is_win = False

else:#赚钱显示绿色

plt.fill_between(stock_df.index[start:end],0,stock_df.Close[start:end],color='red',alpha=0.38)

is_win = True

(3)标注买卖信息。Pyplot模块的annotate可添加注释,xy(x, y)被注释点坐标,xytext(x, y)插入文本的地方点坐标,verticalalignment字体垂直对齐方式,horizontalalignment字体水平对齐方式。

plt.annotate('获利\n'+ hands_num+u'手' if is_win else '亏损\n'+hands_num+u'手',xy=(sell_date,stock_df.Close.asof(sell_date)),xytext=(sell_date, stock_df.Close.asof(sell_date)+4),arrowprops=dict(facecolor='yellow',shrink=0.1),horizontalalignment='left',verticalalignment='top')

效果展示

针对浙大网新的量化策略交易记录进行图形显示效果如下:

更多python量化交易内容互动请加微信公众号:PythonQT-YuanXiao

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值