话不多说先上代码,这个分布情况指的就是分析一下涨跌幅在每个百分比阶段各有多少天,例如0%-1%有多少天,1%-2%有多少天:
import os#缓存数据class SecurityData: count = 0 #数量 endRange = 0 #结束幅度 startRange = 0 #开始幅度#数据集合lst = []for val in range(-10,11): securityData = SecurityData() securityData.startRange = val securityData.endRange = val + 1 lst.append(securityData)#打开日志文件fs = open(r'C:\Py\result.txt','a+')#打开日K线文件fs2 = open(r'C:\Py\SH000001.txt', 'r', True)#索引pos = 0#上次收盘价lastClose = 0#循环遍历每一行while True: #读取该行 line = fs2.readline() #没有行的时候退出 if not line: break #去除前2行和尾行 if pos > 1 and len(line) > 20: #分割字符串 strs = line.split(',') #收盘价 closePrice = float(strs[4]) #开盘价 openPrice = float(strs[1]) if pos == 2: lastClose = openPrice if lastClose > 0: diffRange = 100 * (closePrice - lastClose) / lastClose if diffRange >= -10 and diffRange <= 10: data = lst[int(diffRange) + 10] data.count = data.count + 1 lastClose = closePrice #累加索引 pos = pos + 1#给列表排序from operator import attrgetterlst2 = sorted(lst, key=attrgetter('startRange'), reverse=False)#输出for val in lst2: print(str(val.startRange) + '% to ' + str(val.endRange) + '%,' + str(val.count)) fs.write(str(val.startRange) + '% to' + str(val.endRange) + '%,' + str(val.count) + '\r\n')#关闭文件流fs.close()fs2.close()
新建一个文件,命名为RANGE.py,并将上述代码粘贴到你的文件中。
按照教程下载K线数据,并放到一个文件夹中:
修改Python中的文件和文件夹路径为你的路径:
如果没有安装Python,就到这个地址下载安装一下:
https://www.python.org/ftp/python/3.9.0/python-3.9.0-amd64.exe
注意第一个界面的Add to Path一定要勾上。
打开命令提示行,输入python C:\PY\RANGE.py
输入回车运行脚本,得到如下结果:
result.txt中也输出了结果:
通过上述数据我们可以看到,上证指数涨幅在0%-1%的天数是最多的,达到了一半,并且阳线的数量要远远多于阴线。
结论:
1.计算结果完全正确,而且是完全对应通达信的;
2.可以直接运行,得到结果文件result.txt,怎么用看你的;
3.可以修改代码,例如修改输入结果文件的格式;
4.不止用于A股,什么品种,数据,包括1分钟,5分钟,60分钟线也都可以;
5.可以用来做交易回测。
6.可以把代码嵌入你的Python中,用来做实时监控。