绘制K线图-基础模拟(基础篇)

本文介绍了如何使用Python模拟2021年9月的股市数据,包括生成随机的开盘价、最高价、最低价、收盘价和交易量,然后清洗数据并用mplfinance库绘制K线图。通过数据模拟学习K线图的基本绘制技巧,为实战分析做准备。
摘要由CSDN通过智能技术生成

本文讲述K线图绘制的相关基础模拟,包括数据模拟和清洗,以及K线图的简单绘制。(本文重点是数据模拟和清洗,下一篇是K线图实战。)

1.数据模拟

模拟的数据为2021.9.1至2021.9.30一共三十天的数据,数据范围合理性参照上证综指,以2500-2700为最低价范围,2700-3000为最高价范围,2500-3000为交易量(亿元)范围。

import pandas as pd #用于数据处理
import numpy as np #用于数据运算
import random #用于数据模拟
a=2500 #最低价下限(和成交量下限)
b=2700 #最高和最低价间隔
c=3000 #最高价上限(成交量上限)
open=np.linspace(0,1,30) #生成开盘价数组盒子
high=np.linspace(0,1,30) #生成最高价数组盒子
low=np.linspace(0,1,30) #生成最低价数组盒子
close=np.linspace(0,1,30) #生成收盘价数组盒子
volume=np.linspace(0,1,30) #生成交易量数组盒子
for i in range(len(high)): #随机模拟数据并放入数组盒子
    high[i]=random.randint(b*100,c*100)/100
    low[i]=random.randint(a*100,b*100)/100
    open[i]=random.randint(int(low[i]*100),int(high[i]*100))/100 #int把数据类型转化为整数型,属于必要操作
    close[i]=random.randint(int(low[i]*100),int(high[i]*100))/100
    volume[i] = random.randint(a * 100, c * 100) / 100
date=pd.date_range('20210901','20210930').strftime("%Y-%m-%d").tolist() #模拟生成日期

2.数据整理

把数据按照OHLC的顺序整理成表格,并保存到电脑Excel。在保存时取消行索引,就不会出现第一列是自然数1-30序列的数据。

names=['date','open','high','low','close','volume'] #定义数据标签名字
dataframe=pd.DataFrame([date,open,high,low,close,volume],
               index=names) #把数据装入列表
aDataframe=pd.DataFrame(dataframe.values.T,columns=names) #把列表数据行和列转置
aDataframe.to_excel('C:/Users/putongqi/Desktop/data3.xlsx', #把数据存到电脑Excel,
                    index=None) #取消行索引

 

3.数据导入和清洗

数据导入时,需要用日期作为行索引,并转为时间序列格式。

data=pd.read_excel('C:/Users/putongqi/Desktop/data3.xlsx', #读取Excel数据
                   index_col='date') #把日期列作为行索引
data.index=pd.DatetimeIndex(data.index) #把日期索引转为时间序列格式

4.绘制简易K线图

因本文为模拟数据,数据方面没有很大参考性,所以绘制K线图未设定更精修的参数,关于mplfinance.plot的具体参数设定,可参考官网文件。

import mplfinance as mpf #用于K线图绘制
import matplotlib.pyplot as plt #用于K线图展示
mpf.plot(data,type='candle', #选择绘制K线图
         volume=True) #选择同时展示交易量柱状图
plt.show() #展示图像

 完整代码:

import pandas as pd #用于数据处理
import numpy as np #用于数据运算
import random #用于数据模拟
a=2500 #最低价下限(和成交量下限)
b=2700 #最高和最低价间隔
c=3000 #最高价上限(成交量上限)
open=np.linspace(0,1,30) #生成开盘价数组盒子
high=np.linspace(0,1,30) #生成最高价数组盒子
low=np.linspace(0,1,30) #生成最低价数组盒子
close=np.linspace(0,1,30) #生成收盘价数组盒子
volume=np.linspace(0,1,30) #生成交易量数组盒子
for i in range(len(high)): #随机模拟数据并放入数组盒子
    high[i]=random.randint(b*100,c*100)/100
    low[i]=random.randint(a*100,b*100)/100
    open[i]=random.randint(int(low[i]*100),int(high[i]*100))/100
    close[i]=random.randint(int(low[i]*100),int(high[i]*100))/100
    volume[i] = random.randint(a * 100, c * 100) / 100
date=pd.date_range('20210901','20210930').strftime("%Y-%m-%d").tolist() #模拟生成日期
names=['date','open','high','low','close','volume'] #定义数据标签名字
dataframe=pd.DataFrame([date,open,high,low,close,volume],
               index=names) #把数据装入列表
aDataframe=pd.DataFrame(dataframe.values.T,columns=names) #把列表数据行和列转置
aDataframe.to_excel('C:/Users/putongqi/Desktop/data3.xlsx', #把数据存到电脑Excel,
                    index=None) #取消行索引
data=pd.read_excel('C:/Users/putongqi/Desktop/data3.xlsx', #读取Excel数据
                   index_col='date') #把日期列作为行索引
data.index=pd.DatetimeIndex(data.index) #把日期索引转为时间序列格式
import mplfinance as mpf #用于K线图绘制
import matplotlib.pyplot as plt #用于K线图展示
mpf.plot(data,type='candle', #选择绘制K线图
         volume=True) #选择同时展示交易量柱状图
plt.show() #展示图像

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值