1 #coding=utf-8
2
3 #读取'[paint]'开头的csv文件
4 #copyright @ WangXinsheng
5 #http://www.cnblogs.com/wangxinsheng/
6 importos7 importstruct8 importtime9 importdatetime10
11 defgetPriceByte(infile,arg,code,ss,day):12 dirc = {"-5":-3,"-3":-2,"-1":-1,"1":1,"3":2,"5":3,"7":4,"9":5,"11":6}13 first =014 second =015 a =float(arg)16 for i in [-5,-3,-1,1,3,5,7,9,11]:17 ib = i - 2
18 if(a>=2**ib and a<2**i):19 #print(str(a)+":["+str(2**ib)+","+str(2**i)+"]"+"i:"+str(i)+" ib:"+str(ib))
20 first =ib21 break;22 #print(first)
23 chushu = 2**first24 if(arg >= chushu*2):25 second = arg /chushu26 #print(second)
27 second = int(second*64)28 else:29 second = arg / chushu -1
30 #print(second)
31 second = int(second*128)32
33 if(first<0):34 first = 64 +dirc[str(first)]35 else:36 first = 63 +dirc[str(first)]37 '''
38 print(first)39 print(second)40 print(struct.pack('B',first))41 print(struct.pack('B',second))42 '''
43 #print(struct.pack('B',first))
44 #print(struct.pack('B',second))
45
46 infile.write(struct.pack('B',ss))47 infile.write(code.encode())48 infile.write(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')49 infile.write(b'\x03')50 infile.write('STANDK'.encode())51 infile.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')52 infile.write(b'\x04')53 infile.write(b'\x00')54 infile.write(b'\x1a\x10\x00\x00')55 infile.write(struct.pack('i',int(day)))56 infile.write(b'\x00\x00')57 infile.write(struct.pack('B',second))58 infile.write(struct.pack('B',first))59 infile.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')60
61 print(str(code)+':已在'+day+"日,价格:"+str(arg)+"加入标记")62 #infile = open("tdxline.eld","rw")
63 #getPriceByte(5.55)
64 file = open("WXSline.eld","wb")65 zxg = ''
66 path=r'.'
67 files =os.listdir(path)68 files.sort()69 j=070 for f infiles:71 if(f.startswith('[paint]') and f.endswith('.csv')):72 print('读取文件:'+path+'/'+f)73
74 f=open(path+'/'+f,'rt')75 infos =f.readlines()76 f.close()77 i=078 for info ininfos:79 if(i==0):80 i=i+1
81 continue
82 tmp = info.split(',')83 if(len(tmp)<2):84 continue
85 code = str(tmp[1].replace('"','').replace("'",""))86 if(code.startswith('6')):87 ss = 1
88 else:89 ss =090 addzxg = ''
91 try:92 zxg.index(str(ss)+code)93 except:94 addzxg = str(ss)+code+"\n"
95
96 if(addzxg!=''):97 zxg = zxg + str(ss)+code+"\n"
98 if(len(tmp)<10):99 continue
100
101 days = tmp[0].split('-')102 if(len(days)<2):103 days = tmp[0].split('/')104
105 if(len(days)<2):106 continue
107
108 if(len(days[1])<2):109 days[1] = '0'+days[1]110 if(len(days[2])<2):111 days[2] = '0'+days[2]112 day = days[0]+days[1]+days[2]113 #print(day)
114
115 priceArr = tmp[9].replace('"','').split('%')116 if(len(priceArr)<2):117 continue
118 a = float(priceArr[1].replace('[','').replace(']',''))*(1-float(priceArr[0].replace('%',''))/100)119 a = round(a,2)120 code = str(tmp[1].replace('"','').replace("'",""))121 if(code.startswith('6')):122 ss = 1
123 else:124 ss =0125
126 getPriceByte(file,a,code,ss,day)127 '''
128 if(j>3):129 break130 else:131 j=j+1132 '''
133
134 fileA = open("WXS条件股.ebk","w")135 fileA.write(zxg)136 fileA.close()137 file.close()138 print('处理完了\n画图文件地址:./WXSline.eld')139 print('\n板块文件地址:./WXS条件股.ebk')