Esempio n. 1
0
    def init_tdx_index_info(self, cdate=None, num=1):
        def _set_index_info(cdate, code_id):
            try:
                if code_id in self.index_objs:
                    _obj = self.index_objs[code_id]
                else:
                    _obj = CIndex(code_id) if code_id in list(
                        ct.TDX_INDEX_DICT.keys()) else TdxFgIndex(code_id)
                return (code_id, _obj.set_k_data(cdate))
            except Exception as e:
                self.logger.error(e)
                return (code_id, False)

        #index_code_list = self.get_concerned_index_codes()
        index_code_list = list(ct.TDX_INDEX_DICT.keys())
        if cdate is None:
            cfunc = partial(_set_index_info, cdate)
            return concurrent_run(cfunc, index_code_list, num=5)
        else:
            succeed = True
            start_date = get_day_nday_ago(cdate, num=num, dformat="%Y-%m-%d")
            for mdate in get_dates_array(start_date, cdate, asending=True):
                if self.cal_client.is_trading_day(mdate):
                    cfunc = partial(_set_index_info, mdate)
                    if not concurrent_run(cfunc, index_code_list, num=5):
                        succeed = False
            return succeed
Esempio n. 2
0
 def start_requests(self):
     end_date = datetime.now().strftime('%Y-%m-%d')
     start_date = self.get_nday_ago(end_date, 10, dformat = '%Y-%m-%d')
     date_array = get_dates_array(start_date, end_date)
     for mdate in date_array:
         if CCalendar.is_trading_day(mdate, redis = self.redis):
             up_url = self.get_url(self.LIMIT_UP, mdate) 
             yield Request(url=up_url, callback=self.parse, errback=self.errback_httpbin)
             down_url = self.get_url(self.LIMIT_DOWN, mdate) 
             yield Request(url=down_url, callback=self.parse, errback=self.errback_httpbin)
Esempio n. 3
0
 def update(self, end_date=None, num=14):
     if end_date is None: end_date = datetime.now().strftime('%Y-%m-%d')
     start_date = get_day_nday_ago(end_date, num=num, dformat="%Y-%m-%d")
     succeed = True
     for mdate in get_dates_array(start_date, end_date):
         if CCalendar.is_trading_day(mdate, redis=self.redis):
             if mdate == end_date or mdate in self.balcklist: continue
             if not self.set_data(mdate):
                 succeed = False
     return succeed
Esempio n. 4
0
 def update(self, end_date=None, num=3):
     if end_date is None: end_date = datetime.now().strftime('%Y-%m-%d')
     start_date = get_day_nday_ago(end_date, num=num, dformat="%Y-%m-%d")
     succeed = True
     for mdate in get_dates_array(start_date, end_date):
         if CCalendar.is_trading_day(mdate, redis=self.redis):
             if not self.set_score(mdate):
                 succeed = False
                 self.logger.info("set score for %s set failed" % mdate)
     return succeed
Esempio n. 5
0
 def update(self, end_date = datetime.now().strftime('%Y-%m-%d'), num = 30):
     #if end_date == datetime.now().strftime('%Y-%m-%d'): end_date = get_day_nday_ago(end_date, num = 1, dformat = "%Y-%m-%d")
     start_date = get_day_nday_ago(end_date, num = num, dformat = "%Y-%m-%d")
     date_array = get_dates_array(start_date, end_date)
     succeed = True
     for mdate in date_array:
         if CCalendar.is_trading_day(mdate, redis = self.redis):
             if not self.set_day_data(mdate):
                 self.logger.error("set %s data for rstock failed" % mdate)
                 succeed = False
     return succeed
Esempio n. 6
0
 def update(self, end_date = None, num = 10):
     if end_date is None: end_date = datetime.now().strftime('%Y-%m-%d')
     start_date = get_day_nday_ago(end_date, num = num, dformat = "%Y-%m-%d")
     date_array = get_dates_array(start_date, end_date)
     succeed = True
     for mdate in date_array:
         if CCalendar.is_trading_day(mdate, redis = self.redis):
             if not self.crawl_data(mdate):
                 self.logger.error("%s set failed" % mdate)
                 succeed = False
     return succeed
Esempio n. 7
0
 def update(self, end_date=datetime.now().strftime('%Y-%m-%d'), num=7):
     succeed = True
     base_df = self.stock_info_client.get_basics()
     code_list = base_df.code.tolist()
     start_date = get_day_nday_ago(end_date, num=num, dformat="%Y-%m-%d")
     date_array = get_dates_array(start_date, end_date)
     for mdate in date_array:
         if CCalendar.is_trading_day(mdate):
             if not self.set_r_financial_data(mdate, code_list):
                 self.logger.error("set %s data for rvaluation failed" %
                                   mdate)
                 succeed = False
     return succeed
Esempio n. 8
0
 def update(self, end_date=None, num=30):
     if end_date is None: end_date = datetime.now().strftime('%Y-%m-%d')
     if end_date == datetime.now().strftime('%Y-%m-%d'):
         end_date = get_day_nday_ago(end_date, num=1, dformat="%Y-%m-%d")
     start_date = get_day_nday_ago(end_date, num=num, dformat="%Y-%m-%d")
     succeed = True
     for mdate in get_dates_array(start_date, end_date):
         if mdate in self.balcklist: continue
         if CCalendar.is_trading_day(mdate, redis=self.redis):
             if not self.set_k_data(mdate):
                 succeed = False
                 self.logger.info("market %s for %s set failed" %
                                  (self.market, mdate))
     return succeed
Esempio n. 9
0
 def update_index(self,
                  end_date=datetime.now().strftime('%Y-%m-%d'),
                  num=3361):
     succeed = True
     start_date = get_day_nday_ago(end_date, num=num, dformat="%Y-%m-%d")
     date_array = get_dates_array(start_date, end_date, asending=True)
     for mdate in date_array:
         if CCalendar.is_trading_day(mdate):
             for code in ct.INDEX_DICT:
                 if not self.cval_client.set_index_valuation(code, mdate):
                     self.logger.error(
                         "{} set {} data for rvaluation failed".format(
                             code, mdate))
                     succeed = False
     return succeed
Esempio n. 10
0
 def update_val(self,
                end_date=datetime.now().strftime('%Y-%m-%d'),
                num=7000):
     succeed = True
     start_date = get_day_nday_ago(end_date, num=num, dformat="%Y-%m-%d")
     date_array = get_dates_array(start_date, end_date)
     for mdate in date_array:
         if CCalendar.is_trading_day(mdate):
             for code in ct.INDEX_DICT:
                 if not self.set_index_valuation(code, mdate):
                     self.logger.error(
                         "%s set %s data for rvaluation failed" %
                         (code, mdate))
                     succeed = False
     return succeed
Esempio n. 11
0
def select_code(code_list, start_date, end_date):
    date_arrays = list()
    for mdate in get_dates_array(start_date, end_date, dformat = "%Y%m%d"):
        if CCalendar.is_trading_day(transfer_int_to_date_string(mdate), redis = mredis):
            date_arrays.append(mdate)
    #choose stock which is not suspended verry long
    total_df = pd.DataFrame()
    for code in code_list:
        df = ts.pro_bar(pro_api = ts_client, ts_code = add_suffix(code), adj = 'qfq', start_date = start_date, end_date = end_date)
        if df is None: continue
        if len(df) > int(0.8 * len(date_arrays)):
            df = df.rename(columns = {"ts_code": "code", "trade_date": "date", "pct_change": "pchange"})
            df = df.set_index('date')
            total_df[code] = df.close
    return total_df
Esempio n. 12
0
def main():
    dirname = '/Volumes/data/quant/stock/data/docs/blog/hellobiek.github.io/source/_posts'
    unlock_path_ = "/Users/hellobiek/Documents/workspace/python/quant/smart_deal_tool/configure/futu.json"
    futuTrader = FutuTrader(host=ct.FUTU_HOST_LOCAL,
                            port=ct.FUTU_PORT,
                            trd_env=TrdEnv.REAL,
                            market=ct.US_MARKET_SYMBOL,
                            unlock_path=unlock_path_)
    start = '2019-05-28'
    end = '2019-05-31'
    orders = futuTrader.get_history_orders(start=start, end=end)
    date_arrary = get_dates_array(start,
                                  end,
                                  dformat="%Y-%m-%d",
                                  asending=True)
    generate(orders, date_arrary, dirname, start, end)
Esempio n. 13
0
    def init_industry_info(self, cdate, num=1):
        def _set_industry_info(cdate, code_id):
            return (code_id, CIndex(code_id).set_k_data(cdate))

        df = self.industry_info_client.get()
        if cdate is None:
            cfunc = partial(_set_industry_info, cdate)
            return concurrent_run(cfunc, df.code.tolist(), num=5)
        else:
            succeed = True
            start_date = get_day_nday_ago(cdate, num=num, dformat="%Y-%m-%d")
            for mdate in get_dates_array(start_date, cdate, asending=True):
                if self.cal_client.is_trading_day(mdate):
                    cfunc = partial(_set_industry_info, mdate)
                    if not concurrent_run(cfunc, df.code.tolist(), num=5):
                        succeed = False
            return succeed
Esempio n. 14
0
 def update(self, end_date=None, num=30):
     if end_date is None: end_date = datetime.now().strftime('%Y-%m-%d')
     #start_date = "1997-12-30"
     start_date = get_day_nday_ago(end_date, num=num, dformat="%Y-%m-%d")
     succeed = True
     code_list = self.get_components(end_date)
     if 0 == len(code_list):
         self.logger.error("%s code_list for %s is empty" %
                           (end_date, self.index_code))
         return False
     for mdate in get_dates_array(start_date, end_date):
         if CCalendar.is_trading_day(mdate, redis=self.redis):
             if not self.set_ratio(code_list, mdate):
                 self.logger.error("set %s score for %s set failed" %
                                   (self.index_code, mdate))
                 succeed = False
     return succeed
import const as ct
from cindex import CIndex
from jqdatasdk import auth
from ccalendar import CCalendar
from cstock_info import CStockInfo
from base.cdate import get_day_nday_ago, get_dates_array
if __name__ == '__main__':
    num = 5500
    end_date = '2019-08-13'
    stock_info_client = CStockInfo()
    df = stock_info_client.get()
    code_list = df['code'].tolist()
    name_list = df['name'].tolist()
    code2namedict = dict(zip(code_list, name_list))
    start_date = get_day_nday_ago(end_date, num=num, dformat="%Y-%m-%d")
    date_array = get_dates_array(start_date, end_date)
    auth('18701683341', '52448oo78')
    for code in [
            '000001', '000016', '000300', '000905', '399001', '399005',
            '399673'
    ]:
        obj = CIndex(code)
        for mdate in date_array:
            if CCalendar.is_trading_day(mdate):
                table_name = obj.get_components_table_name(mdate)
                if obj.is_table_exists(table_name):
                    obj.mysql_client.delete(table_name)

        for mdate in date_array:
            if CCalendar.is_trading_day(mdate):
                if not obj.set_components_data_from_joinquant(