Administrator
2025-06-12 ab662be5c523b75c1bd28fc6bfcab2872b9623b3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
"""
策略参数设置
"""
import json
 
from db.mysql_data_delegate import Mysqldb
from utils import tool
 
 
class StrategyParamsSettings:
    # 禁止买入
    STATE_FORBIDDEN_BUY = 0
    # 正常买入
    STATE_NORMAL_BUY = 1
 
    def __init__(self):
        # 交易状态
        self.trade_state = 1
        # 买入金额
        self.buy_money = 2000
        # 最大买入票的数量
        self.max_buy_codes_count = 100
        # 价格区间
        self.price_range = (3, 60)
        # 老题材涨停数
        self.limit_up_count_of_old_plate = 3
        # 新题材涨停数
        self.limit_up_count_of_new_plate = 3
        # 昨日不能涨停
        self.cant_yesterday_limit_up = True
        # 昨日不能跌停
        self.cant_yesterday_limit_down = True
        # 昨日不能炸板
        self.cant_yesterday_open_limit_up = False
        # 有涨停的交易日数量
        self.has_limit_up_days = 10
        # xx个交易日内不能有xx次涨停
        self.trade_days_count_of_limit_up = 5
        # 涨停次数
        self.count_of_limit_up = 3
 
        # xx个交易日内不能有xx次涨停
        self.trade_days_count_of_limit_down = 5
        # 跌停次数
        self.count_of_limit_down = 3
 
        # xx个交易日内不能有xx次炸板
        self.trade_days_count_of_open_limit_up = 5
        # 炸板次数
        self.count_of_open_limit_up = 3
        # 是否可买创业板
        self.can_buy_ge_code = True
        # 自由市值范围(单位为亿)
        self.zyltgb_range = (10, 300)
        # 是否可买今日涨停过的票
        self.can_buy_limited_up = False
        # 最低开盘涨幅
        self.min_open_rate = -3
        # 可买的涨幅比例
        self.avaiable_rates = (-0.03, 0.07)
        # 今日涨停价需突破XX日最高价,None表示此条数据不生效
        self.trade_days_count_of_limit_up_price_over_high = None
        # 今日买价与最高价的差值在XX比例以内
        self.min_rate_of_highest_and_price = 0.04
        # 最多高于均价xx比例
        self.max_rate_than_average_price = 0.03
 
    def to_json_str(self):
        d = self.__dict__
        return json.dumps(d)
 
    @classmethod
    def to_obj(cls, json_str):
        result = json.loads(json_str)
        obj = StrategyParamsSettings()
        for k in result:
            setattr(obj, k, result[k])
        return obj
 
 
@tool.singleton
class StrategyParamsSettingsManager:
    def __init__(self):
        self.musql = Mysqldb()
        self.__settings = StrategyParamsSettings()
        self.__load_data()
 
    def __load_data(self):
        sql = f"select `value` from config where `key` = 'low_suction_settings'"
        setting_str_list = self.musql.select_one(sql)
        if setting_str_list and setting_str_list[0]:
            self.__settings = StrategyParamsSettings.to_obj(setting_str_list[0])
 
    def set_settings(self, settings: StrategyParamsSettings):
        sql = f"update config set `value` = '{settings.to_json_str()}'  where `key` = 'low_suction_settings'"
        self.musql.execute(sql)
        self.__settings = settings
 
    def get_settings(self):
        return self.__settings
 
 
if __name__ == "__main__":
    settings = StrategyParamsSettingsManager().get_settings()
    StrategyParamsSettingsManager().set_settings(settings)