话不多说先上代码,此代码经过反复验证,确认计算结果正确,这里周期取6日,金叉指的是昨日DIF小于昨日的DIFMA,但今日DIF大于今日DIFMA:
#请使用前复权的日K线数据import os#缓存数据class SecurityData: code = '' #股票代码 name = '' #股票名称 value = 0 #数值 #定义列表lst = []#打开日志文件fs = open(r'C:\Py\result.txt','a+')#循环遍历所有的日K线文件for root, dirs, files in os.walk(r'C:\Py\day'): for file in files: #写日志 print('正在计算' + file) #打开日K线文件 fs2 = open(os.path.join(root,file), 'r', True) #索引 pos = 0 #数据索引 dataPos = 0 #股票名称 sName = '' #交叉类型 isCross = 0 #定义周期 short = 10 long = 50 m = 10 #保存数据的集合 lstClose = [] lstDif = [] lastMa1 = 0 lastMa2 = 0 lastDifMa = 0 #循环遍历每一行 while True: #读取该行 line = fs2.readline() #没有行的时候退出 if not line: break #去除前2行和尾行 if pos > 1 and len(line) > 20: #重置数量 isCross = 0 #分割字符串 strs = line.split(',') #收盘价 closePrice = float(strs[4]) #保存到集合 lstClose.append(closePrice) #真实计算周期