| | |
| | | import time |
| | | |
| | | from code_attribute import target_codes_manager, gpcode_manager, code_market_manager, history_k_data_util |
| | | from code_attribute.gpcode_manager import CodesNameManager |
| | | from db.redis_manager_delegate import RedisUtils |
| | | from huaxin_client import l2_client_for_cb |
| | | from huaxin_client.client_network import SendResponseSkManager |
| | |
| | | from records import huaxin_trade_record_manager |
| | | from third_data import kpl_data_manager, kpl_util |
| | | from third_data.kpl_data_manager import PullTask, KPLCodeJXBlockManager, KPLLimitUpDataRecordManager |
| | | from trade import huaxin_trade_api, huaxin_trade_data_update, huaxin_sell_util, backtest_trade |
| | | from trade import huaxin_trade_api, huaxin_trade_data_update, huaxin_sell_util, backtest_trade, buy_strategy |
| | | from trade.buy_strategy import BuyStrategyDataManager |
| | | from trade.trade_manager import CodeTradeStateManager |
| | | from trade.trade_settings import WantBuyCodesManager, TradeStateManager |
| | | from utils import middle_api_protocol, outside_api_command_manager, constant, tool, huaxin_util, socket_util, sell_util, \ |
| | | output_util, l2_huaxin_util, output_data_util |
| | | |
| | |
| | | volume = sum([x["volume"] for x in temp_dict[k]]) |
| | | x = temp_dict[k][0] |
| | | r["buy_list"].append({"price": str(x["price"]), "tradeTime": x["tradeTime"], "volume": volume}) |
| | | r["createTime"] = int(buys[-1]["tradeTime"].replace(":", "")) |
| | | r["createTime"] = int(buys[0]["tradeTime"].replace(":", "")) |
| | | |
| | | if "sell_list" not in r: |
| | | sells = huaxin_trade_record_manager.DealRecordManager().list_sell_by_code_cache(cb_code) |
| | |
| | | send_response({"code": 0, "data": {}}, client_id, request_id) |
| | | except Exception as e: |
| | | send_response({"code": 0, "data": {}, "msg": str(e)}, client_id, request_id) |
| | | elif ctype == "want_buy_codes": |
| | | try: |
| | | operate = data["operate"] |
| | | if operate == outside_api_command_manager.OPERRATE_ADD: |
| | | code = data["code"] |
| | | WantBuyCodesManager().add_code(code, buy_strategy.STRATEGY_TYPE_LIMIT_UP) |
| | | WantBuyCodesManager().add_code(code, buy_strategy.STRATEGY_TYPE_RISE_HIGH_WITH_BLOCKS) |
| | | send_response({"code": 0, "data": {}}, client_id, request_id) |
| | | elif operate == outside_api_command_manager.OPERRATE_GET: |
| | | code_infos = WantBuyCodesManager().list_code() |
| | | codes = set([x.split("-")[0] for x in code_infos]) |
| | | code_infos = [(x, CodesNameManager.get_code_name(x)) for x in codes] |
| | | send_response({"code": 0, "data": code_infos}, client_id, request_id) |
| | | elif operate == outside_api_command_manager.OPERRATE_DELETE: |
| | | code = data["code"] |
| | | WantBuyCodesManager().remove_code(code, buy_strategy.STRATEGY_TYPE_LIMIT_UP) |
| | | WantBuyCodesManager().remove_code(code, buy_strategy.STRATEGY_TYPE_RISE_HIGH_WITH_BLOCKS) |
| | | send_response({"code": 0, "data": {}}, client_id, request_id) |
| | | except Exception as e: |
| | | send_response({"code": 1, "msg": str(e)}, client_id, request_id) |
| | | elif ctype == "trade_state": |
| | | try: |
| | | operate = data["operate"] |
| | | if operate == outside_api_command_manager.OPERRATE_SET: |
| | | state = data["state"] |
| | | if state > 0: |
| | | TradeStateManager().open_buy() |
| | | else: |
| | | TradeStateManager().close_buy() |
| | | send_response({"code": 0, "data": {}}, client_id, request_id) |
| | | elif operate == outside_api_command_manager.OPERRATE_GET: |
| | | state = 1 if TradeStateManager().is_can_buy() else 0 |
| | | send_response({"code": 0, "data": {"state": state}}, client_id, request_id) |
| | | except Exception as e: |
| | | send_response({"code": 1, "msg": str(e)}, client_id, request_id) |
| | | |
| | | |
| | | def test(): |
| | |
| | | buy_infos = result[3] |
| | | for buy_info in buy_infos: |
| | | if buy_info[0]: |
| | | if not TradeStateManager().is_can_buy(): |
| | | continue |
| | | # 策略类型 |
| | | strategy_type = buy_info[1] |
| | | # 获取股票代码的可转债代码 |
| | | cb_code = target_codes_manager.get_cb_code(code) |
| | | if CodeTradeStateManager().get_trade_state(cb_code, |
| | | strategy_type) == CodeTradeStateManager.TRADE_STATE_ALREADY_BUY: |
| | | strategy_type) == CodeTradeStateManager.TRADE_STATE_ALREADY_BUY and not WantBuyCodesManager().is_in_cache(cb_code, strategy_type): |
| | | # 已经买了且没在想买单 |
| | | continue |
| | | # 获取可转债的涨停价 |
| | | market_info = code_market_manager.get_market_info(cb_code) |
| | |
| | | result = huaxin_trade_api.order(1, cb_code, volume, buy_price, blocking=True) |
| | | CodeTradeStateManager().set_trade_state(cb_code, strategy_type, |
| | | CodeTradeStateManager.TRADE_STATE_ALREADY_BUY) |
| | | # 移除想买单 |
| | | WantBuyCodesManager().remove_code(cb_code, strategy_type) |
| | | async_log_util.info(logger_trade, f"可转债下单结果:{result}") |
| | | huaxin_trade_data_update.add_position_list() |
| | | huaxin_trade_data_update.add_money_list() |