| | |
| | | response_data = "" |
| | | if url.path == "/get_block_codes_money": |
| | | ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()]) |
| | | block = ps_dict['block'] |
| | | block = ps_dict.get('block') |
| | | try: |
| | | fdatas = BlockInMoneyRankManager().get_block_codes_money(block) |
| | | response_data = json.dumps({"code": 0, "data": fdatas}) |
| | |
| | | import logging |
| | | import socketserver |
| | | import time |
| | | import urllib |
| | | from http.server import BaseHTTPRequestHandler |
| | | import dask |
| | | import requests |
| | | |
| | | from code_attribute.gpcode_manager import BlackListCodeManager |
| | | from l2.l2_transaction_data_manager import HuaXinBuyOrderManager |
| | |
| | | codes_ = BlockSpecialCodesManager().get_block_codes(b[0]) |
| | | if not codes_: |
| | | codes_ = set() |
| | | b[4] = len(set(record_reason_dict[b[0]])&set(codes_)) |
| | | b[4] = len(set(record_reason_dict[b[0]]) & set(codes_)) |
| | | except: |
| | | pass |
| | | limit_up_reason_statistic_info.sort(key=lambda x: x[1] - x[2]) |
| | |
| | | response_data = json.dumps({"code": 0, "data": fdatas}) |
| | | except: |
| | | pass |
| | | elif url.path == "/get_block_codes_with_money": |
| | | # 获取板块资金流入状况 |
| | | ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()]) |
| | | block = ps_dict.get("block") |
| | | # 是否倒序排 |
| | | desc = int(ps_dict.get("desc")) |
| | | try: |
| | | response_data = requests.get( |
| | | "http://127.0.0.1:9005/get_block_codes_money?block=" + urllib.parse.quote(block)) |
| | | r_str = response_data.text |
| | | response_data = json.loads(r_str) |
| | | if response_data["code"] == 0: |
| | | datas = response_data["data"] |
| | | fdatas = [] |
| | | for d in datas: |
| | | # (代码, 名称, 流入金额, 是否被排除成分股) |
| | | fdatas.append((d[0], gpcode_manager.get_code_name(d[0]), d[1], d[2])) |
| | | if desc: |
| | | fdatas.sort(key=lambda x: x[2], reverse=True) |
| | | else: |
| | | fdatas.sort(key=lambda x: x[2]) |
| | | fdatas = fdatas[:50] |
| | | response_data = json.dumps({"code": 0, "data": fdatas}) |
| | | else: |
| | | response_data = r_str |
| | | except Exception as e: |
| | | response_data = json.dumps({"code": 1, "data": str(1)}) |
| | | |
| | | async_log_util.info(logger_request_api, f"结束请求{tool.get_thread_id()}-{url}") |
| | | self.send_response(200) |
| | |
| | | from cancel_strategy.s_l_h_cancel_strategy import SCancelBigNumComputer |
| | | from code_attribute import gpcode_manager, code_volumn_manager, global_data_loader, zyltgb_util |
| | | from code_attribute.code_l1_data_manager import L1DataManager |
| | | from code_attribute.gpcode_manager import CodePrePriceManager, CodesNameManager |
| | | from code_attribute.gpcode_manager import CodePrePriceManager, CodesNameManager, GreenListCodeManager |
| | | from huaxin_client import l2_data_transform_protocol |
| | | from huaxin_client.trade_transform_protocol import TradeResponse |
| | | from l2 import l2_data_manager_new, l2_log, code_price_manager, l2_data_util, transaction_progress, \ |
| | |
| | | # 判断今日扫入的代码数量是否大于阈值 |
| | | radical_buy_setting = BuyMoneyAndCountSetting().get_radical_buy_setting() |
| | | MAX_COUNT = 4 if radical_buy_setting is None else radical_buy_setting[0] |
| | | if len(deal_codes) >= MAX_COUNT: |
| | | async_log_util.info(logger_l2_radical_buy, f"扫入成交代码个数大于{MAX_COUNT}个:{code}-{deal_codes}") |
| | | |
| | | return True |
| | | if not GreenListCodeManager().is_in_cache(code): |
| | | # 加绿不判断板块是否成交 |
| | | if len(deal_codes) >= MAX_COUNT: |
| | | async_log_util.info(logger_l2_radical_buy, f"扫入成交代码个数大于{MAX_COUNT}个:{code}-{deal_codes}") |
| | | return True |
| | | if code in deal_codes: |
| | | async_log_util.info(logger_l2_radical_buy, f"该代码已经成交:{code}") |
| | | return True |
| | |
| | | buy_blocks_with_money = [(b, RealTimeKplMarketData.get_jx_block_in_money(b), |
| | | in_blocks.index(b) if b in in_blocks else -1) for b in buy_blocks] |
| | | if result_by_volume[0] != radical_buy_strategy.BUY_MODE_NONE: |
| | | if tool.get_now_time_as_int() < 93200: |
| | | radical_buy_data_manager.ExcludeIndexComputeCodesManager.add_code(code) |
| | | async_log_util.info(logger_l2_radical_buy, |
| | | f"09:32之前不交易:{code}") |
| | | return True |
| | | # 判断是否开得太高 |
| | | open_price = L1DataManager.get_open_price(code) |
| | | if not radical_buy_strategy.is_can_buy_with_open_price(code, open_price): |
| | | async_log_util.info(logger_l2_radical_buy, |
| | | f"开得太高:{code}") |
| | | radical_buy_data_manager.ExcludeIndexComputeCodesManager.add_code(code) |
| | | return True |
| | | if not GreenListCodeManager().is_in_cache(code): |
| | | # 加绿的不需要判断如下问题 |
| | | if tool.get_now_time_as_int() < 93200: |
| | | radical_buy_data_manager.ExcludeIndexComputeCodesManager.add_code(code) |
| | | async_log_util.info(logger_l2_radical_buy, |
| | | f"09:32之前不交易:{code}") |
| | | return True |
| | | # 判断是否开得太高 |
| | | open_price = L1DataManager.get_open_price(code) |
| | | if not radical_buy_strategy.is_can_buy_with_open_price(code, open_price): |
| | | async_log_util.info(logger_l2_radical_buy, |
| | | f"开得太高:{code}") |
| | | radical_buy_data_manager.ExcludeIndexComputeCodesManager.add_code(code) |
| | | return True |
| | | radical_buy_data_manager.ExcludeIndexComputeCodesManager.remove_code(code) |
| | | |
| | | if result_by_volume[0] == radical_buy_strategy.BUY_MODE_DIRECT and not tool.is_sh_code(code): |
| | |
| | | from code_attribute import code_nature_analyse, code_volumn_manager, gpcode_manager |
| | | from code_attribute.code_l1_data_manager import L1DataManager |
| | | from code_attribute.code_volumn_manager import CodeVolumeManager |
| | | from code_attribute.gpcode_manager import GreenListCodeManager |
| | | from db import redis_manager_delegate as redis_manager |
| | | from db.redis_manager_delegate import RedisUtils |
| | | from l2.huaxin import l2_huaxin_util |
| | |
| | | @param total_sell_volume: 总卖量 |
| | | @return: 是否可以买, 原因 |
| | | """ |
| | | if GreenListCodeManager().is_in_cache(code): |
| | | return True, "已加绿" |
| | | |
| | | k_format = None |
| | | if not constant.TEST: |
| | | k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code) |
| | |
| | | current_index, current_before_codes_info = cls.__get_current_index(code, block, set(), |
| | | limit_up_time=limit_up_timestamp, |
| | | ignore_open_limit_up=False) |
| | | if history_index - current_index >1: |
| | | if history_index - current_index > 1: |
| | | return False, f"前排只允许一个炸板:炸板个数-{history_index - current_index}" |
| | | return True, f"处于首板老{history_index + 1}" |
| | | |
| | |
| | | keys_, info = cls.get_code_blocks(code) |
| | | if not keys_: |
| | | return set(), "没获取到板块" |
| | | if GreenListCodeManager().is_in_cache(code): |
| | | return set(keys_), "已加绿" |
| | | |
| | | # 获取精选净流入 |
| | | jx_in_blocks = RealTimeKplMarketData.get_top_market_jingxuan_blocks() |