ptype = 'low' # op, ra, duration_date, days = pct.get_linear_model_status('999999', filter='y', dl=dl, ptype=ptype, days=1) # duration_date = int(ct.duration_date * 1.4) duration_date = ct.duration_date_l # duration_date = 120 # duration_date = 300 du_date = duration_date newdays = 5 end_date = None ptype = 'low' filter = 'y' percent_status = 'n' if len(str(duration_date)) < 4: # duration_date = tdd.get_duration_price_date('999999', dl=duration_date, end=end_date, ptype='dutype') du_date = tdd.get_duration_Index_date('999999', dl=duration_date) if cct.get_today_duration(du_date) <= 3: duration_date = 5 print("duaration: %s duration_date:%s" % (cct.get_today_duration(du_date), duration_date)) log.info("duaration: %s duration_date:%s" % (cct.get_today_duration(du_date), duration_date)) set_duration_console(du_date) # all_diffpath = tdd.get_tdx_dir_blocknew() + '062.blk' parser = cct.MoniterArgmain() parserDuraton = cct.DurationArgmain() market_sort_value = ct.Market_sort_idx['1'] market_sort_value_key = eval(market_sort_value + '_key') while 1: try: # df = sina_data.Sina().all # top_now = tdd.getSinaAlldf(market='cx', vol=ct.json_countVol, type=ct.json_countType)
def get_tdx_append_now_df(code, type="f", start=None, end=None): # start=cct.day8_to_day10(start) # end=cct.day8_to_day10(end) df = get_tdx_Exp_day_to_df(code, type, start, end).sort_index(ascending=True) # print df[:1] if not end == None: if not end == df.index[-1]: print (end, df.index[-1]) return df today = cct.get_today() if len(df) > 0: tdx_last_day = df.index[-1] duration = cct.get_today_duration(tdx_last_day) log.debug("duration:%s" % duration) else: tdx_last_day = None duration = 1 log.debug("tdx_last_day:%s" % tdx_last_day) index_status = False if code == "999999": code = "sh" index_status = True elif code.startswith("399"): index_status = True for k in INDEX_LIST.keys(): if INDEX_LIST[k].find(code) > 0: code = k log.debug("duration:%s" % duration) if duration >= 1: ds = ts.get_hist_data(code, start=tdx_last_day, end=today) if ds is not None and len(ds) > 1: ds = ds[: len(ds) - 1] ds["code"] = code ds["vol"] = 0 ds = ds.loc[:, ["code", "open", "high", "low", "close", "vol", "volume"]] ds.rename(columns={"volume": "amount"}, inplace=True) ds.sort_index(ascending=True, inplace=True) log.debug("ds:%s" % ds[:1]) df = df.append(ds) # pd.concat([df,ds],axis=0, join='outer') # result=pd.concat([df,ds]) if cct.get_work_time() and not index_status: dm = rl.get_sina_Market_json("all", showtime=False).set_index("code") # dm=dm.drop_duplicates() log.debug("dm:%s" % dm[-1:]) dm.rename(columns={"volume": "amount", "trade": "close"}, inplace=True) # c_name=dm.loc[code,['name']] dm_code = dm.loc[code, ["open", "high", "low", "close", "amount"]] log.debug("dm_code:%s" % dm_code["amount"]) dm_code["amount"] = round(float(dm_code["amount"]) / 100, 2) dm_code["code"] = code dm_code["vol"] = 0 # dm_code['date']=today dm_code.name = today df = df.append(dm_code) # df['name']=c_name # log.debug("c_name:%s"%(c_name)) log.debug("df[-3:]:%s" % (df[-2:])) df["name"] = dm.loc[code, "name"] log.debug("df:%s" % df[-2:]) return df
status_change = False lastpTDX_DF = pd.DataFrame() # dl=30 ptype = 'low' # op, ra, duration_date, days = pct.get_linear_model_status('999999', filter='y', dl=dl, ptype=ptype, days=1) # duration_date = ct.duration_date duration_date = ct.duration_date_l du_date = duration_date end_date = None ptype = 'low' filter = 'y' percent_status = 'n' if len(str(duration_date)) < 4: # duration_date = tdd.get_duration_price_date('999999', dl=duration_date, end=end_date, ptype='dutype') du_date = tdd.get_duration_Index_date('999999', dl=duration_date) if cct.get_today_duration(du_date) <= 3: duration_date = 5 print("duaration: %s duration_date:%s" % (cct.get_today_duration(du_date), duration_date)) log.info("duaration: %s duration_date:%s" % (cct.get_today_duration(du_date), duration_date)) set_duration_console(du_date) # all_diffpath = tdd.get_tdx_dir_blocknew() + '062.blk' parser = cct.MoniterArgmain() parserDuraton = cct.DurationArgmain() market_sort_value = ct.Market_sort_idx['1'] market_sort_value_key = eval(market_sort_value + '_key') while 1: try: # df = sina_data.Sina().all time_Rt = time.time() top_now = tdd.getSinaAlldf(market='rzrq', vol=ct.json_countVol, vtype=ct.json_countType) # top_now = tdd.getSinaAlldf(market='all', vol=ct.json_countVol, vtype=ct.json_countType)
def get_tdx_append_now_df_api(code, type="f", start=None, end=None): import sina_data # start=cct.day8_to_day10(start) # end=cct.day8_to_day10(end) df = get_tdx_Exp_day_to_df(code, type, start, end).sort_index(ascending=True) # print df[:1] if not end == None: if end < df.index[-1]: print (end, df.index[-1]) return df today = cct.get_today() if len(df) > 0: tdx_last_day = df.index[-1] duration = cct.get_today_duration(tdx_last_day) log.debug("duration:%s" % duration) else: tdx_last_day = None duration = 1 log.debug("tdx_last_day:%s" % tdx_last_day) index_status = False if code == "999999": code = "sh" index_status = True elif code.startswith("399"): index_status = True for k in INDEX_LIST.keys(): if INDEX_LIST[k].find(code) > 0: code = k log.debug("duration:%s" % duration) if duration >= 1: try: ds = ts.get_hist_data(code, start=tdx_last_day, end=today) # ds = ts.get_h_data('000001', start=tdx_last_day, end=today,index=index_status) # df.index = pd.to_datetime(df.index) except (IOError, EOFError, Exception) as e: print "Error duration", e if index_status: code_t = INDEX_LIST[code][2:] ds = ts.get_h_data(code_t, start=tdx_last_day, end=today, index=index_status) df.index = pd.to_datetime(df.index) if ds is not None and len(ds) > 1: ds = ds[: len(ds) - 1] if index_status: code_t = INDEX_LIST[code][2:] if code == "sh": code = "999999" else: code = code_t ds["code"] = code else: ds["code"] = code # ds['vol'] = 0 ds = ds.loc[:, ["code", "open", "high", "low", "close", "volume", "amount"]] # ds.rename(columns={'volume': 'amount'}, inplace=True) ds.rename(columns={"volume": "vol"}, inplace=True) ds.sort_index(ascending=True, inplace=True) log.debug("ds:%s" % ds[:1]) df = df.append(ds) # pd.concat([df,ds],axis=0, join='outer') # result=pd.concat([df,ds]) if cct.get_work_time(): # dm = rl.get_sina_Market_json('all').set_index('code') if index_status: code = INDEX_LIST[code] dm = sina_data.Sina().get_stock_code_data(code).set_index("code") if dm is not None and not dm.empty: # dm=dm.drop_duplicates() log.debug("dm:%s" % dm[-1:]) dm.rename(columns={"volume": "amount", "turnover": "vol"}, inplace=True) # c_name=dm.loc[code,['name']] dm_code = dm.loc[:, ["open", "high", "low", "close", "amount"]] log.debug("dm_code:%s" % dm_code["amount"]) dm_code["amount"] = round(float(dm_code["amount"]) / 100, 2) dm_code["code"] = code dm_code["vol"] = 0 # dm_code['date']=today dm_code.name = today df = df.append(dm_code) # df['name']=c_name # log.debug("c_name:%s"%(c_name)) log.debug("df[-3:]:%s" % (df[-2:])) # df['name'] = dm.loc[code, 'name'] log.debug("df:%s" % df[-2:]) return df
def get_linear_model_ratio(asset): log.info("asset:%s" % asset[-1:]) duration = asset[-1:].index.values[0] log.debug("duration:%s" % duration) log.debug("duration:%s" % cct.get_today_duration(duration)) # log.debug("duration:%s"%cct.get_duration_date(duration)) asset = asset.dropna() X = np.arange(len(asset)) x = sm.add_constant(X) model = regression.linear_model.OLS(asset, x).fit() a = model.params[0] b = model.params[1] log.info("X:%s a:%0.1f b:%0.1f" % (len(asset), a, b)) Y = np.append(X, X[-1] + int(days)) log.debug("X:%s Y:%s" % (X[-1], Y[-1])) # print ("X:%s" % (X[-1])) Y_hat = X * b + a # Y_hat_t = Y * b + a # log.info("Y_hat:%s " % (Y_hat)) # log.info("asset:%s " % (asset.values)) ratio = b / a * 100 operation = 0 if Y_hat[-1] > Y_hat[1]: log.debug("u-Y_hat[-1]:%0.1f" % (Y_hat[-1])) log.debug("price:%0.1f" % asset.iat[-1]) log.debug("u:%0.1f" % Y_hat[1]) log.debug("price:%0.1f" % asset.iat[1]) if type.upper() == "M": Y_Future = Y * b + a # ratio = b/a*100 log.info("ratio: %0.1f %0.1f Y_Mid: %0.1f" % (b, ratio, Y_Future[-1])) # diff = asset.iat[-1] - Y_hat[-1] # if diff > 0: # return True, len(asset), diff # else: # return False, len(asset), diff elif type.upper() == "L": i = (asset.values.T - Y_hat).argmin() c_low = X[i] * b + a - asset.values[i] # Y_hatlow = X * b + a - c_low Y_Future = Y * b + a - c_low log.info("b: %0.1f ratio:%0.1f Y_Mid: %0.1f" % (b, ratio, Y_Future[-1])) # diff = asset.iat[-1] - Y_hatlow[-1] # if asset.iat[-1] - Y_hatlow[-1] > 0: # return True, len(asset), diff # else: # return False, len(asset), diff elif type.upper() == "H": i = (asset.values.T - Y_hat).argmax() c_high = X[i] * b + a - asset.values[i] # Y_hathigh = X * b + a - c_high Y_Future = Y * b + a - c_high log.info("ratio: %0.1f %0.1f Y_Mid: %0.1f" % (b, ratio, Y_Future[-1])) diff = asset[-1] - Y_Future[-1] # print ("as:%s Y:%s"%(asset[-1] ,Y_Future[-1])) if diff > 0: operation += 1 log.info("UP !!%s Y_Future: %0.1f b:%0.1f ratio:%0.1f " % (type.upper(), Y_Future[-1], b, ratio)) else: log.info("Down %s Y_Future: %0.1f b:%0.1f ratio:%0.1f" % (type.upper(), Y_Future[-1], b, ratio)) return operation, ratio else: log.debug("down !!! d:%s" % Y_hat[1]) print ("down !!! d:%s" % Y_hat[1]) return 0, 0