| | |
| | | CodeDataCacheUtil.set_cache(cls.__s_big_num_cancel_compute_data_cache, code, |
| | | (process_index, buy_num, cancel_num)) |
| | | key = "s_big_num_cancel_compute_data-{}".format(code) |
| | | RedisUtils.setex( cls.__get_redis(),key, tool.get_expire(), json.dumps((process_index, buy_num, cancel_num))) |
| | | RedisUtils.setex(cls.__get_redis(), key, tool.get_expire(), json.dumps((process_index, buy_num, cancel_num))) |
| | | |
| | | @classmethod |
| | | def __get_compute_data(cls, code): |
| | |
| | | for key in ks: |
| | | keys = RedisUtils.keys(cls.__get_redis(), key) |
| | | for k in keys: |
| | | code = k.replace("s_big_num_cancel_compute_data-","") |
| | | code = k.replace("s_big_num_cancel_compute_data-", "") |
| | | cls.__clear_data(code) |
| | | |
| | | # 计算净大单 |
| | |
| | | def __save_watch_index_set(cls, code, datas, process_index, finish): |
| | | CodeDataCacheUtil.set_cache(cls.__cancel_watch_indexs_cache, code, (list(datas), process_index, finish)) |
| | | key = f"h_cancel_watch_indexs-{code}" |
| | | RedisUtils.setex(cls.__get_redis(),key, tool.get_expire(), json.dumps((list(datas), process_index, finish))) |
| | | RedisUtils.setex(cls.__get_redis(), key, tool.get_expire(), json.dumps((list(datas), process_index, finish))) |
| | | |
| | | # 保存成交进度 |
| | | @classmethod |
| | |
| | | CodeDataCacheUtil.set_cache(cls.__cancel_watch_indexs_exec_cache, code, |
| | | (list(datas), process_index, total_count, big_num_count, finished)) |
| | | key = f"h_cancel_watch_indexs_exec-{code}" |
| | | RedisUtils.setex( cls.__get_redis(),key, tool.get_expire(), |
| | | json.dumps((list(datas), process_index, total_count, big_num_count, finished))) |
| | | RedisUtils.setex(cls.__get_redis(), key, tool.get_expire(), |
| | | json.dumps((list(datas), process_index, total_count, big_num_count, finished))) |
| | | |
| | | # 保存成交进度 |
| | | @classmethod |
| | |
| | | |
| | | # 保存已经撤单的监听位置 |
| | | @classmethod |
| | | def __add_watch_canceled_index(cls, code, index): |
| | | def __add_watch_canceled_index(cls, redis, code, index): |
| | | CodeDataCacheUtil.clear_cache(cls.__cancel_watch_canceled_indexs_cache, code) |
| | | key = f"h_cancel_watch_canceled_indexs-{code}" |
| | | RedisUtils.sadd(cls.__get_redis(), key, index) |
| | | RedisUtils.expire(cls.__get_redis(), key, tool.get_expire()) |
| | | RedisUtils.sadd(redis, key, index) |
| | | RedisUtils.expire(redis, key, tool.get_expire()) |
| | | |
| | | @classmethod |
| | | def __get_watch_canceled_index(cls, code): |
| | |
| | | def __del_watch_canceled_index(cls, code): |
| | | CodeDataCacheUtil.clear_cache(cls.__cancel_watch_canceled_indexs_cache, code) |
| | | key = f"h_cancel_watch_canceled_indexs-{code}" |
| | | RedisUtils.delete( cls.__get_redis(), key) |
| | | RedisUtils.delete(cls.__get_redis(), key) |
| | | |
| | | # 保存成交进度 |
| | | @classmethod |
| | |
| | | CodeDataCacheUtil.set_cache(cls.__cancel_traded_progress_cache, code, |
| | | (origin_process_index, latest_process_index)) |
| | | key = "h_cancel_traded_progress-{}".format(code) |
| | | RedisUtils.setex(cls.__get_redis(),key, tool.get_expire(), json.dumps((origin_process_index, latest_process_index))) |
| | | RedisUtils.setex(cls.__get_redis(), key, tool.get_expire(), |
| | | json.dumps((origin_process_index, latest_process_index))) |
| | | |
| | | @classmethod |
| | | def __get_traded_progress(cls, code): |
| | |
| | | CodeDataCacheUtil.set_cache(cls.__cancel_compute_data_cache, code, |
| | | (process_index, cancel_num)) |
| | | key = "h_cancel_compute_data-{}".format(code) |
| | | RedisUtils.setex(cls.__get_redis(),key, tool.get_expire(), json.dumps((process_index, cancel_num))) |
| | | RedisUtils.setex(cls.__get_redis(), key, tool.get_expire(), json.dumps((process_index, cancel_num))) |
| | | |
| | | @classmethod |
| | | def __get_compute_data(cls, code): |
| | |
| | | cancel_num += total_data[nx]["re"] * num |
| | | |
| | | try: |
| | | pipe = cls.__get_redis().pipeline() |
| | | for i in range(start_index, end_index + 1): |
| | | if i <= processed_index: |
| | | # 已经处理过了 |
| | |
| | | has_watch_canceled = True |
| | | cancel_num += data["re"] * val["num"] |
| | | # 加入 |
| | | cls.__add_watch_canceled_index(code, f"{buy_index}-{val['num']}") |
| | | cls.__add_watch_canceled_index(pipe, code, f"{buy_index}-{val['num']}") |
| | | rate__ = round(cancel_num / total_nums, 4) |
| | | if rate__ > cancel_rate_threshold: |
| | | indexs__ = list(watch_indexs_dict.keys()) |
| | |
| | | len(watch_indexs_dict.keys())) |
| | | l2_log.trade_record(code, "H撤", "'index':{} , 'rate':{} ,'target_rate':{}", i, rate__, |
| | | cancel_rate_threshold) |
| | | pipe.execute() |
| | | return True, data |
| | | pipe.execute() |
| | | |
| | | rate__ = round(cancel_num / total_nums, 4) |
| | | if rate__ > cancel_rate_threshold: |
| | |
| | | @classmethod |
| | | def __set_real_order_index(cls, code, index): |
| | | CodeDataCacheUtil.set_cache(cls.__cancel_real_order_index_cache, code, index) |
| | | RedisUtils.setex(cls.__get_redis(),f"d_cancel_real_order_index-{code}", tool.get_expire(), f"{index}") |
| | | RedisUtils.setex(cls.__get_redis(), f"d_cancel_real_order_index-{code}", tool.get_expire(), f"{index}") |
| | | |
| | | @classmethod |
| | | def __get_real_order_index(cls, code): |
| | |
| | | @classmethod |
| | | def clear(cls, code=None): |
| | | if code: |
| | | RedisUtils.delete( cls.__get_redis(), f"d_cancel_real_order_index-{code}") |
| | | RedisUtils.delete(cls.__get_redis(), f"d_cancel_real_order_index-{code}") |
| | | else: |
| | | keys = RedisUtils.keys(cls.__get_redis(), "d_cancel_real_order_index-*") |
| | | if keys: |
| | |
| | | return cls.__redis_manager.getRedis() |
| | | |
| | | @classmethod |
| | | def __add_watch_index(cls, code, index): |
| | | def __add_watch_index(cls, redis, code, index): |
| | | CodeDataCacheUtil.clear_cache(cls.__cancel_watch_index_cache, code) |
| | | RedisUtils.sadd(cls.__get_redis(), f"l_cancel_watch_index-{code}", index) |
| | | RedisUtils.expire(cls.__get_redis(), f"l_cancel_watch_index-{code}", tool.get_expire()) |
| | | RedisUtils.sadd(redis, f"l_cancel_watch_index-{code}", index) |
| | | RedisUtils.expire(redis, f"l_cancel_watch_index-{code}", tool.get_expire()) |
| | | |
| | | @classmethod |
| | | def __del_watch_index(cls, code, index): |
| | | def __del_watch_index(cls, pipe, code, index): |
| | | CodeDataCacheUtil.clear_cache(cls.__cancel_watch_index_cache, code) |
| | | RedisUtils.srem(cls.__get_redis(), f"l_cancel_watch_index-{code}", index) |
| | | RedisUtils.srem(pipe, f"l_cancel_watch_index-{code}", index) |
| | | |
| | | @classmethod |
| | | def __get_watch_indexes(cls, code): |
| | |
| | | # 数据维护 |
| | | add_indexes = watch_indexes - old_watch_indexes |
| | | delete_indexes = old_watch_indexes - watch_indexes |
| | | pipe = cls.__get_redis().pipeline() |
| | | for i in add_indexes: |
| | | cls.__add_watch_index(code, i) |
| | | cls.__add_watch_index(pipe, code, i) |
| | | for i in delete_indexes: |
| | | cls.__del_watch_index(code, i) |
| | | cls.__del_watch_index(pipe, code, i) |
| | | if add_indexes or delete_indexes: |
| | | pipe.execute() |
| | | |
| | | @classmethod |
| | | def need_cancel(cls, code, buy_exec_index, start_index, end_index, total_data, local_today_num_operate_map, |
| | |
| | | |
| | | key = "l2_limit_up_second_money-{}-{}".format(code, time.replace(":", "")) |
| | | |
| | | RedisUtils.setex(cls.__get_redis(),key, tool.get_expire(), json.dumps((old_num, old_from, old_to))) |
| | | RedisUtils.setex(cls.__get_redis(), key, tool.get_expire(), json.dumps((old_num, old_from, old_to))) |
| | | |
| | | @classmethod |
| | | def __get_l2_second_money_record(cls, code, time): |
| | |
| | | @classmethod |
| | | def __set_l2_latest_money_record(cls, code, index, num): |
| | | key = "l2_limit_up_money-{}".format(code) |
| | | RedisUtils.setex(cls.__get_redis(),key, tool.get_expire(), json.dumps((num, index))) |
| | | RedisUtils.setex(cls.__get_redis(), key, tool.get_expire(), json.dumps((num, index))) |
| | | |
| | | # 返回数量,索引 |
| | | @classmethod |
| | |
| | | @classmethod |
| | | def __incre_sell_data(cls, code, num): |
| | | key = "limit_up_sell_num-{}".format(code) |
| | | RedisUtils.incrby( cls.__get_redis(),key, num) |
| | | RedisUtils.incrby(cls.__get_redis(), key, num) |
| | | |
| | | @classmethod |
| | | def __get_sell_data(cls, code): |
| | |
| | | @classmethod |
| | | def __save_process_index(cls, code, index): |
| | | key = "limit_up_sell_index-{}".format(code) |
| | | RedisUtils.setex( cls.__get_redis(),key, tool.get_expire(), index) |
| | | RedisUtils.setex(cls.__get_redis(), key, tool.get_expire(), index) |
| | | |
| | | @classmethod |
| | | def __get_process_index(cls, code): |
| | |
| | | @classmethod |
| | | def delete(cls, code): |
| | | key = "limit_up_sell_num-{}".format(code) |
| | | RedisUtils.delete( cls.__get_redis(), key) |
| | | RedisUtils.delete(cls.__get_redis(), key) |
| | | key = "limit_up_sell_index-{}".format(code) |
| | | RedisUtils.delete( cls.__get_redis(), key) |
| | | RedisUtils.delete(cls.__get_redis(), key) |
| | | |
| | | @classmethod |
| | | def clear(cls): |