下载tick数据,下载日线数据+计时器-定时循环

#===================================================================

#下载tick数据

# encoding: UTF-8

#下载指数tick数据

import time
import datetime
import tushare as ts 
import pandas as pd
from pymongo import MongoClient
from pymongo import *
import traceback as tb


class index_tick(object):
    
    
    def __init__(self):
        self.m=0
        self.df1=[]
        self.client=MongoClient('localhost',27017)
        self.db_IH=self.client['IH_index']
        self.db_IC=self.client['IC_index']
        self.db_IF=self.client['IF_index']
        
        collection_time1=datetime.datetime.now()
        collection_time=str(collection_time1.date())
        
        self.IH_collection=self.db_IH['IH_'+collection_time]
        self.IF_collection=self.db_IF['IF_'+collection_time]
        self.IC_collection=self.db_IC['IC_'+collection_time]
    
    def data_insert(self,data1,data2,data3):
        tick_dict={}
        tick_dict['close']=data1
        tick_dict['time']=data2
        tick_dict['code']=data3
        tick_dict['_id']=data2+data3
        
        return tick_dict    

    
    def index_download(self):

        try:
            t = datetime.datetime.now()
            self.df1=ts.get_index()
            self.df1.index=self.df1['name']
            del self.df1['name']
            
            self.df1=self.df1.T
            ih1=self.df1['上证50'][4]
            ih2='IH_index'
            ih3=str(t)
            if1=self.df1['沪深300'][4]
            if2='IF_index'
            if3=str(t)
            ic1=self.df1['中证500'][4]
            ic2='IC_index'
            ic3=str(t)
            IH_dict=self.data_insert(ih1,ih2,ih3)
            IF_dict=self.data_insert(if1,if2,if3)
            IC_dict=self.data_insert(ic1,ic2,ic3)
            
            self.IH_collection.save(IH_dict)
            self.IF_collection.save(IF_dict)
            self.IC_collection.save(IC_dict)
    
            print(ih1,ih2,ih3)
            print(if1,if2,if3)
            print(ic1,ic2,ic3)
        except Exception:
            print('error')
            tb.print_exc()
            print(self.m)
            self.m=self.m+1
        
        

        
        

#===========================================================================

#-下载日线数据

 

# encoding: UTF-8
import xlrd
import sys
import json
import pymongo
import pandas as pd
import tushare as ts
from pymongo import MongoClient


class Daily_bar_downloading(object):
    
    def __init__(self):
        self.stock_list = ts.get_stock_basics()
        self.stock_list = self.stock_list.index
        self.stock_list = self.stock_list.values
        #一个函数里计算生成的值,另一个函数里要用,需要return出来
        #初始化的时候def要写self,函数里的变量全部要加self,下面引用这个变量也要全部加self
        self.client = pymongo.MongoClient('localhost',27017)           #pymongo和MongoClient都要import
        self.db  = self.client['Daily_bar_downloading_test'] #连接database        
        

    #-----------------------------------------------------------------------
    #获得所有股票代码列表
    
    #def stockList(self):
        #stock_list = ts.get_stock_basics()
        #stock_list = stock_list.index
        #stock_list = stock_list.values 
        #return stock_list
    
    
    #-------------------------------------------------------------------
    def stock_price_insert(self,row): #创建函数
        bar_dict = {}
        bar_dict['close'] = row['close'] #创建属性,内容为收盘价
        bar_dict['date'] = row['date']
        bar_dict['high'] = row['high']
        bar_dict['low'] = row['low']
        bar_dict['open'] = row['open']
        bar_dict['volume'] = row['volume']
        
        return bar_dict
    
    
    #查找缺失----------------------------------------------------------------------------------
    def print_missing_list(self,stock_list):
        missing_list=[]
        for x in stock_list:
            try:
                out = self.db[x]
                data = pd.DataFrame(list(out.find()))
                del data['_id']
            except Exception as error:
                missing_list.append(x)                            #没有的,存进missing_list
        print('***********************************************************')
        print('********************missing_list***************************')
        print missing_list
        return missing_list
    #------------------------------------------------------------------------------------------   
    
    #补足数据-----------------------------------------------------------------------------------
    def missing_stock_price_download(self, client , missing_list):
        #stock_db=client.Stock_Price_3years#创建名为Stock的database
        #stock_collection=stock_db.stock_collection 
                #把缺的补数据拿来,存进MongoDB.-第一次
        for symbol in missing_list:
            stock_collection = self.db[symbol]               #stock_db要预先定义。在stock_db中创立名为x的collection
            df = ts.get_k_data(symbol, start='2000-01-01',end = '2018-07-25',ktype='D')                           #ts要导入tusahre模块
            #df = df.fillna(method='pad')
            df = df.dropna()
            
            for index, row in df.iterrows():
                bar_dict = self.stock_price_insert(row)                #stock_price_insert 这个函数要导入
                stock_collection.save(bar_dict)
            print(symbol)
        print('*******************************************************************************')
        print('*******************************************************************************')    
        print("download and the save missing stock to MongoDB")
        print('*********************************************************************************')
        print('********************************************************************************')
    #--------------------------------------------------------------------------------------------
 
    def daily_bar_download(self):
        #执行代码:----------------------------------------------------------------
        
        
        
        
        missing_list = []
        for x in self.stock_list:
            try:
                out = self.db[x]
                data = pd.DataFrame(list(out.find()))
                del data['_id']
            except Exception as error:
                print (error)
                print (x)
                missing_list.append(x)                            #没有的,存进missing_list
        print missing_list
        
        m = 1
        while missing_list:
            #client = pymongo.MongoClient('localhost',27017)  
            print('===============================================================================')
            print('===============================================================================')
            self.missing_stock_price_download(self.client, missing_list)              #补充数据
            print('===================================================================================')
            print('===================================================================================')
            
            
            print(u'=====================================查找缺失开始=================================')
            print('================================================================================')
            missing_list=self.print_missing_list(self.stock_list)                  #查找缺失
            print('===================================================================================')
        
            #print ('print missing list for %d times'(m) )
            m+=1
            print(m)

#===============================================================

#跑数据用的 run_service.py

# encoding: UTF-8
#这个是计时器


#--------------------------------------------------
#通用库
#--------------------------------------------------
import time
import datetime


#--------------------------------------------------
#自有库
#--------------------------------------------------
from index_tick.indexdata import index_tick
from daily_bar.daily_bar_downloading import Daily_bar_downloading




#---------------------------------------------------
#taskTime_end0 = datetime.time(hour=9, minute=14)

#taskTime_start1 = datetime.time(hour=9, minute=14)
#taskTime_end1 = datetime.time(hour=14, minute=00)

#taskTime_start2 = datetime.time(hour=11, minute=30)
#taskTime_end2 = datetime.time(hour=12, minute=59)

#taskTime_start3 = datetime.time(hour=13, minute=59)
#taskTime_end3 = datetime.time(hour=15, minute=00)

#taskTime_start4 = datetime.time(hour=15, minute=00)
#taskTime_end4 = datetime.time(hour=18, minute=00)

taskTime_start5 = datetime.time(hour=15, minute=00)
taskTime_end5 = datetime.time(hour=20, minute=00)



time_now=datetime.datetime.now()
time_now2=time_now.time()


#while time_now2<taskTime_end0:
    #time_now=datetime.datetime.now()
    #time_now2=time_now.time()    
    #print(time_now2,'stage0')
    #time.sleep(2)



#index_tick=index_tick()#创立类的对象
#while time_now2>taskTime_start1 and time_now2<taskTime_end1:
    #time_now=datetime.datetime.now()
    #time_now2=time_now.time()
    #index_tick.index_download()#引用类的方法
    #time.sleep(2)    
    
#while time_now2>taskTime_start2 and time_now2<taskTime_end2:
    #time_now=datetime.datetime.now()
    #time_now2=time_now.time()    
    #print(time_now2,'stage2')
    #time.sleep(2)    
    
#while time_now2>taskTime_start3 and time_now2<taskTime_end3:
    #time_now=datetime.datetime.now()
    #time_now2=time_now.time()    
    #index_tick.index_download()
    #time.sleep(2)    
        
#while time_now2>taskTime_start4 and time_now2<taskTime_end4:
    #time_now=datetime.datetime.now()
    #time_now2=time_now.time()    
    #print(time_now2,'stage4')
    #time.sleep(2)        
    
#while time_now2>taskTime_start4 and time_now2<taskTime_end4:
    #time_now=datetime.datetime.now()
    #time_now2=time_now.time()    
    #print(time_now2,'stage4')
    #time.sleep(2)       

bar = Daily_bar_downloading()
while time_now2>taskTime_start5 and time_now2<taskTime_end5:
    time_now=datetime.datetime.now()
    time_now2=time_now.time()
    bar.daily_bar_download()
    

       
    

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python语言具有丰富的数据分析和处理能力,可以用于下载历史分笔成交数据来进行数据分析和建模。通信达是国内一家提供股票行情数据的公司,在Python语言中可以使用tushare和pytdx等三方工具来下载通信达的历史分笔成交数据。 在使用tushare下载历史分笔成交数据时,需要先注册tushare账号,获取token,并引入tushare库。然后可以使用get_hist_data函数来获取历史分笔成交数据,其中需要传入参数code、start和end来指定股票代码、开始时间和结束时间。获取数据后可以进行筛选、转换、计算等处理。 在使用pytdx下载历史分笔成交数据时,需要先引入pytdx库,并设置相关信息如服务器IP和端口、股票市场等。然后可以使用PytdxHq_API类来获取历史分笔成交数据,其中需要传入参数code、start和end来指定股票代码、开始时间和结束时间。获取数据后可以进行转换、计算等处理。 无论使用tushare还是pytdx下载历史分笔成交数据,都需要先了解相关的API接口和参数设置,同时需要注意对数据的筛选和处理,以便获取相应的数据进行后续的分析建模。 ### 回答2: Python是一种流行的编程语言,由于它在数据分析、数据库管理、人工智能等领域具有广泛的应用,因此被认为是一种重要的编程语言。如果你想要通过Python实现从通信达下载历史分笔成交数据,可以借助Python的强大库,比如pandas和tushare。 首先,你需要在tushare上注册账户,获取token用于数据请求。然后,你可以使用tushare库中的get_tick_data()方法,输入股票代码、日期、指定数据来源,并设置token值。 下面是一个简单的代码示例: ``` import tushare as ts # 使用tushare获取历史成交数据 def get_tick_data(code, date): # 获取数据 df = ts.get_tick_data(code=code, date=date, src='tt', token='Your Token') # 对数据进行处理 df = df.drop(['type'],axis=1) # 删除无用列 df.insert(0,'code',code) # 添加股票代码列 df.insert(4,'date',date) # 添加日期列 return df ``` 以上代码将股票代码和日期作为参数,使用tushare库中的get_tick_data()函数获取给定日期股票的历史分笔成交数据。返回的DataFrame可以进一步处理并保存到本地文件中,以备后续分析使用。 需要注意的是,由于下载历史分笔成交数据需要较长时间,并且tushare的数据限制,建议进行分批下载并处理,以免请求过程中出现异常。 ### 回答3: 要从通达信下载历史分笔成交数据,可以使用Python编程语言。Python是一种强大的编程语言,广泛用于数据分析、科学计算、机器学习、自然语言处理等领域。 首先需要安装Python的相关库,包括tushare和pandas。Tushare是一个免费的金融数据接口库,提供了许多股票等金融数据的获取方式,pandas则是一个强大的数据分析工具,提供了丰富的数据处理和操作方法。 接着,通过tushare的接口,可以获取到历史分笔成交数据,参数包括股票代码和日期范围。数据格式是一个DataFrame,可以通过pandas将其转换成csv格式的文件。 在Python中,可以使用以下代码获取成交数据: ```python import tushare as ts import pandas as pd # 设置tushare的token ts.set_token('your_token_here') # 获取历史分笔成交数据,参数包括股票代码和日期范围 df = ts.get_tick_data('600519', date='20220104') # 将DataFrame保存为csv格式的文件 df.to_csv('tick_data.csv', index=False) ``` 这个例子中,我们获取了贵州茅台(股票代码:600519)在2022年1月4日的成交数据,并将其保存为一个csv文件。可以根据需要修改参数以及文件名和路径。 总的来说,Python是一个非常灵活和强大的编程语言,可以用来解决各种问题,包括数据获取、处理、分析和可视化等方面。与其他语言相比,Python的代码量相对较少,易于阅读和理解,因此是数据科学领域的热门工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

德彪稳坐倒骑驴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值