设为首页 收藏本站
查看: 1247|回复: 0

[经验分享] [python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上

[复制链接]

尚未签到

发表于 2015-11-29 15:40:35 | 显示全部楼层 |阅读模式
  将沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上
  原理:python读取前一次处理完的计算5日后涨跌幅输出的csv文件
  文件名前加"[paint]"
  安照通达信的画图文件和板块文件格式,输出文件
  用通达信的导入功能,导入画图文件和板块文件即可
  事前数据截图:
DSC0000.png
  处理后所得文件:
DSC0001.png
  导入通达信后板块截图:
DSC0002.png
  k线截图:
DSC0003.png
  代码:



  1 #coding=utf-8
  2
  3 #读取'[paint]'开头的csv文件
  4 #copyright @ WangXinsheng
  5 #http://www.cnblogs.com/wangxinsheng/
  6 import os
  7 import struct
  8 import time
  9 import datetime
10
11 def getPriceByte(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 = 0
14     second = 0
15     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 = ib
21             break;
22     #print(first)
23     chushu = 2**first
24     if(arg >= chushu*2):
25         second = arg / chushu
26         #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=0
70 for f in files:
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=0
78         for info in infos:
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 = 0
90             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 = 0
125            
126             getPriceByte(file,a,code,ss,day)
127             '''
128             if(j>3):
129                 break
130             else:
131                 j=j+1
132             '''
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')
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-145026-1-1.html 上篇帖子: Python——greenlet 下篇帖子: 一个牛X的Python调试方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表