Esempio n. 1
0
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)
Esempio n. 2
0
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))
Esempio n. 3
0
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:
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
 def initialize(self):
     self.__setattr__("mongo", Mongodb())
Esempio n. 7
0
 def __init__(self):
     self.client = Mongodb()
     self.db = self.client.conn()
     self.logger = log_setting('average_strategy')
Esempio n. 8
0
 def __init__(self):
     self.client = Mongodb()
     self.db = self.client.conn()
     self.logger = log_setting('trading_loader')
Esempio n. 9
0
 def __init__(self):
     self.client = Mongodb()
     self.db = self.client.conn()
     self.logger = log_setting('week_data')