赞
踩
目录
真正的市场高手不但要熟练掌握日线,对分钟线也要进行深入研究。缠中说禅在他的博客中讲到,年、季、月、周、日、60分钟、30分钟、5分钟、1分钟研究道理是相同的。粒度越细,那么赢利点就越多。如果长期不操作,那么好苹果也会成为烂苹果。高手甚至能在某一天的某一秒就确定这一秒是几年来的最高点。这都需要剖析分钟线数据。
在研究的过程中,发现网上相关资料要不语焉不详,要不就是资料数据过时,无法直接拿来使用。这回正好借着在家发烧的大好时机,深挖细挖通达信分钟数据结构和python代码,终于可以顺利导出5分钟和1分钟数据了。在这里,python代码和程序都拿出来与大家免费分享。
软件主要增加以下内容:
* 转换通达信5分钟数据
* 转换通达信1分钟数据
* 以上数据中的日期字段,本来是一串数字,转换为可读日期“年月日”
* 分钟字段计算为“时:分”格式
- from struct import *
- import pandas as pd
- import os
- # import sys
- import time
- import datetime
- import math
-
- # stock_list = []
- # linename=['code','date','open','high','low','close','amout','vol']
- # df_all_stock = pd.DataFrame(stock_list, columns=linename)
- def miniute2csv_data(dirname, fname, targetDir):
- ofile=open(dirname + os.sep + fname, 'rb')
- buf=ofile.read()
- ofile.close()
-
- ifile=open(targetDir + os.sep + fname+'.csv','w')
- num=len(buf)
- no=num/32
- b=0
- e=32
- line=''
- linename=str('date')+','+str('miniute')+','+str('open')+','+str('high')+','+str('low')+','+str('close')+','+str('amout')+','+str('vol')+'\n'
- ifile.write(linename)
-
- t = datetime.datetime.strptime("2012-11-11 00:00:00", "%Y-%m-%d %H:%M:%S")
-
- for i in range(int(no)):
- # a=unpack('IIIIIfII',buf[b:e])
- a = unpack('HHfffffii',buf[b:e])
-
- year=math.floor(a[0]/2048)+2004
- month=math.floor((a[0] % 2048)/100)
- day=(a[0] % 2048) % 100
- hm = (t + datetime.timedelta(minutes=a[1])).strftime("%H:%M")
- line = str(year)+'{:02}'.format(month)+'{:02}'.format(day)+','+hm+','+'{:.2f}'.format(a[2])+','+'{:.2f}'.format(a[3])+','+'{:.2f}'.format(a[4])+','+'{:.2f}'.format(a[5])+','+'{:.2f}'.format(a[6])+','+str(a[7])+'\n'
-
- # line = str(year)+'{:02}'.format(month)+'{:02}'.format(day)+','+str(a[1])+','+'{:.2f}'.format(a[2])+','+'{:.2f}'.format(a[3])+','+'{:.2f}'.format(a[4])+','+'{:.2f}'.format(a[5])+','+'{:.2f}'.format(a[6])+','+str(a[7])+'\n'
- # line =str(a[0]) +','+str(a[1])+','+'{:.2f}'.format(a[2])+','+'{:.2f}'.format(a[3])+','+'{:.2f}'.format(a[4])+','+'{:.2f}'.format(a[5])+','+'{:.2f}'.format(a[6])+','+str(a[7])+'\n'
- ifile.write(line)
- b = b+32
- e = e+32
- ifile.close()
-
- df_gp = pd.read_csv(targetDir + os.sep + fname + '.csv', sep=',')
- df_gp.to_excel(targetDir + os.sep + fname + '.xlsx')
-
- #print("可能需要较长时间,请耐心等待......")
-
- targetDir=r'.\data\tdx'
- # 目标文件夹若不存在,则创建
- if not os.path.exists(targetDir):
- os.makedirs(targetDir)
-
- time.sleep(1)
-
- # 沪市数据转换
- #tdxPath = r'C:\new_mszq_v6\vipdoc\sh\lday'
- #pathdir#
- #fn#
-
- if len(fn)==0:
- listfile = os.listdir(tdxPath)
- else:
- listfile = fn
-
- start = time.time()
- i = 0
- for f in listfile:
- i+=1
- #if i < 5:
- miniute2csv_data(tdxPath, f, targetDir)
- #print(f)
-
- print ('数据转换完成。')
-
- stop = time.time()
- print("用时:%s秒"%str(stop-start))
免费软件。
下载:
https://www.1hwj.net/forum.php?mod=viewthread&tid=57&extra=
通达信日线数据转换为csv、xlsx、feather格式;
通达信5分钟、1分钟数据转换为csv、xlsx格式;
搜索历史数据中特定形态,目前支持61种形态;
主要面向不会编程的朋友,以上所有功能不需要学习编程,点击几次鼠标即可完成;
免费的哈。
其他功能需求请在评论区留言,如果有可能我会尽量实现。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。