Exemple #1
0
 def is_dirty(self):
     #return True
     key = 'dirty'
     key = self._genKey(key)
     o = myredis.get_obj(key)
     if agl.IsNone(o):
         self.setDirty(True)
         return True
     return o
Exemple #2
0
 def HistoryWeiTuo(self):
     key = 'HistoryChengJiao'
     key = self._genKey(key)
     if self.is_dirty():
         df = TcAccount.HistoryWeiTuo(self)
         myredis.set_obj(key, df)
     else:
         return myredis.get_obj(key)
     return df
Exemple #3
0
 def _getUserStrategy(self, downloadStrategyInterval=60):
     """按固定的时间间隔下载用户代码
     downloadStrategyInterval: int default=60 秒
     return: df"""
     k = "SignForWebUser_preLoadTime"
     preLoadTime = myredis.get_obj(k)
     if preLoadTime is None:
         preLoadTime = datetime.datetime(2015, 10, 19, 15, 33, 47, 53000)	#上一次下载的时间
     #判断时间
     if (agl.curTime() - preLoadTime).total_seconds() > downloadStrategyInterval:
         url = "http://stocksign.sinaapp.com/query?cmd=query_strategy"
         result = Http().get(url)
         df_source = pd.read_json(result)
         df_source.columns = ['id', 'user_id', 'title', 'code']
         preLoadTime = agl.curTime()
         myredis.set_obj(k, preLoadTime)
         myredis.set_obj('mysource', df_source)
     else:
         df_source = myredis.get_obj('mysource')
         if df_source is None:
             df_source = pd.DataFrame([])
     return df_source	
Exemple #4
0
def PostTask(fn, t, reset=False):
    """每隔t秒执行一次fn
    主要是防止交易接口被短期内多次调用, 造成系统异常
    """
    key = 'posttask_'+fn.func_name
    cur_t = agl.curTime()
    if reset:
	myredis.delkey(key)
    pre_t = myredis.get_obj(key)
    if pre_t == None:
	pre_t = cur_t - datetime.timedelta(seconds=t+1)
    
    if cur_t - pre_t > datetime.timedelta(seconds=t):
	fn()
	myredis.set_obj(key, cur_t)
Exemple #5
0
def get_zhijing_from_redis(is_have_return=False):
    """获取资金列表"""
    key_df_stocklist = 'df_zhijing'
    if 0: df = pd.DataFrame()
    df = myredis.get_obj(key_df_stocklist)
    if is_have_return:
        return df
    if df is not None and len(df) > 0:
        from prettytable import PrettyTable
        cols = '余额|可用|参考市值|资产'
        cols = cols.split('|')
        table = PrettyTable(cols)
        for i, row in df.iterrows():
            table.add_row(row[cols].tolist())
        print table
Exemple #6
0
 def Reduce(self):
     """合并结果, 返回各任务的df
     return: list, 有几个Map list里就有几个元素"""
     df = self.pd_task
     #按task_id来排序
     max_id = np.max(df[0])
     result = []
     for task_id in range(max_id + 1):
         df_result = pd.DataFrame([])
         for i in df[df[0] == task_id].index:
             r = myredis.get_obj(getResultName(i))
             assert (isinstance(r, pd.DataFrame))
             df_result = pd.concat([df_result, r])
         result.append(df_result)
     return result
Exemple #7
0
def get_stocklist_from_redis(is_have_return=False):
    """临时函数, 因为策略basesign保存了列表, 因此可以直接取"""
    key_df_stocklist = 'df_stocklist'
    if 0: df = pd.DataFrame()
    df = myredis.get_obj(key_df_stocklist)
    if is_have_return:
        return df
    if df is not None:
        from prettytable import PrettyTable
        cols = '证券代码|证券名称|证券数量|库存数量|可卖数量|参考成本价|买入均价|参考盈亏成本价|当前价|最新市值|参考浮动盈亏|盈亏比例(%)'
        cols = cols.split('|')
        table = PrettyTable(cols)
        for i, row in df.iterrows():
            table.add_row(row[cols].tolist())
        #table.sort_key("ferocity")
        #table.reversesort = True
        print table
Exemple #8
0
def main(args):
    os.chdir(getMainDir())
    i = int(args[0])
    #print 'arg=',i
    pd_task = myredis.get_obj('multi')
    if 0: pd_task = pd.DataFrame
    #print pd_task.iloc[i]
    v = tuple(pd_task.iloc[i].tolist()[1:])  #去掉task_id
    #print v
    v += (i, )  #加上task_id
    s = 'import %s\n' % (v[0])
    #module.fn
    s += 'r = %s.%s(%s, %d)' % v
    #print s
    exec s
    #print 'result=',r
    #保存结果
    myredis.set_obj(MultiSubProcess.getResultName(i), r)
Exemple #9
0
    def WeiTuoList(self):
        """历史成交加当日委托
	主要用状态说明这个字段来判断, 通过枚举值来判断委托状态
	操作日期|委托时间|股东代码|深0沪1|证券代码|证券名称|买0卖1|买卖标志|委托价格|委托数量|委托编号|成交数量|成交金额|撤单数量|状态说明|撤单标志|委托日期|备注|
	return : df"""
        key = 'WeiTuoList'
        key = self._genKey(key)
        if self.is_dirty():
            df = self.HistoryWeiTuo()
            df2 = TcAccount.WeiTuoList(self)
            df = pd.concat([df2, df])
            #对报单时间排序
            df.index = pd.DatetimeIndex(df['操作日期'] + ' ' + df['委托时间'])
            df = df.sort()
            myredis.set_obj(key, df)
            self.setDirty(False)
            return df
        else:
            return myredis.get_obj(key)
Exemple #10
0
def get_chengjiao_from_redis(is_have_return=False):
    """输出为成交的委托列表"""
    key = 'df_chengjiao'
    if 0: df = pd.DataFrame()
    df = myredis.get_obj(key)
    if is_have_return:
        return df
    if df is not None:
        from prettytable import PrettyTable
        cols = '成交时间|证券代码|证券名称|买卖标志|委托价格|委托数量|委托编号|成交价格|成交数量|成交金额|成交编号'
        cols = cols.split('|')
        df['成交金额'] = df['成交金额'].astype(float)
        df = df[df['成交金额'] > 0]
        table = PrettyTable(cols)
        for i, row in df.iterrows():
            table.add_row(row[cols].tolist())
        #table.sort_key("ferocity")
        #table.reversesort = True
        print table
Exemple #11
0
def get_weituo_from_redis(is_have_return=False):
    """输出为成交的委托列表"""
    key = 'df_weituo'
    if 0: df = pd.DataFrame()
    df = myredis.get_obj(key)
    if is_have_return:
        return df
    if df is not None and len(df) > 0:
        from prettytable import PrettyTable
        cols = '证券代码|证券名称|买卖标志|委托价格|委托数量|委托编号|成交数量|成交金额|撤单数量|状态说明'
        cols = cols.split('|')
        df = df[df['状态说明'] != '已成']
        df = df[df['状态说明'] != '已撤']
        df = df[df['买卖标志'] != '配售申购']
        table = PrettyTable(cols)
        for i, row in df.iterrows():
            table.add_row(row[cols].tolist())
        #table.sort_key("ferocity")
        #table.reversesort = True
        print table