量化交易可视化(1)-折线图

文章介绍了如何使用Python的matplotlib库绘制折线图,强调了折线图在量化交易中的应用,如观察价格走势、识别支撑位和阻力位、确定买卖信号。通过示例展示了如何绘制平安银行和万科A的股票价格变化趋势图,以分析股票市场动态。
摘要由CSDN通过智能技术生成

折线图是一种用折线连接数据点的图表形式,用于显示数据的变化趋势和关系。在折线图中,横轴通常表示时间或其他连续变量,纵轴表示与横轴变量相关的数值。
在matplotlib中,绘制折线图的方法是:
在这里插入图片描述

参数说明:

  1. x:横坐标数据,可以是一个列表、数组或Series,表示折线图上各点的横坐标值。

  2. y:纵坐标数据,可以是一个列表、数组或Series,表示折线图上各点的纵坐标值。

  3. linestyle:折线的线型,默认为’-‘,表示实线。其他可选参数有:’–‘表示破折线,’-.‘表示点划线,’:'表示虚线,或者可以通过一个字符串来自定义线型,如’steps’表示阶梯线等。

  4. marker:折线上各点的标记样式,默认为None,表示无标记。常用的选项有:'.'表示点标记,'o’表示实心圆圈标记,‘s’表示正方形标记,’+‘表示加号标记,’^'表示上三角号标记,‘v’表示下三角标记,’<‘表示左三角号标记,’>'表示右三角标记,等等。

  5. color:折线的颜色,默认为None,表示折线为黑色。该参数可以使用颜色名称(如’red’、‘blue’、'green’等)表示,或者使用RGB或RGBA格式的颜色值表示,或者使用一个表示颜色的浮点数值表示。

  6. linewidth:折线的线宽,默认为None,表示使用默认线宽。该参数的默认单位为px,即像素,linewidth=2即为宽度为2个像素值的折线。

  7. markersize:折线上各标记点的大小,默认为None表示使用默认大小。该参数的默认单位为px,即像素,markersize=2即为半径为2个像素值的标记点。

  8. label:折线的标签,默认为None。如果设置了标签,可以通过plt.legend()方法显示图例。

折线图在量化交易中的应用

折线图在量化交易中有着广泛的应用:

  1. 折线图可以帮助交易者观察股票、债券、期货或其他有价证券的价格走势。通过绘制折线图,交易者可以直观地了解有价证券的价格随时间变化的价格趋势,预测价格是上升、下降还是震荡,以及价格趋势中价格震荡的幅度和持续性。
  2. 折线图可以帮助交易者识别有价证券支撑位和阻力位,即价格在上升或下降过程中遇到的难以突破的关键水平点。当价格接近或触及支撑位时,可能出现反弹或止跌的机会;当价格接近或触及阻力位时,可能出现回落或止涨的机会。交易者可以通过折线图中的价格波动和水平线的位置关系来判断支撑和阻力位的合理区间以及有效性。
  3. 折线图可以帮助交易者确定买入和卖出信号。例如,当价格从下跌趋势中止跌并反弹,突破阻力位形成上升趋势时,可能出现买入信号;当价格从上升趋势中止涨并回落,跌破支撑位并形成下降趋势时,可能出现卖出信号。因此,交易者可以通过折线图,并结合其他技术指标和交易策略来确认买入和卖出的最佳时机。
  4. 折线图可以帮助交易者分析有价证券市场的价格波动特征、风险水平,以及周期性规律。例如,通过观察折线图中的价格波动周期、波动幅度和波动形态,交易者可以判断市场的波动性和风险水平,选择合适的风险管理策略;同时,交易者还可以通过折线图中的趋势线、均线等工具来识别价格的主要趋势,判断证券市场的方向性预期和方向趋势力度。

折线图在量化交易中的应用案例

下面这个案例,我们选出两只股票,分别是平安银行(ts_code:000001.SZ)和万科A(ts_code000002.SZ),使用折线图表现这两只股票的价格变化趋势。
数据准备:2023年一季度A股日线行情.xlsx

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 设置默认字体为楷体
plt.rcParams['font.sans-serif']=['kaiti']
# 显示负数
plt.rcParams['axes.unicode_minus'] = False

# 导入数据
dates = pd.read_excel("2023年一季度A股日线行情.xlsx")

# 只保留股票代码、交易日期、最低价、最高价四个关键数据列
dates = dates[["ts_code","trade_date","low","high"]]

# 分别筛选出股票代码分别是"000001.SZ"和"000002.SZ"的两只股票
dates = dates[dates["ts_code"].isin(("000001.SZ","000002.SZ"))]

# 给股票代码加上股票名称
def get_name(ts_code):
    if ts_code == "000001.SZ":
        return "平安银行"
    if ts_code == "000002.SZ":
        return "万科A"
dates["name"] = [get_name(i) for i in dates["ts_code"]]

# 计算每只股票交易日当天的平均价格
dates["avg_price"] = (dates["low"] + dates["high"])/2

# 重新筛选列并排序,只保留名称、交易日和平均交易价格
dates = dates[["name", "trade_date", "avg_price"]]

# 将交易时间转化为时间序列
dates["trade_date"] = dates["trade_date"].astype("str").apply(lambda x:x[:4]+"-"+x[4:6]+"-"+x[6:])
dates["trade_date"] = pd.to_datetime(dates['trade_date'])

# 分别筛选出两只股票的价格序列
stock_1 = dates[dates["name"] == "平安银行"]
stock_2 = dates[dates["name"] == "万科A"]

# 分别设定折线图的横轴坐标,纵轴坐标
x1_label = stock_1["trade_date"]
x2_label = stock_2["trade_date"]
y1_label = stock_1["avg_price"]
y2_label = stock_2["avg_price"]

# 绘制折线图
plt.plot(x1_label, y1_label, marker='o', color='blue', label='中国平安')
plt.plot(x2_label, y2_label, linestyle=':', marker='*', color='green',label='万科A')
# 设置x轴标签格式,旋转45度
plt.xticks(rotation=45)
# 添加标题
plt.title('Stock Average Price from 2023-01-01 to 2023-03-31')
# 横坐标标签
plt.xlabel('Date')
# 纵坐标标签
plt.ylabel('Price')
# 显示图例
plt.legend()
# 显示图表
plt.show()

效果图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清弦墨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值