| | |
| | | |
| | | def get_radical_buy_refer_volume_info(self, code, limit_up_price): |
| | | """ |
| | | TODO 更改正确 |
| | | 获取参考量信息 |
| | | 获取扫入的参考量: |
| | | 参考额小于3.14亿就取90天参考量 |
| | | 否则就取最近5天的参考量 |
| | |
| | | has_limit_up_in_60 = True |
| | | if k_format and not k_format[13]: |
| | | has_limit_up_in_60 = False |
| | | # (量, 日期) |
| | | volume_info = self.__max_volume_info_in_5days.get(code, None) |
| | | if volume_info and volume_info[0] * limit_up_price >= 9e8 and has_limit_up_in_60: |
| | | return volume_info |
| | | return int(self.get_reference_volume_as_money_y(code) * 1e8 / limit_up_price) |
| | | return self.get_reference_volume_info(code) |
| | | |
| | | def get_volume_rate_refer_in_5days(self, code, total_sell_volume=0): |
| | | """ |
| | |
| | | # 默认为5亿 |
| | | return 5 |
| | | |
| | | def get_reference_volume_info(self, code): |
| | | """ |
| | | 获取传统参考量信息 |
| | | @param code: |
| | | @return:(量,日期) |
| | | """ |
| | | if code in self.__reference_volume_as_money_y_dict: |
| | | return self.__reference_volume_as_money_y_dict.get(code) |
| | | max60 = global_util.max60_volumn.get(code) |
| | | return max60 |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | print(CodeVolumeManager().get_volume_rate("000059")) |
| | |
| | | from trade.order_statistic import DealAndDelegateWithBuyModeDataManager |
| | | from trade.trade_data_manager import RadicalBuyDealCodesManager |
| | | from utils import global_util, tool, data_export_util, init_data_util, huaxin_util |
| | | from code_attribute import gpcode_manager, code_nature_analyse |
| | | from code_attribute import gpcode_manager, code_nature_analyse, code_volumn_manager |
| | | from log_module import log_analyse, log_export, async_log_util |
| | | from l2 import code_price_manager, l2_data_util, transaction_progress |
| | | from cancel_strategy.s_l_h_cancel_strategy import HourCancelBigNumComputer, LCancelRateManager, \ |
| | |
| | | block_rank_info = max_info |
| | | except: |
| | | pass |
| | | data.append((block_rank_info, list(blocks) if blocks else [])) |
| | | # 板块信息:(板块身位, 最总板块, 开盘啦涨停原因, 开盘啦推荐原因) |
| | | history_limit_up_data = LimitUpDataConstant.get_history_limit_up_data(code) |
| | | data.append((block_rank_info, list(blocks) if blocks else [], |
| | | history_limit_up_data[2] if history_limit_up_data else '', |
| | | history_limit_up_data[6] if history_limit_up_data else '')) |
| | | |
| | | # 交易状态: |
| | | trade_state = trade_manager.CodesTradeStateManager().get_trade_state(code) |
| | | data.append(trade_state) |
| | | |
| | | # 参考量信息 |
| | | refer_volume_info = code_volumn_manager.CodeVolumeManager().get_radical_buy_refer_volume_info( |
| | | code, limit_up_price) |
| | | if refer_volume_info: |
| | | data.append(refer_volume_info[1]) |
| | | else: |
| | | data.append("--") |
| | | # L后撤单比例 |
| | | rate_info = LCancelRateManager.get_cancel_rate(code) |
| | | if rate_info: |
| | | data.append(rate_info[0]) |
| | | else: |
| | | data.append("--") |
| | | fdatas.append(data) |
| | | except Exception as e1: |
| | | logger_debug.exception(e1) |
| | |
| | | # 09:25之后才开始记录 |
| | | if datas and tool.get_now_time_str() > '09:25:00': |
| | | for d in datas: |
| | | MaxPriceInfoManager().set_price_info(d[0], price=d[1], time=d[9], sell1_info=(d[10], d[11])) |
| | | MaxPriceInfoManager().set_price_info(d[0], price=d[1], time_str=d[9], sell1_info=(d[10], d[11])) |
| | | except Exception as e: |
| | | logger_debug.exception(e) |
| | | |
| | |
| | | l2_transaction_data_processor.HuaXinTransactionDatasProcessor().process_huaxin_transaction_datas(code, d) |
| | | |
| | | def test_cancel(self): |
| | | code = "603300" |
| | | code = "002383" |
| | | l2.l2_data_util.load_l2_data(code) |
| | | TradeBuyQueue.get_traded_index = mock.Mock(return_value=(3742, False)) |
| | | l2.cancel_buy_strategy.RDCancelBigNumComputer._RDCancelBigNumComputer__watch_indexes_cache ={ code: {3686, 3691, 3693, 3694, 3699, 3700}} |
| | | l2.cancel_buy_strategy.RDCancelBigNumComputer().need_cancel(code, 4370, 4372) |
| | | TradeBuyQueue.get_traded_index = mock.Mock(return_value=(21836, False)) |
| | | l2.cancel_buy_strategy.RDCancelBigNumComputer._RDCancelBigNumComputer__watch_indexes_cache = { |
| | | code: {21851, 21844, 21854}} |
| | | l2.cancel_buy_strategy.RDCancelBigNumComputer().need_cancel(code, 22197, 22217) |
| | | |
| | | |
| | | class TestTradedProgress(unittest.TestCase): |
| | | @unittest.skip("跳过此单元测试") |
| | | def test_get_progress(self): |
| | | code = "000925" |
| | | code = "002383" |
| | | l2.l2_data_util.load_l2_data(code) |
| | | # l2.l2_data_util.local_today_datas[code] = l2.l2_data_util.local_today_datas[code][:898] |
| | | |
| | | TradeBuyQueue.get_traded_index = mock.Mock(return_value=(10, False)) |
| | | TradeBuyQueue.get_traded_index = mock.Mock(return_value=(21836, False)) |
| | | buy_progress_index = TradeBuyQueue().compute_traded_index(code, "9.76", |
| | | [9999, 1506], "09:32:45") |
| | | print("获取到交易进度:", buy_progress_index) |
| | |
| | | |
| | | from code_attribute import gpcode_manager |
| | | from l2.huaxin import l2_huaxin_util |
| | | from third_data import history_k_data_manager |
| | | from third_data.history_k_data_manager import HistoryKDataManager |
| | | from utils import tool |
| | | |
| | | |
| | |
| | | |
| | | |
| | | if __name__ == '__main__': |
| | | q = queue.Queue() |
| | | if not q.empty(): |
| | | data = q.get(block=False) |
| | | print(data) |
| | | def callback_function(res): |
| | | print("回调数据:", res) |
| | | |
| | | |
| | | def exec(call_back): |
| | | call_back({"code": 0}) |
| | | |
| | | |
| | | exec(callback_function) |
| | | |
| | | if __name__ == '__main__1': |
| | | # 加载每一天的代码的涨停价 |
| | |
| | | print(",".join(codes)) |
| | | |
| | | if __name__ == '__main__': |
| | | code = "002809" |
| | | code = "601138" |
| | | limit_up_price = 13.01 |
| | | volumes_data = init_data_util.get_volumns_by_code(code, 150) |
| | | volumes = init_data_util.parse_max_volume_new(code, volumes_data[:60]) |
| | |
| | | # print(item) |
| | | if item["SecurityID"] not in l2_data_manager_dict: |
| | | l2_data_manager_dict[item["SecurityID"]] = L2TransactionDataManager(item["SecurityID"], True) |
| | | l2_data_manager_dict[item["SecurityID"]].add_transaction_data(item) |
| | | l2_data_manager_dict[item["SecurityID"]].add_transaction_data(item, big_order_money_threshold=60e4) |
| | | for code in l2_data_manager_dict: |
| | | __L2TransactionDataManager: L2TransactionDataManager = l2_data_manager_dict.get(code) |
| | | if __L2TransactionDataManager.big_accurate_buy_order_queue.qsize() or __L2TransactionDataManager.big_accurate_sell_order_queue.qsize(): |
| | |
| | | return set() |
| | | return cls.__history_code_data_dict.keys() |
| | | |
| | | @classmethod |
| | | def get_history_limit_up_data(cls, code): |
| | | """ |
| | | 获取今日历史涨停数据 |
| | | @return: |
| | | """ |
| | | if not cls.__history_code_data_dict: |
| | | return None |
| | | return cls.__history_code_data_dict.get(code) |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | LimitUpCodesBlockRecordManager() |