예제 #1
0
def filter_current_klines(_klines, _collection_name, _collection):
    _last_record = get_last_db_record(_collection)
    logger.info(
        "{} : last kline : {} ".format(_collection_name, _last_record['kline']['time_str'] if _last_record else "None"))
    _out = None
    if _last_record:
        _out = list(filter(lambda x: int(x.start_time) > int(_last_record['timestamp']), _klines))
    else:
        _out = _klines
        logger.info("{} : first kline : {} ".format(_collection_name, _out[0].time_str if _out else "None"))
    return _out
예제 #2
0
decimal_codec = DecimalCodec()
type_registry = TypeRegistry([decimal_codec])
codec_options = CodecOptions(type_registry=type_registry)

tickers = ["15m", "30m", "1h", "4h", "8h", "12h", "1d"]

while 1:
    outdated = []

    for raw_name in flatten(read_collections_file()):
        collection_root_name, exchange = extract_collection_name(raw_name)
        for ticker in tickers:
            collection_name = f"{collection_root_name}{ticker}"
            collection = db.get_collection(collection_name,
                                           codec_options=codec_options)
            record = get_last_db_record(collection)
            _current_time = datetime.datetime.now().timestamp() * 1000
            _time_gap = 12 * 60 * 60 * 1000
            if ticker == "1d" or ticker == "12h":
                _time_gap = 3 * 12 * 60 * 60 * 1000
            if ticker == "8h":
                _time_gap = 24 * 60 * 60 * 1000
            if ticker == "15m" or ticker == "30m":
                _time_gap = 8 * 60 * 60 * 1000

            if exchange == "binance":
                if _current_time - record['timestamp'] > _time_gap:
                    outdated.append(collection_name)
            elif exchange == "kucoin":
                _time_gap /= 1000
                _current_time /= 1000