前言
`利用数据绘制K线图
一、k 线 图 是 什 么 ?
K线图又称蜡烛图,起源于十八世纪德川幕府时代的米市交易市场,用来计算米价每天的涨跌走势,由开盘价、收盘价、最高价、最低价绘制而成的一条柱状的线条,它由影线和实体组成,基本用途是寻找买卖点。
K线图由股票的最高价,最低价,收盘价,开盘价组成。红色代表阳线:收盘价高于开盘价,俗称看多。绿色代表阴线:收盘价低于开盘价,俗称看空。
注意⚠️:在欧美股市则是相反的,即红色代表阴线,绿色代表阳线。
二、K 线 图 结 构
(1) 影 线 和 实 体
(2) 十 字 线
⚠️:反映买卖双方的博弈
四、 双 均 线 策 略
双均线策略,就是同时考虑短周期和长周期的趋势,它由一个短周期趋势和长周期趋势构成。长周期均线 捕捉股票行情趋势,而短周期均线起到的是择时的作用。
在考虑长周期趋势的同时,兼顾比较敏感的小周期趋势,是解决简单移动平均线滞后性弱点的一项有效方法。
(一)、金叉
(二)、死叉
(三)、均 线 策 略 的 特 点
双均线策略虽然可以弥补一些滞后性,但均线策略都是基于:“利用固定长度的价格均线作为交易趋势的判断”
均线随着时间的变化是相对连续的,即使是价格发生猛涨或者急跌也很难直接造成均线方向的变化。因此使用均线侧率作为交易信号,会有滞后性。
五、通 道 突 破 策 略
通道策略就是选定价格区间,当价格突破选定价格区间时就进行交易,因此没有滞后性。
(一)唐 奇 安 通 道 策 略
唐奇安通道策略由三条线组成,分别是上阻力线、下支撑线、中心线。一般来说,唐奇安通道的宽度越宽,市场波动就越大,而唐奇安通道越窄,市场波动性就越小。
(1)上阻力线、中心线、下支撑线
⚠️ 上阻力线: 是由过去N天的最高价的最大值组成的
⚠️ 中心线: 是由过去最高价与最低价的平均值组成的,即(最大值**+**最小值)÷2
⚠️ 下支撑线: ** 是由过去N天的最低价的最小值组成的
(2)唐 奇 安 通 道 买 入 策 略
买入:当价格跌破下支撑线,则执行买入的操作
(2)唐 奇 安 通 道 卖 出 策 略
卖出:当价格突破上阻力线,则执行卖出的操作
(二)、布 林 带 策 略
布林带策略,也是由3条轨道线组成:其中上下两条线分别可以看成是价格的压力线和支撑线,在两条线之间是一条价格平均线,一般情况价格线在上下轨道组成的带状区间游走,而且随价格的变化而自动调整轨道的位置。布林带通道宽度有4个标准差,因此95%的价格都将包含在内,可以展示大部分价格的波动情况。
(1) 压 力 线 、 价 格 平 均 线 、 支 撑 线
⚠️ 压力线: 就是20日均线加上N倍标准差,N为可调参数,一般设置为2。【压力线 = ma20 + n * std】
⚠️ 价格平均线: 就是20日均线
⚠️ 支撑线: 20日均线减去N倍标准差,N为可调参数,一般设置为2。【压力线 = ma20 - n * std】
(三)、布 林 带 策 略 与 唐 奇 安 通 道 策 略 的 关 系
联系:
外观上两个策略的线图相似
.
区别:
布林带的波动比较灵敏
唐奇安通道则相对迟缓,直上直下。
三、绘 图 步 骤
(1)导入相关模块
代 码 如 下 :
# 数据分析辅助模块
import numpy as np
# 读取数据模块
import pandas as pd
# 绘图基本模块
import matplotlib.pyplot as plt
# 日期转换模块
from matplotlib.dates import date2num
# 绘制蜡烛图模块
from mplfinance import original_flavor as mpf
print('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<')
(2)处理数据
1)读取交易时间、开盘价、收盘价、最高价、最低价,并把交易时间设定位字符串
2)交易时间转换时间数据形式
2)设置时间戳:在数据时间中提取
3)设置特定蜡烛图绘图数据
4)设置移动平均线数据
5)设置金叉死叉位
6)回测金叉死叉策略收益
(3)绘制k线图
1)设置文字与符号识别
2)设置画布,添加子图,并把子图x轴设为时间轴
3)绘制K线图
4)绘制5,、10、20移动平均线
5)标记金叉死叉点位
(4)代码
代 码 如 下 :
# 数据分析辅助模块
import numpy as np
# 读取数据模块
import pandas as pd
# 绘图基本模块
import matplotlib.pyplot as plt
# 日期转换模块
from matplotlib.dates import date2num
# 绘制蜡烛图模块
from mplfinance import original_flavor as mpf
print('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<')
"""======================== 设置数据 ========================"""
# # 数据处理
# 读取特定数据数据,设定交易时间为字符数按
path = r'F:\\601398.SH.xlsx'
data = pd.read_excel(path,usecols=['trade_date','open','close','high','low'],dtype={
'trade_date':object})
# 数据时间处理
data['trade_date'] = pd.to_datetime(data['trade_date'])
# 设置时间戳:在数据时间中提取
data['time'] = date2num(data['trade_date'])
# 数据排序整理
data.sort_values(by = 'trade_date',ascending = True,inplace=True )
# 重置行索引
data.reset_index(inplace = True)
# 删除旧行索引
data.drop(columns = 'index',inplace = True)
# # 设置蜡烛图数据
# 提取时间戳、开盘价、收盘价、最高价、最低价数据
k = data[['time','open','close','high','low']