Administrator
2024-07-11 e70bdf6ab8e20c122cd5eb9e5fd6e384ab903b8d
买点的策略类型区分
4个文件已修改
77 ■■■■ 已修改文件
log_module/log_export.py 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.py 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
records/huaxin_trade_record_manager.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_strategy.py 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
log_module/log_export.py
@@ -143,7 +143,7 @@
def load_kpl_blocks(date=tool.get_now_date_str()):
    fdatas = {}
    path = f"{constant.LOG_DIR}/gp/kpl/kpl_blocks.{date}.log"
    path = f"{constant.get_path_prefix()}/{constant.LOG_DIR}/gp/kpl/kpl_blocks.{date}.log"
    with open(path, 'r', encoding='utf-8') as file:
        lines = file.readlines()
        for line in lines:
@@ -156,8 +156,26 @@
    return fdatas
def load_order_ref_strategy(date=tool.get_now_date_str()):
    """
    加载下单的order_ref对应的策略
    :param date:
    :return:
    """
    fdatas = {}
    path = f"{constant.get_path_prefix()}/{constant.LOG_DIR}/gp/trade/trade.{date}.log"
    with open(path, 'r', encoding='utf-8') as file:
        lines = file.readlines()
        for line in lines:
            if line.find("可转载策略下单结果") > -1:
                line = line.split("可转载策略下单结果:")[1]
                data = eval(line)
                fdatas[data[0]] = data[1]
    return fdatas
if __name__ == "__main__":
    fdatas = load_big_buy_order()
    fdatas = load_order_ref_strategy()
    print(fdatas)
    pass
main.py
@@ -18,7 +18,7 @@
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, buy_strategy
from trade.buy_strategy import BuyStrategyDataManager
from trade.buy_strategy import BuyStrategyDataManager, StrategyBuyOrderRefManager
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, \
@@ -216,7 +216,7 @@
                    for k in temp_dict:
                        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["buy_list"].append({"price": str(x["price"]), "tradeTime": x["tradeTime"], "volume": volume, "type":StrategyBuyOrderRefManager().get_strategy_type(x["orderRef"])})
                    r["createTime"] = int(buys[0]["tradeTime"].replace(":", ""))
                if "sell_list" not in r:
@@ -328,11 +328,12 @@
    else:
        money = 10000
    if strategy_type == buy_strategy.STRATEGY_TYPE_RISE_HIGH_WITH_BLOCKS:
        return int(money*0.2)
    elif  strategy_type == buy_strategy.STRATEGY_TYPE_LIMIT_UP:
        return int(money * 0.8)
    elif strategy_type == buy_strategy.STRATEGY_TYPE_LIMIT_UP:
        return int(money * 0.2)
    else:
        return money
def read_l2_results(trade_call_back_queue):
    while True:
@@ -371,7 +372,7 @@
                            result = huaxin_trade_api.order(1, cb_code, volume, buy_price, blocking=True)
                            if type(result) == dict and result['code'] == 0:
                                orderRef = result['data']['orderRef']
                                async_log_util.info(logger_trade, f"可转载策略下单结果:({orderRef},{strategy_type})")
                                StrategyBuyOrderRefManager().add(orderRef, strategy_type)
                            CodeTradeStateManager().set_trade_state(cb_code, strategy_type,
                                                                    CodeTradeStateManager.TRADE_STATE_ALREADY_BUY)
                            # 移除想买单
records/huaxin_trade_record_manager.py
@@ -347,7 +347,7 @@
                                d["tradeDate"],
                                d["tradingDay"], d["pbuID"], d["accountID"],
                                tool.get_now_datetime_str(),
                                tool.get_now_datetime_str(),d["orderRef"]))
                                tool.get_now_datetime_str(), d["orderRef"]))
        finally:
            pass
@@ -361,7 +361,7 @@
            key_list = ["tradeID", "securityID", "orderLocalID", "direction", "orderSysID", "price",
                        "tradeTime", "volume", "tradeDate", "tradingDay", "pbuID",
                        "accountID", "createTime",
                        "updateTime","orderRef"]
                        "updateTime", "orderRef"]
            fresults = []
            if results:
                for r in results:
trade/buy_strategy.py
@@ -3,9 +3,9 @@
"""
import decimal
from log_module import async_log_util
from log_module import async_log_util, log_export
from log_module.log import logger_trade
from third_data.kpl_data_manager import KPLLimitUpDataRecordManager, CodePlateKeyBuyManager
from third_data.kpl_data_manager import KPLLimitUpDataRecordManager
from trade.l2_transaction_data_manager import HuaXinBuyOrderManager
from utils import tool, l2_huaxin_util
@@ -181,3 +181,39 @@
        limit_up_datas = KPLLimitUpDataRecordManager.latest_origin_datas
        for item in limit_up_datas:
            pass
class StrategyBuyOrderRefManager:
    """
    策略买入记录管理
    """
    __instance = None
    __order_ref_strategy_dict = {}
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = super(StrategyBuyOrderRefManager, cls).__new__(cls, *args, **kwargs)
            cls.__load_data()
        return cls.__instance
    @classmethod
    def __load_data(cls):
        cls.__order_ref_strategy_dict = log_export.load_order_ref_strategy()
    def add(self, order_ref, strategy_type):
        """
        添加数据
        :param order_ref:
        :param strategy_type:
        :return:
        """
        async_log_util.info(logger_trade, f"可转载策略下单结果:({order_ref},{strategy_type})")
        self.__order_ref_strategy_dict[order_ref] = strategy_type
    def get_strategy_type(self, order_ref):
        """
        获取策略类型
        :param order_ref:
        :return:
        """
        return self.__order_ref_strategy_dict.get(order_ref)