class TradingLoader(object): def __init__(self): self.client = Mongodb() self.db = self.client.conn() self.logger = log_setting('trading_loader') def load_trading_data(self): collection = self.db.trading_data data = ts.get_today_all() result = data.to_json(orient='records') result = json.loads(result) real_time = datetime.now(pytz.timezone('Asia/Shanghai')) try: for row in result: row['date'] = real_time old_record = collection.find_one({'code': row['code']}) if old_record: collection.update_one({'code': row['code']}, {'$set': row}) else: row_id = collection.insert_one(row).inserted_id self.logger.info( 'trading data at {} has been successfully updated'.format( real_time)) except Exception, e: self.logger.error(e)
class BigDeal(object): def __init__(self): self.client = Mongodb() self.db = self.client.conn() self.logger = log_setting('deal_loader') def big_deal_loader(self, code, vol=400): today = date.today() today_str = datetime.strftime(today, '%Y-%m-%d') try: df = ts.get_sina_dd(code, date=today_str, vol=vol) assert df is not None result_set = df.to_json(orient='records') result_set = json.loads(result_set) for record in result_set: volume = record['volume'] price = record['price'] amount = volume * price if amount < 300000: continue deal_time = record.pop('time') time_str = '{} {}'.format(today_str, deal_time) date_time = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S') record['date'] = date_time self.db.deal_record.insert(record) self.logger.info('{} has been inserted successfully at {}'.format( code, today_str)) except Exception, e: self.logger.error( '{} has failed to insert beacuse of {} at {}'.format( code, e, today_str))
class WeekLoader(object): def __init__(self): self.client = Mongodb() self.db = self.client.conn() self.logger = log_setting('week_data') def insert_history_data(self, data, code): result_set = data.to_json(orient='records') result_set = json.loads(result_set) try: for row_record in result_set: row_record['date'] = datetime.strptime(row_record['date'], '%Y-%m-%d') old_record = self.db.week_data.find_one({ 'code': code, 'date': row_record['date'] }) if old_record: continue ss = self.db.week_data.insert_one(row_record).inserted_id except Exception, e: self.logger.error('{} has failed to inserted for {} at {}'.format( code, e, date.today())) else:
async def fetch_price_cb(coin, direction): client = AsyncHTTPClient() url = "https://www.cola-otc.com/v1/advertisement/list" ua = "CoinCola/2.4.1 (iPhone9,1; iOS 11.0.3) UUID/F410574E-D8B8-4FF4-A55F-ACA52C0D29A4" headers = { 'Host': 'www.cola-otc.com', 'Accept': '*/*', 'User-Agent': 'CoinCola/2.4.1 (iPhone9,1; iOS 11.0.3) UUID/F410574E-D8B8-4FF4-A55F-ACA52C0D29A4', 'Accept-Language': 'zh', 'Authorization': 'Bearer', } data = { 'country_code': 'CN', 'crypto_currency': coin.upper(), 'limit': 100, 'offset': 0, 'sort_order': 'GENERAL', 'type': direction.upper(), } body = urlencode(data) request = HTTPRequest(url, method="POST", body=body, headers=headers, user_agent=ua) response = await client.fetch(request, raise_error=False) if response.error: logger.error(response.error) return False else: j = json.loads(response.body) r = Mongodb().insert_quotation(coin, j, with_time=True) logger.info(r) return True
class AverageStrategy(object): def __init__(self): self.client = Mongodb() self.db = self.client.conn() self.logger = log_setting('average_strategy') @staticmethod def analyze_week_close(data): result = {'success': False, 'message': None, 'flag': False} try: row, column = data.shape ma5_now = data['ma5'].ix[row - 1] ma10_now = data["ma10"].ix[row - 1] ma5_last = data['ma5'].ix[row - 2] ma10_last = data["ma10"].ix[row - 2] if ma5_now >= ma10_now and ma5_last <= ma10_last: result['flag'] = True else: result['flag'] = False result['success'] = True except Exception, e: result['message'] = e return result
def initialize(self): self.__setattr__("mongo", Mongodb())
def __init__(self): self.client = Mongodb() self.db = self.client.conn() self.logger = log_setting('average_strategy')
def __init__(self): self.client = Mongodb() self.db = self.client.conn() self.logger = log_setting('trading_loader')
def __init__(self): self.client = Mongodb() self.db = self.client.conn() self.logger = log_setting('week_data')