Administrator
2024-07-10 d475991a9d0abc94edfb3a5d9761df8bed8b4fc4
main.py
@@ -9,6 +9,7 @@
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
@@ -16,9 +17,10 @@
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
@@ -215,7 +217,7 @@
                        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)
@@ -270,6 +272,41 @@
                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():
@@ -302,12 +339,15 @@
                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)
@@ -325,6 +365,8 @@
                            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()