def position(): nav = 'position' today = (datetime.utcnow() + timedelta(hours=8)).strftime('%Y-%m-%d') user = current_user._id num_collections = Position.num_collections(user) average_increase = Position.average_increase(user) market_value = Position.market_value(user) realized_profit = Position.realized_profit(user) unrealized_profit = Position.unrealized_profit(user) annual_profit = Position.annual_profit(user) position = Position.user_position(user) # charts pfs = ProfitLog.profits(user) pldates = [pf['date'].strftime('%Y-%m-%d') for pf in pfs] plvalues = [int(pf['profit']) for pf in pfs] exchanges = [{'value': n, 'text': n} for n in sorted(ABBRS)] total_transactions = Transaction.user_total_transactions(user) transactions = Transaction.user_recent_transactions( user) for t in transactions: t.typecn = '买入' if t.type_ == 'buy' else '卖出' return render_template('user/position.html', **locals())
def do_cron(parser, args): setup_config(args) lockfile = '/tmp/ybk.cron.lock' path = pathlib.Path(lockfile) class doing(object): def __enter__(self): path.open('w').write('') def __exit__(self, type, value, traceback): if value: crawl_log.exception('出错啦') path.unlink() return True if not path.exists(): with doing(): crawl_all() now = datetime.utcnow() + timedelta(hours=8) with doing(): if 9 <= now.hour <= 20: realtime_all() with doing(): if now.hour == 6 and now.minute < 5: history_all() with doing(): if 9 <= now.hour <= 20: # 生成所有人的历史收益记录 ProfitLog.ensure_all_profits() # 更新所有交易账号的状态 if now.hour == 22 and 30 <= now.minute <= 35: trade_account_all() else: crawl_log.info('已有cron在跑, 直接退出')