本人股市多年的老韭菜,各种股票分析书籍,技术指标书籍阅历无数,萌发想法,何不自己开发个股票预测分析软件,选择python因为够强大,它提供了很多高效便捷的数据分析工具包。
我们已经初步的接触与学习其中数据分析中常见的3大利器---Numpy,Pandas,Matplotlib库。
也简单介绍一下数据获取的二种方法,通过金融数据接口和爬虫获取。
介绍了指标之王MACD,随机指标KDJ和BOLL指标线的详细用法
这一章我们学习一下量价指标,如果有人问我所有指标哪个最值得学习,我首推的就是这个量价指标,股市上所有的都可能骗人,除了成交量,通过成交量的突然放大等异常走势,我们最有可能判断主力的下一步动作。
量价关系,是股票里所有指标中最重要、最核心,最为有用的指标。股票软件上的指标,大部分就是通过统计学的方法,由量价关系演变而来。很多炒股多年的股友会告诉你,学炒股其实只要学量价关系就够了。
那么,量价关系到底是什么呢?接下来,会将其中的逻辑关系详细分析,只要你懂了其中的逻辑,再回到股票K线本身上,基本就可以做到完美的技术面分析了。
量价关系中,量就是指成交量,价就是指股票的价格(大盘量价,量一般指成交额)。经济学里面讲过,商品的价格大部分是由供给与需求决定的,股票本身有买卖,也可以作为一种特殊的商品。卖方便是供给方,卖方则是需求方,当供大于求的时候,价格将是下跌的,股票自然也是下跌;当供不应求的时候,因为买方需求意愿比较大,商品不足时,为了能获得商品,买方愿意支付更高的价格购买商品,也就推动了商品的价格上涨,所以此时的股价也是上涨的。
在Python中,你可以使用pandas库来处理数据并计算量价指标。以下是计算量价指标的一些常见公式:
其中,V表示成交量,P表示收盘价,V(-1)表示前一交易日的成交量。
以下是一个使用pandas计算量价指标的示例代码:
import pandas as pd
# 读取数据
data = pd.read_csv('000271.csv')
# 获取成交量数据和收盘价数据
volume = data['Volume']
close = data['Close']
# 计算量比指标
volume_ratio = volume / volume.shift(1)
# 计算均量线指标
mean_volume = (volume + volume.shift(1)) / 2
股价经过持续下跌到低位状态,出现了成交量增加但股价平稳状态,说明此股在底部蓄积力量,主力进入准备拉伸的状态
我们用一段代码验证一下:
# !/usr/bin/env python
# coding=utf-8
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ochl
from matplotlib.ticker import MultipleLocator
# 根据指定代码和时间范围,获取股票数据
plt.rcParams['font.family'] = 'Heiti TC'
plt.rcParams['font.sans-serif'] = ['SimHei']
df = pd.read_csv('600276.csv',encoding='gbk')
# 设置大小,共享x坐标轴
figure,(axPrice, axVol) = plt.subplots(2, sharex=True, figsize=(15,8))
# 调用方法绘制K线图
candlestick2_ochl(ax = axPrice,
opens=df["open"].values, closes=df["close"].values,
highs=df["high"].values, lows=df["low"].values,
width=0.75, colorup='red', colordown='green')
axPrice.set_title("600276K线图和均线图") # 设置子图标题
df['close'].rolling(window=3).mean().plot(ax=axPrice,color="red",label='3日均线')
df['close'].rolling(window=5).mean().plot(ax=axPrice,color="blue",label='5日均线')
df['close'].rolling(window=10).mean().plot(ax=axPrice,color="green",label='10日均线')
axPrice.legend(loc='best') # 绘制图例
axPrice.set_ylabel("价格(单位:元)")
axPrice.grid(True) # 带网格线
# 如下绘制成交量子图
# 直方图表示成交量,用for循环处理不同的颜色
for index, row in df.iterrows():
if(row['close'] >= row['open']):
axVol.bar(row['date'],row['volume']/1000000,width = 0.5,color='red')
else:
axVol.bar(row['date'],row['volume']/1000000,width = 0.5,color='green')
axVol.set_ylabel("成交量(单位:万手)") # 设置y轴标题
axVol.set_title("600276成交量") # 设置子图的标题
axVol.set_ylim(0,df['volume'].max()/1000000*1.2) # 设置y轴范围
xmajorLocator = MultipleLocator(5) # 将x轴主刻度设置为5的倍数
axVol.xaxis.set_major_locator(xmajorLocator)
axVol.grid(True) # 带网格线
# 旋转x轴的展示文字角度
for xtick in axVol.get_xticklabels():
xtick.set_rotation(15)
plt.rcParams['font.sans-serif']=['SimHei']
plt.show()
股价经过一段时间盘整,或者出现放量快速下滑的情况,是卖出信号
python代码
# !/usr/bin/env python
# coding=utf-8
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ochl
from matplotlib.ticker import MultipleLocator
# 根据指定代码和时间范围,获取股票数据
plt.rcParams['font.family'] = 'Heiti TC'
plt.rcParams['font.sans-serif'] = ['SimHei']
df = pd.read_csv('600276.csv',encoding='gbk')
# 设置大小,共享x坐标轴
figure,(axPrice, axVol) = plt.subplots(2, sharex=True, figsize=(15,8))
# 调用方法绘制K线图
candlestick2_ochl(ax = axPrice,
opens=df["open"].values, closes=df["close"].values,
highs=df["high"].values, lows=df["low"].values,
width=0.75, colorup='red', colordown='green')
axPrice.set_title("线图和均线图") # 设置子图标题
df['close'].rolling(window=3).mean().plot(ax=axPrice,color="red",label='3日均线')
df['close'].rolling(window=5).mean().plot(ax=axPrice,color="blue",label='5日均线')
df['close'].rolling(window=10).mean().plot(ax=axPrice,color="green",label='10日均线')
axPrice.legend(loc='best') # 绘制图例
axPrice.set_ylabel("价格(单位:元)")
axPrice.grid(True) # 带网格线
# 如下绘制成交量子图
# 直方图表示成交量,用for循环处理不同的颜色
for index, row in df.iterrows():
if(row['close'] >= row['open']):
axVol.bar(row['date'],row['volume']/1000000,width = 0.5,color='red')
else:
axVol.bar(row['date'],row['volume']/1000000,width = 0.5,color='green')
axVol.set_ylabel("成交量(单位:万手)") # 设置y轴标题
axVol.set_title("600276成交量") # 设置子图的标题
axVol.set_ylim(0,df['volume'].max()/1000000*1.2) # 设置y轴范围
xmajorLocator = MultipleLocator(5) # 将x轴主刻度设置为5的倍数
axVol.xaxis.set_major_locator(xmajorLocator)
axVol.grid(True) # 带网格线
# 旋转x轴的展示文字角度
for xtick in axVol.get_xticklabels():
xtick.set_rotation(15)
plt.rcParams['font.sans-serif']=['SimHei']
plt.show()
量增价升买点的原理是基于市场供需关系的分析。当成交量放大时,表明市场上的买方力量较强,股票的需求量较大;而价格上涨则表明卖方愿意以更高的价格出售股票,这进一步证明了买方力量的强大。因此,量增价升买点的出现意味着股票价格有继续上涨的动力,投资者可以考虑买入该股票。需要注意的是,这只是一个简单的示例代码,实际的股票投资需要更多的分析和考虑因素。
代码:
import pandas as pd
# 读取数据
data = pd.read_csv('000271.csv')
# 获取成交量数据和收盘价数据
volume = data['Volume']
close = data['Close']
# 计算量增价升买点
buy_signal = (volume > volume.shift(1)) & (close > close.shift(1))
量增价跌卖点的原理是基于市场供需关系的分析。当成交量放大时,表明市场上的卖方力量较强,股票的供应量较大;而价格下跌则表明买方不愿意以更高的价格购买股票,这进一步证明了卖方力量的强大。因此,量增价跌卖点的出现意味着股票价格有继续下跌的可能,投资者可以考虑卖出该股票。需要注意的是,这只是一个简单的示例代码,实际的股票投资需要更多的分析和考虑因素。
代码案例
import pandas as pd
# 读取数据
data = pd.read_csv('data.csv')
# 获取成交量数据和收盘价数据
volume = data['Volume']
close = data['Close']
# 计算量增价跌卖点
sell_signal = (volume > volume.shift(1)) & (close < close.shift(1))
上述主要讲了这四种明显的买卖点,其他的买卖点最好结合其他指标一起运用,谢谢大家,这一章就讲到这里