zoukankan      html  css  js  c++  java
  • [python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上

    将沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上

    原理:python读取前一次处理完的计算5日后涨跌幅输出的csv文件

    文件名前加"[paint]"

    安照通达信的画图文件和板块文件格式,输出文件

    用通达信的导入功能,导入画图文件和板块文件即可

    事前数据截图:

    处理后所得文件:

    导入通达信后板块截图:

    k线截图:

    代码:

      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'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00')
     49     infile.write(b'x03')
     50     infile.write('STANDK'.encode())
     51     infile.write(b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00')
     52     infile.write(b'x04')
     53     infile.write(b'x00')
     54     infile.write(b'x1ax10x00x00')
     55     infile.write(struct.pack('i',int(day)))
     56     infile.write(b'x00x00')
     57     infile.write(struct.pack('B',second))
     58     infile.write(struct.pack('B',first))
     59     infile.write(b'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00xdcz3x01x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00')
     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+"
    "
     95                 
     96             if(addzxg!=''):
     97                 zxg = zxg + str(ss)+code+"
    "            
     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('处理完了
    画图文件地址:./WXSline.eld')
    139 print('
    板块文件地址:./WXS条件股.ebk')
  • 相关阅读:
    结构体struct和typedef后面接指针的含义
    C++中关于指针初始化和使用NULL的理解
    (虚)继承类的内存占用大小
    为什么构造函数不能为虚函数
    C++中变量自动初始化的问题
    CY7C68013A的一点总结
    Altium designer总结
    在Linux系统上限制远程登录的IP
    linux系统如何限制其他用户登录
    使用秘钥对登录Linux系统
  • 原文地址:https://www.cnblogs.com/wangxinsheng/p/4854390.html
Copyright © 2011-2022 走看看