本人股市多年的老韭菜,各种股票分析书籍,技术指标书籍阅历无数,萌发想法,何不自己开发个股票预测分析软件,选择python因为够强大,它提供了很多高效便捷的数据分析工具包。
我们已经初步的接触与学习其中数据分析中常见的3大利器---Numpy,Pandas,Matplotlib库。
也简单介绍一下数据获取的二种方法,通过金融数据接口和爬虫获取。
同时介绍了指标之王MACD,随机指标KDJ和BOLL指标线和量价指标的用和法均线指标详细的
用法
这一章我们讲一下经典蜡烛图买卖点:
蜡烛图就是K线图。K线是以每个交易日(或每个分析周期)的开盘价、更高价、更低价、和收盘价绘制而成,K线的结构可分为上影线、下影线及中间实体三部分。
K线是一条柱状的线条,由影线和实体组成。中间的矩形称为实体,影线在实体上方的细线叫上影线,下方的部分叫下影线。实体分阳线和阴线。一条K线的记录就是某一种股票一天的价格变动情况。
在古老的股市操作中,日本人在大米这一行业中发明了大米库券,这种大米库券是做未来大米收成的预期的,后来就成为了世界上最早的期货合约。慢慢的,在这一行业开始研究出了蜡烛图,这就是蜡烛图的由来。但是最终的推广,还是在一个叫史蒂夫·尼森(Steve Nison)的西方人手里,他在这方面写作了不少专业的书籍,然后顺利地将其推广开来。
多种蜡烛图(K线)的组合形态可以判断未来的走势,基本上78种看涨看跌图形组合,如果对股票感兴趣的,可以慢慢研究。
简单的例子
# !/usr/bin/env python
# coding=utf-8
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ochl
plt.rcParams['font.family'] = 'Heiti TC'
plt.rcParams['font.sans-serif'] = ['SimHei']
# 从文件中读取数据
df = pd.read_csv('600271.csv',encoding='gbk',index_col=0)
# 设置图的位置
fig = plt.figure()
ax = fig.add_subplot(111)
# 调用方法绘制K线图
candlestick2_ochl(ax = ax,
opens=df["open"].values, closes=df["close"].values,
highs=df["high"].values, lows=df["low"].values,
width=0.75, colorup='red', colordown='green')
df['close'].rolling(window=3).mean().plot(color="red",label='3日均线')
df['close'].rolling(window=5).mean().plot(color="blue",label='5日均线')
df['close'].rolling(window=10).mean().plot(color="green",label='10日均线')
plt.legend(loc='best') # 绘制图例
# 设置x轴的标签
plt.xticks(range(len(df.index.values)),df.index.values,rotation=30 )
ax.grid(True) # 带网格线
plt.title("K线图")
plt.rcParams['font.sans-serif']=['SimHei']
plt.show()
?图片:
上图是三根K线组合的底部反转上涨形态。在一段下跌趋势之后,K线组合首先出现一根大阳线,并明显地向上推进到第一根阴线实体之内
代码
import mplfinance as mpf
import pandas as pd
import numpy as np
# 假设你有一个DataFrame,其中包含日期、开盘价、最高价、最低价和收盘价
data = pd.DataFrame({
'date': pd.date_range(start='1/1/2023', periods=50),
'open': np.random.randn(50).cumsum(),
'high': np.random.randn(50).cumsum() + 10,
'low': np.random.randn(50).cumsum() - 10,
'close': np.random.randn(50).cumsum()
})
data['volume'] = np.random.randint(100, 1000, 50) # 随机生成交易量
# 定义早晨之星蜡烛图的条件
def morning_star(row):
if (row['close'] > row['open']) and (row['close'] > row['high']) and (row['open'] < row['low']) and (row['close'] < row['low']):
return '早晨之星'
else:
return ''
# 在DataFrame中添加早晨之星标记列
data['morning_star'] = data.apply(morning_star, axis=1)
# 绘制蜡烛图,标记早晨之星买点
mpf.plot(data, type='candle', volume=True, mav=(9,12,26,9), style='yahoo', buy_up_to=data['close'].shift(1), buy_down_to=data['close'].shift(-1))
黄昏之星是一种K线组合,通常出现在股价上涨后,预示着市场可能即将反转下跌。
代码
import mplfinance as mpf
import pandas as pd
import numpy as np
# 假设你有一个DataFrame,其中包含日期、开盘价、最高价、最低价和收盘价
data = pd.DataFrame({
'date': pd.date_range(start='1/1/2020', periods=50),
'open': np.random.randn(50).cumsum(),
'high': np.random.randn(50).cumsum() + 10,
'low': np.random.randn(50).cumsum() - 10,
'close': np.random.randn(50).cumsum()
})
data['volume'] = np.random.randint(100, 1000, 50) # 随机生成交易量
# 定义黄昏之星蜡烛图的条件
def evening_star(row):
if (row['close'] < row['open']) and (row['close'] < row['high']) and (row['open'] > row['low']) and (row['close'] > row['low']):
return '黄昏之星'
else:
return ''
# 在DataFrame中添加黄昏之星标记列
data['evening_star'] = data.apply(evening_star, axis=1)
# 绘制蜡烛图,标记黄昏之星卖点
mpf.plot(data, type='candle', volume=True, mav=(9,12,26,9), style='yahoo', sell_up_to=data['close'].shift(1), sell_down_to=data['close'].shift(-1))
蜡烛图的买卖点有几十种,这里只简单介绍二种,蜡烛图指标性线最好跟其他指标一起来判断。