| | |
| | | |
| | | |
| | | # m值大单处理 |
| | | m_big_money_begin_cache={} |
| | | class L2BigNumForMProcessor: |
| | | |
| | | def __init__(self): |
| | |
| | | |
| | | # 保存计算开始位置 |
| | | def set_begin_pos(self, code, index): |
| | | if self.__get_begin_pos(code) is None: |
| | | if self.__get_begin_pos_cache(code) is None: |
| | | tool.CodeDataCacheUtil.set_cache(m_big_money_begin_cache, code, index) |
| | | # 保存位置 |
| | | key = "m_big_money_begin-{}".format(code) |
| | | RedisUtils.setex(self.__get_redis(), key, tool.get_expire(), index) |
| | |
| | | if val is None: |
| | | return None |
| | | return int(val) |
| | | |
| | | def __get_begin_pos_cache(self, code): |
| | | cache_result = tool.CodeDataCacheUtil.get_cache(m_big_money_begin_cache,code) |
| | | if cache_result[0]: |
| | | return cache_result[1] |
| | | val = self.__get_begin_pos(code) |
| | | tool.CodeDataCacheUtil.set_cache(m_big_money_begin_cache,code,val) |
| | | return val |
| | | |
| | | |
| | | # 清除已经处理的数据 |
| | | def clear_processed_end_index(self, code): |
| | |
| | | # 处理大单 |
| | | def process(self, code, start_index, end_index, limit_up_price): |
| | | |
| | | begin_pos = self.__get_begin_pos(code) |
| | | begin_pos = self.__get_begin_pos_cache(code) |
| | | if begin_pos is None: |
| | | # 没有获取到开始买入信号 |
| | | return |
| | |
| | | # 时间差不能太大才能处理 |
| | | if not l2_trade_util.is_in_forbidden_trade_codes(code): |
| | | # 判断是否已经挂单 |
| | | state = trade_manager.get_trade_state(code) |
| | | state = trade_manager.get_trade_state_cache(code) |
| | | start_index = len(total_datas) - len(add_datas) |
| | | end_index = len(total_datas) - 1 |
| | | if state == trade_manager.TRADE_STATE_BUY_DELEGATED or state == trade_manager.TRADE_STATE_BUY_PLACE_ORDER or state == trade_manager.TRADE_STATE_BUY_SUCCESS: |