Administrator
2024-07-15 8b35efb921599861a4561fdf352205dedc6bc3be
手动设置独苗是否可以买入
5个文件已修改
104 ■■■■ 已修改文件
api/outside_api_command_callback.py 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_data_manager_new.py 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
settings/trade_setting.py 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test/test.py 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/trade_manager.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/outside_api_command_callback.py
@@ -48,7 +48,7 @@
from trade.sell import sell_manager
from trade.sell.sell_rule_manager import TradeRuleManager, SellRule
from trade.trade_manager import TradeTargetCodeModeManager, AutoCancelSellModeManager
from settings.trade_setting import MarketSituationManager
from settings.trade_setting import MarketSituationManager, TradeBlockBuyModeManager
from utils import socket_util, data_export_util, tool, huaxin_util, output_util, global_util
from servers import server_util
@@ -1181,6 +1181,21 @@
                count = history_k_data_manager.update_history_k_bars()
                self.send_response({"code": 0, "data": {"count": count}, "msg": f"需要更新K线代码数量:{count}"}, client_id,
                                   request_id)
            elif ctype == "get_buy_block_mode":
                # 获取买入板块的模式
                can_buy_unique_block = TradeBlockBuyModeManager().can_buy_unique_block()
                self.send_response({"code": 0, "data": {"unique_block": 1 if can_buy_unique_block else 0 }, "msg": f""}, client_id,
                                   request_id)
            elif ctype == "add_buy_unique_block_mode":
                # 添加独苗买入模式
                TradeBlockBuyModeManager().add_unique_block()
                self.send_response({"code": 0, "data": {}, "msg": f""},
                                   client_id,
                                   request_id)
        except Exception as e:
            logging.exception(e)
            self.send_response({"code": 1, "msg": f"数据处理出错:{e}"}, client_id, request_id)
l2/l2_data_manager_new.py
@@ -38,7 +38,7 @@
from trade.trade_manager import TradeTargetCodeModeManager, AccountAvailableMoneyManager
from settings.trade_setting import MarketSituationManager
from settings.trade_setting import MarketSituationManager, TradeBlockBuyModeManager
import concurrent.futures
@@ -1200,8 +1200,12 @@
            if place_order_count > 0:
                return True, False, "之前下过单"
            if not can_buy_result[0]:
                if place_order_count <= 0 or can_buy_result[1]:
                    return False, True, f"非强势30分钟,不满足身位:{can_buy_result[2]}"
                # 没有板块
                if can_buy_result[1]:
                    # 是独苗
                    if not TradeBlockBuyModeManager().can_buy_unique_block():
                        # 不能买独苗
                        return False, True, f"非强势30分钟,不满足身位:{can_buy_result[2]}"
            return True, False, can_buy_result[2]
    @classmethod
settings/trade_setting.py
@@ -48,3 +48,56 @@
    def get_situation_cache(self):
        return self.__situation_cache
class TradeBlockBuyModeManager:
    # 第一位:保留   第二位:保留  第三位:买独苗  第四位:传统
    # 0bxxxx
    # 传统模式
    MODE_TRADITIONAL = 0b0001
    # 独苗模式
    MODE_UNIQUE_BLOCK = 0b0010
    __REDIS_KEY = "trade_block_buy_mode"
    __mode = int(MODE_TRADITIONAL)
    """
    板块买入模式管理
    """
    __instance = None
    __db = 2
    redisManager = redis_manager.RedisManager(2)
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = super(TradeBlockBuyModeManager, cls).__new__(cls, *args, **kwargs)
        return cls.__instance
    @classmethod
    def __load_data(cls):
        val = cls.__get_redis().get(cls.__REDIS_KEY)
        if val is not None:
            cls.__mode = int(val)
    @classmethod
    def __get_redis(cls):
        return cls.redisManager.getRedis()
    def __set_mode(self, mode: int):
        self.__mode = mode
        RedisUtils.setex_async(self.__db, self.__REDIS_KEY, tool.get_expire(), mode)
    def get_mode(self):
        return self.__mode
    def add_unique_block(self):
        mode = int(self.__mode | self.MODE_UNIQUE_BLOCK)
        self.__set_mode(mode)
    def remove_unique_block(self):
        mode = int(self.__mode & ~self.MODE_UNIQUE_BLOCK)
        self.__set_mode(mode)
    def can_buy_unique_block(self):
        r = self.__mode & self.MODE_UNIQUE_BLOCK > 1
        return r > 0
test/test.py
@@ -1,12 +1,4 @@
import decimal
import l2_data_util
from code_attribute.code_data_util import ZYLTGBUtil
from code_attribute.gpcode_manager import CodesNameManager
from huaxin_client import l1_subscript_codes_manager
from third_data.history_k_data_manager import HistoryKDataManager
from third_data.history_k_data_util import JueJinHttpApi, HistoryKDatasUtils
from utils import tool, init_data_util
from settings.trade_setting import TradeBlockBuyModeManager
def test_active_buy():
@@ -26,11 +18,8 @@
if __name__ == "__main__":
    # codes = ["600859", "000333"]
    # for code in codes:
    #     datas = init_data_util.get_volumns_by_code(code)
    #     HistoryKDataManager().save_history_bars(code, datas[0]['bob'].strftime("%Y-%m-%d"), datas, force=True)
    codes = HistoryKDataManager().get_history_bars_codes("2024-07-02")
    print(codes)
    # print(count)
    # print(HistoryKDataManager().get_history_bars(code, "2024-07-02"))
    print(TradeBlockBuyModeManager().can_buy_unique_block(), bin(TradeBlockBuyModeManager().get_mode()))
    print(TradeBlockBuyModeManager().add_unique_block())
    print(TradeBlockBuyModeManager().can_buy_unique_block(), bin(TradeBlockBuyModeManager().get_mode()))
    print(TradeBlockBuyModeManager().remove_unique_block())
    print(TradeBlockBuyModeManager().can_buy_unique_block(), bin(TradeBlockBuyModeManager().get_mode()))
trade/trade_manager.py
@@ -34,6 +34,7 @@
latest_trade_delegate_data = []
# 关闭购买入口
# 开启购买入口
class TradeStateManager: