From d475991a9d0abc94edfb3a5d9761df8bed8b4fc4 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 10 七月 2024 17:03:55 +0800 Subject: [PATCH] 想买单策略修改 --- main.py | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 45 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index 47b883c..875f35f 100644 --- a/main.py +++ b/main.py @@ -9,6 +9,7 @@ import time from code_attribute import target_codes_manager, gpcode_manager, code_market_manager, history_k_data_util +from code_attribute.gpcode_manager import CodesNameManager from db.redis_manager_delegate import RedisUtils from huaxin_client import l2_client_for_cb from huaxin_client.client_network import SendResponseSkManager @@ -16,9 +17,10 @@ from records import huaxin_trade_record_manager 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 +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.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, \ output_util, l2_huaxin_util, output_data_util @@ -215,7 +217,7 @@ 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["createTime"] = int(buys[-1]["tradeTime"].replace(":", "")) + r["createTime"] = int(buys[0]["tradeTime"].replace(":", "")) if "sell_list" not in r: sells = huaxin_trade_record_manager.DealRecordManager().list_sell_by_code_cache(cb_code) @@ -270,6 +272,41 @@ send_response({"code": 0, "data": {}}, client_id, request_id) except Exception as e: send_response({"code": 0, "data": {}, "msg": str(e)}, client_id, request_id) + elif ctype == "want_buy_codes": + try: + operate = data["operate"] + if operate == outside_api_command_manager.OPERRATE_ADD: + code = data["code"] + WantBuyCodesManager().add_code(code, buy_strategy.STRATEGY_TYPE_LIMIT_UP) + WantBuyCodesManager().add_code(code, buy_strategy.STRATEGY_TYPE_RISE_HIGH_WITH_BLOCKS) + send_response({"code": 0, "data": {}}, client_id, request_id) + elif operate == outside_api_command_manager.OPERRATE_GET: + code_infos = WantBuyCodesManager().list_code() + codes = set([x.split("-")[0] for x in code_infos]) + code_infos = [(x, CodesNameManager.get_code_name(x)) for x in codes] + send_response({"code": 0, "data": code_infos}, client_id, request_id) + elif operate == outside_api_command_manager.OPERRATE_DELETE: + code = data["code"] + WantBuyCodesManager().remove_code(code, buy_strategy.STRATEGY_TYPE_LIMIT_UP) + WantBuyCodesManager().remove_code(code, buy_strategy.STRATEGY_TYPE_RISE_HIGH_WITH_BLOCKS) + send_response({"code": 0, "data": {}}, client_id, request_id) + except Exception as e: + send_response({"code": 1, "msg": str(e)}, client_id, request_id) + elif ctype == "trade_state": + try: + operate = data["operate"] + if operate == outside_api_command_manager.OPERRATE_SET: + state = data["state"] + if state > 0: + TradeStateManager().open_buy() + else: + TradeStateManager().close_buy() + send_response({"code": 0, "data": {}}, client_id, request_id) + elif operate == outside_api_command_manager.OPERRATE_GET: + state = 1 if TradeStateManager().is_can_buy() else 0 + send_response({"code": 0, "data": {"state": state}}, client_id, request_id) + except Exception as e: + send_response({"code": 1, "msg": str(e)}, client_id, request_id) def test(): @@ -302,12 +339,15 @@ buy_infos = result[3] for buy_info in buy_infos: if buy_info[0]: + if not TradeStateManager().is_can_buy(): + continue # 绛栫暐绫诲瀷 strategy_type = buy_info[1] # 鑾峰彇鑲$エ浠g爜鐨勫彲杞�轰唬鐮� cb_code = target_codes_manager.get_cb_code(code) if CodeTradeStateManager().get_trade_state(cb_code, - strategy_type) == CodeTradeStateManager.TRADE_STATE_ALREADY_BUY: + strategy_type) == CodeTradeStateManager.TRADE_STATE_ALREADY_BUY and not WantBuyCodesManager().is_in_cache(cb_code, strategy_type): + # 宸茬粡涔颁簡涓旀病鍦ㄦ兂涔板崟 continue # 鑾峰彇鍙浆鍊虹殑娑ㄥ仠浠� market_info = code_market_manager.get_market_info(cb_code) @@ -325,6 +365,8 @@ result = huaxin_trade_api.order(1, cb_code, volume, buy_price, blocking=True) CodeTradeStateManager().set_trade_state(cb_code, strategy_type, CodeTradeStateManager.TRADE_STATE_ALREADY_BUY) + # 绉婚櫎鎯充拱鍗� + WantBuyCodesManager().remove_code(cb_code, strategy_type) async_log_util.info(logger_trade, f"鍙浆鍊轰笅鍗曠粨鏋滐細{result}") huaxin_trade_data_update.add_position_list() huaxin_trade_data_update.add_money_list() -- Gitblit v1.8.0