easyquant/config/strategy_state.py

145 lines
3.9 KiB
Python
Raw Permalink Normal View History

2025-07-03 23:39:31 +08:00
from datetime import datetime
class hold_data:
def __init__(self, data: dict):
self.stock = None
self.price = None
self.amount = None
self.cost = None
self.profit = None
self.profit_rate = None
class state:
def __init__(self):
self.data = {}
self.init()
# 初始化
def init(self):
self.data = {
"create_date": "",
"position_list": {},
"sell_request_list": {},
"buy_request_list": {},
"high_stock_list": {},
"low_stock_list": {},
"reason_to_sell": "",
"history_buy_list": {},
"history_sell_list": {},
}
def get_buy_requests(self):
return self.data["buy_request_list"]
def clear_buy_requests(self):
"""
清空买入请求列表
"""
self.data["buy_request_list"] = {}
def reset(self):
self.init()
def set_state_datetime(self, key: str, value: datetime) -> None:
"""
设置状态值
:param key: 状态键
:param value: 状态值
"""
self.data[key] = value
def set_hold_stock(self, stock: str, data: dict) -> None:
"""
设置持仓股票数据
:param stock: 股票代码
:param data: hold_data 对象
"""
hd = hold_data(data)
if not isinstance(hd, hold_data):
raise ValueError("data must be an instance of hold_data")
self.data["position_list"][stock] = hd
def set_high_stock(self, stock: str, data: dict) -> None:
"""
设置高位股票数据
:param stock: 股票代码
:param data: hold_data 对象
"""
hd = hold_data(data)
if not isinstance(hd, hold_data):
raise ValueError("data must be an instance of hold_data")
self.data["high_stock_list"][stock] = hd
def set_low_stock(self, stock: str, data: dict) -> None:
"""
设置低位股票数据
:param stock: 股票代码
:param data: hold_data 对象
"""
hd = hold_data(data)
if not isinstance(hd, hold_data):
raise ValueError("data must be an instance of hold_data")
self.data["low_stock_list"][stock] = hd
def set_sell_request(self, stock: str, data: dict, reason: str) -> None:
"""
设置卖出请求数据
:param stock: 股票代码
:param data: hold_data 对象
"""
hd = hold_data(data)
if not isinstance(hd, hold_data):
raise ValueError("data must be an instance of hold_data")
self.data["sell_request_list"][stock + "_" + reason] = hd
def set_buy_request(self, stock: str, data: dict, reason: str) -> None:
"""
设置买入请求数据
:param stock: 股票代码
:param data: hold_data 对象
"""
hd = hold_data(data)
if not isinstance(hd, hold_data):
raise ValueError("data must be an instance of hold_data")
self.data["buy_request_list"][stock + "_" + reason] = hd
def clear_buys_requests(self):
"""
清空买入请求列表
"""
self.data["buy_request_list"] = {}
def get_sell_reason(self):
return self.data["reason_to_sell"]
def set_sell_reason(self, reason: str):
"""
设置卖出原因
:param reason: 卖出原因
"""
self.data["reason_to_sell"] = reason
def get_sell_requests(self):
"""
获取卖出请求列表
:return: 卖出请求列表
"""
return self.data["sell_request_list"]
def get_yesterday_high_list(self):
"""
获取昨日涨停股票列表
:return: 昨日涨停股票列表
"""
2025-07-04 14:35:51 +08:00
return self.data["high_stock_list"]
def get_hold_list(self):
2025-07-05 17:31:46 +08:00
return self.data["position_list"]