将沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上
原理:python读取前一次处理完的计算5日后涨跌幅输出的csv文件
文件名前加"[paint]"
安照通达信的画图文件和板块文件格式,输出文件
用通达信的导入功能,导入画图文件和板块文件即可
事前数据截图:
处理后所得文件:
导入通达信后板块截图:
k线截图:
代码:
1#coding=utf-823#读取'[paint]'开头的csv文件4#copyright @ WangXinsheng5#http://www.cnblogs.com/wangxinsheng/6importos7importstruct8importtime9importdatetime1011defgetPRiceByte(infile,arg,code,ss,day):12dirc = {"-5":-3,"-3":-2,"-1":-1,"1":1,"3":2,"5":3,"7":4,"9":5,"11":6}13first =014second =015a =float(arg)16foriin[-5,-3,-1,1,3,5,7,9,11]:17ib = i - 218if(a>=2**ibanda<2**i):19#print(str(a)+":["+str(2**ib)+","+str(2**i)+"]"+"i:"+str(i)+" ib:"+str(ib))20first =ib21
break;22#print(first)23chushu = 2**first24if(arg >= chushu*2):25second = arg /chushu26#print(second)27second = int(second*64)28else:29second = arg / chushu -130#print(second)31second = int(second*128)3233if(first<0):34first = 64 +dirc[str(first)]35else:36first = 63 +dirc[str(first)]37'''38print(first)39print(second)40print(struct.pack('B',first))41print(struct.pack('B',second))42'''43#print(struct.pack('B',first))44#print(struct.pack('B',second))4546infile.write(struct.pack('B',ss))47infile.write(code.encode())48infile.write(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')49infile.write(b'\x03')50infile.write('STANDK'.encode())51infile.write(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')52infile.write(b'\x04')53infile.write(b'\x00')54infile.write(b'\x1a\x10\x00\x00')55infile.write(struct.pack('i',int(day)))56infile.write(b'\x00\x00')57infile.write(struct.pack('B',second))58infile.write(struct.pack('B',first))59infile.write(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdcz3\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')6061print(str(code)+':已在'+day+"日,价格:"+str(arg)+"加入标记")62#infile = open("tdxline.eld","rw")63#getPriceByte(5.55)64file = open("WXSline.eld","wb")65zxg =''66path=r'.'67files =os.listdir(path)68files.sort()69j=070forfinfiles:71if(f.startswith('[paint]')andf.endswith('.csv')):72print('读取文件:'+path+'/'+f)7374f=open(path+'/'+f,'rt')75infos =f.readlines()76f.close()77i=078forinfoininfos:79if(i==0):80i=i+181continue82tmp = info.split(',')83if(len(tmp)<2):84continue85code = str(tmp[1].replace('"','').replace("'",""))86if(code.startswith('6')):87ss = 188else:89ss =090addzxg =''91try:92zxg.index(str(ss)+code)93except:94addzxg = str(ss)+code+"\n"9596if(addzxg!=''):97zxg = zxg + str(ss)+code+"\n"98if(len(tmp)<10):99continue100101days = tmp[0].split('-')102if(len(days)<2):103days = tmp[0].split('/')104105if(len(days)<2):106continue107108if(len(days[1])<2):109days[1] ='0'+days[1]110if(len(days[2])<2):111days[2] ='0'+days[2]112day = days[0]+days[1]+days[2]113#print(day)114115priceArr = tmp[9].replace('"','').split('%')116if(len(priceArr)<2):117continue118a = float(priceArr[1].replace('[','').replace(']',''))*(1-float(priceArr[0].replace('%',''))/100)119a = round(a,2)120code = str(tmp[1].replace('"','').replace("'",""))121if(code.startswith('6')):122ss = 1123else:124ss =0125126getPriceByte(file,a,code,ss,day)127'''128if(j>3):129
break130else:131j=j+1132'''133134fileA = open("WXS条件股.ebk","w")135fileA.write(zxg)136fileA.close()137file.close()138print('处理完了\n画图文件地址:./WXSline.eld')139print('\n板块文件地址:./WXS条件股.ebk')