量化投资常用技能——绘图篇 1:绘制股票收盘价格曲线和ochl烛状图

量化投资

随着互联网、计算机、机器学习的高速发展,越来越多的产业、技术都开始了智能化转型,投资理财也不例外。
量化投资在海外的发展已经有了30多年的历史,其中的传奇人物数学家詹姆斯·西蒙斯管理的大奖章基金从1989到2007年间的平均年收益率高达35%,即便是在次贷危机爆发的2007年,该基金的回报率仍高达85%。
好的量化投资模型对我们的投资决策有着很大的辅助作用

全文先讲述各个小模块的使用,文末附有有封装好的函数和完整代码


欢迎大家关注我们的抖音号”金融观察“(JRGC8888),上面会分析一些关注度很高的金融事件、分享一些有意思的投资者故事。也可以关注我们的微博”科学量化


绘图技能

Python绘图库:matplotlib

在量化投资方面,我们主要会使用matplotlib库的基本绘图即可

  • 函数:matplotlib.pyplot.plot([x], y, color, marker, linestyle, …)

    在量化投资研究初期其他掌握:color、marker(点型参数)、linestyle(线型参数) 即可。有需要时,其他参数可以自己查看文档来获取

import matplotlib.pyplot as plt

stork_closs = [116.5, 115.2, 118.9, 125.2, 117.4, 126.6, 130.1, 135.3, 142.6, 150.9, 158.2, 149.2, 136.9]

plt.plot(stork_closs, color='r', marker='o', linestyle='--')
plt.show()

绘制烛状图库:mpl_finance

该部分原来是matplotlib中的一个模块,现在独立出来后需要自己使用下面pip语句重新安装
pip install mpl_finance

  • 函数:mpl_finance.candlestick_ochl(ax, opens, closes, highs, lows, width=4, colorup=‘k’, colordown=‘r’, alpha=0.75)

    • ax参数可以是 fig, ax = plt.subplots(figsize) 返回的ax
    • opens、closes、highs、lows分别对应着股票每日的开盘价、收盘价、最高价、最低价
    • width对应烛状的宽度
    • colorup对应当日收盘价格大于开盘价格的柱状颜色(价格上涨)
    • colordown对应当日收盘价格小于开盘价格的柱状颜色(价格下跌)
    • alpha对应条形透明度

为了方便导入足够的数据,导入数据的时候需要用到abupy这个库,该库有在GitHub上面开源,可以了解一下。

import abupy
from abupy import ABuSymbolPd
import mpl_finance as mpf
import matplotlib.pyplot as plt
from matplotlib.dates import date2num

__colorup__ = 'red'
__colordown__ = 'green'

abupy.env.enable_example_env_ipython()  # 使用沙盒数据,目的是和书中一样的数据环境,不使用会报错
tsla_df = ABuSymbolPd.make_kl_df('usTSLA', n_folds=2)  # 固定导入美股tsla的行情数据,n_folds=2表示两年数据
tsla_df = tsla_df[:50]  # 选取前50个,数据过多不易观察

fig, ax = plt.subplots(figsize=(14, 7))

qutotes = []

for index, (d, o, c, h, l) in enumerate(
     zip(tsla_df.index, tsla_df.open, tsla_df.close,
         tsla_df.high, tsla_df.low)):

     d = date2num(d)  # 蜡烛图的日期要使用matplotlib.finance.date2num进行转换为特有的数字值
     val = (d, o, c, h, l)  # 日期,开盘,收盘,最高,最低组成tuple对象val
     qutotes.append(val)  # 加val加入qutotes

# 使用mpf.candlestick_ochl进行蜡烛绘制,ochl代表:open,close,high,low
mpf.candlestick_ochl(ax, qutotes, width=0.6, colorup=__colorup__, colordown=__colordown__)
ax.autoscale_view()
ax.xaxis_date()

plt.show()

最后输出的图像如下:
在这里插入图片描述
该图像已经是一幅很标准的烛状图了,但是在使用股票市场的软件时,我们都知道在烛状图上还有几条移动平均线,下一节将给大家介绍如何去画移动平均线,分别采用自己定义的函数计算移动平均线数值并绘图、采用现成的开源函数绘图。

之后的博客讲解深度会逐渐提升,将包括一下几个方面:

绘图

指标公式与计算函数

止盈止损策略及函数实现

多策略组合选股

机器学习在量化投资方面的应用


最后附上封装好的函数和全部代码

import abupy
import matplotlib.pyplot as plt
import mpl_finance as mpf
from matplotlib.dates import date2num
from abupy import ABuSymbolPd
abupy.env.enable_example_env_ipython()  # 使用沙盒数据,目的是和书中一样的数据环境,不使用会报错

# ———————————————————— #
# ———— 默认参数设置 ———— #
# ———————————————————— #
__colorup__ = "red"
__colordown__ = "green"

tsla_df = ABuSymbolPd.make_kl_df('usTSLA', n_folds=2)  # 固定导入tsla的行情数据
tsla_df = tsla_df[:50]  # 选取前50条行情数据
# ———————————————————— #


def plot_by_close(data_df=tsla_df, axs=None, show=False):
    '''
    绘制收盘价格图
    :param data_df: 输入的数据,默认采用tsla的历史行情数据,输入的数据类型目前只支持DataFrame类型
    :param axs: 是否在子图上绘制
    :param show: 是否显示图像
    :return:
    '''

    drawer = plt if axs is None else axs
    drawer.plot(data_df.close, color='r')

    if show:
        plt.show()


def plot_ochl(data_df=tsla_df, axs=None, show=False):
    '''
    绘制烛状图
    :param data_df: 输入的数据,默认采用tsla的历史行情数据,输入的数据类型目前只支持DataFrame类型
    :param axs: 是否在子图上绘制
    :param show: 是否显示图像
    :return:
    '''

    drawer = plt if axs is None else axs
    fig, ax = drawer.subplots(figsize=(14, 7))

    qutotes = []

    for index, (d, o, c, h, l) in enumerate(
            zip(data_df.index, data_df.open, data_df.close,
                data_df.high, data_df.low)):

        d = date2num(d)  # 蜡烛图的日期要使用matplotlib.finance.date2num进行转换为特有的数字值
        val = (d, o, c, h, l)  # 日期,开盘,收盘,最高,最低组成tuple对象val
        qutotes.append(val)  # 加val加入qutotes

    # 使用mpf.candlestick_ochl进行蜡烛绘制,ochl代表:open,close,high,low
    mpf.candlestick_ochl(ax, qutotes, width=0.6, colorup=__colorup__, colordown=__colordown__)
    ax.autoscale_view()
    ax.xaxis_date()

    if show:
        plt.show()


if __name__ == '__main__':
    plot_ochl()  # 绘制烛状图,会新建画布
    plot_by_close(show=True)  # 绘制收盘价格曲线图
	# 通过修改参数show的输入,来控制多图绘制还是单图绘制,下一节单图绘制烛状图和均线时很有用
	

最后输出的图像如下:
在这里插入图片描述

欢迎大家关注我们

我们的抖音号:金融观察(JRGC8888)

我们的微博:科学量化

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值