Administrator
2023-09-28 46b6545bba281fee209710802c44ed8542bef203
120天内涨幅过高的不买
4个文件已修改
41 ■■■■ 已修改文件
code_attribute/code_nature_analyse.py 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code_attribute/first_target_code_data_processor.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inited_data.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code_attribute/code_nature_analyse.py
@@ -133,7 +133,7 @@
# 是否涨得太高
def is_up_too_high(record_datas):
def is_up_too_high_in_10d(record_datas):
    datas = copy.deepcopy(record_datas)
    datas.sort(key=lambda x: x["bob"])
    datas = datas[-10:]
@@ -164,6 +164,32 @@
    return False
# 120 天内是否长得太高
def is_up_too_high_in_120d(record_datas):
    datas = copy.deepcopy(record_datas)
    datas.sort(key=lambda x: x["bob"])
    datas = datas[-120:]
    today_limit_up_price = round(float(gpcode_manager.get_limit_up_price_by_preprice(datas[-1]["close"])), 2)
    max_price = 0
    for data in datas:
        if data["high"] > max_price:
            max_price = data["high"]
    if today_limit_up_price <= max_price:
        return False
    # 计算120天的均价
    total_amount = 0
    total_volume = 0
    for data in datas:
        total_amount += data["amount"]
        total_volume += data["volume"]
    average_price = round(total_amount / total_volume, 2)
    if (today_limit_up_price - average_price) / average_price > 0.3:
        return True
    else:
        return False
# 是否有涨停
def get_first_limit_up_count(datas):
    datas = copy.deepcopy(datas)
code_attribute/first_target_code_data_processor.py
@@ -118,10 +118,14 @@
                                                           volumes_data[:90]))
                logger_first_code_record.info("{} 获取到首板60天最大量:{}", code, volumes)
                code_volumn_manager.set_histry_volumn(code, volumes[0], volumes[1], volumes[2])
                if code_nature_analyse.is_up_too_high(volumes_data):
                if code_nature_analyse.is_up_too_high_in_10d(volumes_data):
                    # 判断是否太高
                    l2_trade_util.forbidden_trade(code, "股价长得太高")
                if code_nature_analyse.is_up_too_high_in_120d(volumes_data):
                    # 判断是否太高
                    l2_trade_util.forbidden_trade(code, "120天内股价长得太高")
                # 判断K线形态
                # is_has_k_format, msg = code_nature_analyse.is_has_k_format(
                #     gpcode_manager.get_limit_up_price(code), volumes_data)
inited_data.py
@@ -216,7 +216,7 @@
# 获取近90天的最大量与最近的量
# 获取最近一次涨停/涨停下一个交易日的最大值
def get_volumns_by_code(code, count=60) -> object:
    datas = HistoryKDatasUtils.get_history_tick_n(code, count, "open,high,low,close,volume,pre_close,bob")
    datas = HistoryKDatasUtils.get_history_tick_n(code, count, "open,high,low,close,volume,pre_close,bob,amount")
    # 计算
    datas.sort(key=lambda x: x["bob"], reverse=True)
    return datas
server.py
@@ -960,10 +960,11 @@
        time.sleep(1.5)
if __name__ == "__main__":
    codes = gpcode_manager.FirstGPCodesManager().get_first_gp_codes()
    codes = ["002270"]  # gpcode_manager.FirstGPCodesManager().get_first_gp_codes()
    for code in codes:
        volumes_data = inited_data.get_volumns_by_code(code, 150)
        print(code, code_nature_analyse.is_up_too_high(volumes_data))
        volumes_data = volumes_data[1:]
        print(code, code_nature_analyse.is_up_too_high_in_120d(volumes_data))
        # try:
        #     global_data_loader.load_zyltgb()
        #     limit_up_price = float(gpcode_manager.get_limit_up_price(code))