前言
如图所示,昨天这支股票下午突然拉高,然后又回落,形成一个上细下粗的“由”字型开关。我观察了之前的趋势,发现只要出现这样的图形,未来几天都会跌,但是到底几率有多大,于是就用Python做了一个简单的测试。
获得数据
首先,我们可以从Yahoo!获得CSV格式的数据,从而很容易被Python读取。以下链接为胜利股份近5年的数据:
https://finance.yahoo.com/quote/000407.SZ/history?period1=1419004800&period2=1576857600&interval=1d&filter=history&frequency=1d
打开后,将网页拉到最下面,保证数据读取完成,然后点击下载数据即可。
提取方法
在提取数据之前,首先我们要明确“由”型数据怎么定义。如下图所示,实际上它分为三段,分别对应为:
- top 上部的指针
- middle 中部粗体
- bottom 下部的小指针
提取定义
在提出时,将整体定义为 100%,人为地将top和middle不小于35%,bottom不大于10%。可以提取到以下内容:
附:源代码
import csv
# 提取数据
csvfile = R'd:\data\000407.SZ_5y.csv'
rows = []
with open(csvfile)as file:
f_csv = csv.reader(file)
for row in f_csv:
rows.append(row)
# 分析数据
# 'Date', 'Open', 'High', 3 'Low', 'Close', 5 'Adj Close', 'Volume']
# 2014-12-22,6.370000,6.370000,5.990000,6.050000,6.032021,16436745
for i in range(1, len(rows)):
start = float(rows[i][1])
high = float(rows[i][2])
low = float(rows[i][3])
end = float(rows[i][4])
if end <= start or high <= start:
continue
all = high - low
top = (high - end) / all
middle = (end - start) / all
bottom = (start - low) / all
if high / start > 1.04 and top > 0.35 and middle > 0.35 and bottom < 0.2:
print("{0:.2f}, {1:.2f}, {2:.2f}.".format(top, middle, bottom), rows[i])
分析总结
代码在执行以后,我们可以得到一下记录。经一一检测,发现在出现了“由”型图后,除了个别在后面几天上涨(如2018/08/17),其他均出现不同程度的下降。所以我们可以得出结论:
**当“由”型出现后,此股票有大概率在后面一段时间下降。**但是对后面几天的影响力,还有待进一步分析。
另外,经分析此股票(000407.SZ 胜利股份)在未来几个交易日会有大概率下跌,让我们拭目以待。
输出数据
0.42, 0.58, 0.00. ['2015-01-27', '6.470000', '6.850000', '6.470000', '6.690000', '6.670119', '28624282']
0.45, 0.42, 0.12. ['2015-05-25', '10.200000', '10.760000', '10.120000', '10.470000', '10.438886', '59016650']
0.44, 0.44, 0.12. ['2015-09-09', '6.180000', '6.460000', '6.140000', '6.320000', '6.301219', '26341080']
0.38, 0.53, 0.09. ['2015-11-06', '6.940000', '7.250000', '6.910000', '7.120000', '7.098841', '32670416']
0.40, 0.59, 0.01. ['2015-12-04', '7.380000', '8.150000', '7.370000', '7.840000', '7.816701', '95623256']
0.39, 0.46, 0.15. ['2015-12-30', '8.300000', '8.650000', '8.240000', '8.490000', '8.464769', '54080996']
0.62, 0.38, 0.00. ['2016-02-18', '5.800000', '6.120000', '5.800000', '5.920000', '5.902407', '25627976']
0.39, 0.45, 0.16. ['2016-02-19', '5.900000', '6.160000', '5.850000', '6.040000', '6.022050', '23999303']
0.48, 0.48, 0.04. ['2016-03-03', '5.590000', '5.830000', '5.580000', '5.710000', '5.693031', '15428913']
0.44, 0.54, 0.02. ['2016-04-13', '6.980000', '7.380000', '6.970000', '7.200000', '7.178603', '27437571']
0.55, 0.45, 0.00. ['2016-12-01', '7.040000', '7.440000', '7.040000', '7.220000', '7.220000', '24598174']
0.44, 0.56, 0.00. ['2017-04-05', '11.080000', '12.080000', '11.080000', '11.640000', '11.640000', '29336681']
0.50, 0.50, 0.00. ['2017-04-18', '11.000000', '11.760000', '11.000000', '11.380000', '11.380000', '15986142']
0.35, 0.59, 0.06. ['2017-06-07', '9.730000', '10.400000', '9.690000', '10.150000', '10.150000', '18387647']
0.40, 0.53, 0.07. ['2017-10-12', '8.160000', '8.560000', '8.130000', '8.390000', '8.390000', '23002513']
0.55, 0.41, 0.03. ['2018-03-13', '6.220000', '6.780000', '6.200000', '6.460000', '6.460000', '14338230']
0.57, 0.43, 0.00. ['2018-05-10', '5.980000', '6.470000', '5.980000', '6.190000', '6.190000', '11883545']
0.37, 0.57, 0.07. ['2018-05-21', '6.120000', '6.400000', '6.100000', '6.290000', '6.290000', '14516252']
0.35, 0.62, 0.03. ['2018-07-26', '4.220000', '4.580000', '4.210000', '4.450000', '4.450000', '23313364']
0.35, 0.48, 0.16. ['2018-09-19', '4.830000', '5.090000', '4.780000', '4.980000', '4.980000', '31924631']
0.63, 0.37, 0.00. ['2019-07-17', '3.740000', '3.930000', '3.740000', '3.810000', '3.810000', '10966329']
0.55, 0.35, 0.10. ['2019-12-20', '3.520000', '3.800000', '3.490000', '3.630000', '3.630000', '28112813']