From 03cc1cf986e35f57e26b80b3f1f0a950fb4b634a Mon Sep 17 00:00:00 2001 From: 27942 <2794236280@qq.com> Date: Tue, 14 Oct 2025 13:38:01 +0800 Subject: [PATCH] dededdew --- weex/读取数据库分析数据2.0.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/weex/读取数据库分析数据2.0.py b/weex/读取数据库分析数据2.0.py index f519f5b..4104848 100644 --- a/weex/读取数据库分析数据2.0.py +++ b/weex/读取数据库分析数据2.0.py @@ -21,20 +21,20 @@ from models.weex import Weex15, Weex1 class BacktestConfig: """回测配置类""" # 交易参数 - take_profit: float = 8.0 # 止盈点数 - stop_loss: float = -1.0 # 止损点数 + take_profit: float = 8.0 # 止盈点数 + stop_loss: float = -1.0 # 止损点数 contract_size: float = 10000 # 合约规模 - open_fee: float = 5.0 # 开仓手续费 + open_fee: float = 5.0 # 开仓手续费 close_fee_rate: float = 0.0005 # 平仓手续费率 - + # 回测日期范围 start_date: str = "2025-7-1" end_date: str = "2025-7-31" - + # 信号参数 enable_bear_bull_engulf: bool = True # 涨包跌信号 enable_bull_bear_engulf: bool = True # 跌包涨信号 - + def __post_init__(self): """验证配置参数""" if self.take_profit <= 0: @@ -65,12 +65,12 @@ class SignalStats: count: int = 0 wins: int = 0 total_profit: float = 0.0 - + @property def win_rate(self) -> float: """胜率计算""" return (self.wins / self.count * 100) if self.count > 0 else 0.0 - + @property def avg_profit(self) -> float: """平均盈利""" @@ -191,9 +191,18 @@ def simulate_trade(direction, entry_price, entry_time, next_15min_time, tp=8, sl # =============================================================== def backtest(dates, tp=8, sl=-1): + """ + datas:日期的列表 + + :param dates: + :param tp: + :param sl: + :return: + """ + all_data = [] for date_str in dates: - all_data.extend(get_data_by_date(Weex15, date_str)) + all_data.extend(get_data_by_date(Weex15, date_str)) # 获取天的数据,15分钟k线数据 all_data.sort(key=lambda x: x['id']) @@ -205,8 +214,8 @@ def backtest(dates, tp=8, sl=-1): trades = [] for idx in range(1, len(all_data) - 1): - prev, curr = all_data[idx - 1], all_data[idx] - entry_candle = all_data[idx + 1] + prev, curr = all_data[idx - 1], all_data[idx] # 前一笔,当前一笔 + entry_candle = all_data[idx + 1] # 开仓 direction, signal = check_signal(prev, curr) if not direction: