From 2be61335b3d440b77d4cd115576e1b694e479e12 Mon Sep 17 00:00:00 2001 From: 27942 <2794236280@qq.com> Date: Thu, 9 Oct 2025 17:36:15 +0800 Subject: [PATCH] gfrdegdergr --- bieget/test.py | 81 +++++ 回测数据/test2.py | 561 +++++++++++++++++++++++++---------- 回测数据/推测策略,回测.py | 139 +++++---- 回测数据/通过止盈止损策略.py | 321 +++++++++----------- 4 files changed, 685 insertions(+), 417 deletions(-) create mode 100644 bieget/test.py diff --git a/bieget/test.py b/bieget/test.py new file mode 100644 index 0000000..e7c958a --- /dev/null +++ b/bieget/test.py @@ -0,0 +1,81 @@ +import requests + +cookies = { + 'bitget_lang': 'zh-CN', + '_dx_kvani5r': '24e0dceb12f85d9a1279183ca29c09f772f8c61124e4eca228d8dd909c9b24b0019c2b9a', + 'OptanonAlertBoxClosed': 'Wed%20Sep%2024%202025%2017:12:32%20GMT+0800%20(%E4%B8%AD%E5%9B%BD%E6%A0%87%E5%87%86%E6%97%B6%E9%97%B4)', + 'OptanonConsent': 'isMarketing=1&isStatistic=1', + 'g_state': '{"i_l":0}', + 'theme': 'white', + 'BITGET_LOCAL_COOKIE': '{%22bitget_lang%22:%22zh-CN%22%2C%22bitget_unit%22:%22CNY%22%2C%22bitget_showasset%22:true%2C%22bitget_theme%22:%22white%22%2C%22bitget_layout%22:%22right%22%2C%22bitget_valuationunit%22:0%2C%22bitget_valuationunit_new%22:1%2C%22bitget_valuationunitandfiat%22:1%2C%22bitgt_login%22:false%2C%22theme%22:%22black%22%2C%22brand_simulation_trade%22:false%2C%22bitget_currency%22:%22%22}', + 'USD': 'CNY', + '_gcl_au': '1.1.737358653.1759055313', + '_ga': 'GA1.1.942322417.1759055313', + 'afUserId': '58c62981-8c6f-4601-adee-77489e65d72b-p', + 'AF_SYNC': '1759974778836', + 'bt_rtoken': 'upex:session:id:d250cc2b001c88f9e9c60a3686fd7dcf5773a666402d41b35c7a6fa3f853392d', + 'bt_uid': '619BB9EC4D4A3F9FC1AC092D38818A00', + 'bt_sessonid': '6ad2dd3f-35f3-4ef8-accb-3292ceb8b5d7', + 'bt_newsessionid': 'eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1NTk2ZjA1MC0zOGFhLTQxMjktOTcyZS0wMWUyZDI1MWI0N2M1NzQxNTgyOTIiLCJ1aWQiOiIxV00rVjRqcTJYSVRQemdJVWhUMnNRPT0iLCJzdWIiOiJsenoqKipvbSIsImlwIjoiWGRhSGJmdHZQVGVpeFlnMmxlVmdUZz09IiwiZGlkIjoiSjBZZjQ1NkV5RUxaSGhaa2tWYnNQZTVlSFVYYUNKZS9CM21wTHJ5SHJWMTEyUklzWlFLTTVIQmtTNHlUUmhuVyIsInN0cyI6MCwiaWF0IjoxNzU5OTc0NzkwLCJleHAiOjE3NjA0MDY3OTAsInB1c2hpZCI6ImRka1NMR1VDak9Sd1pFdU1rMFlaMWc9PSIsImlzcyI6InVwZXgifQ.0SygmCSR3f5tfA0xQpdzS241nFDbsVultPm0LmleYgY', + '_ga_Z8Q93KHR0F': 'GS2.1.s1759974680$o4$g1$t1759974795$j19$l0$h0', + 'dy_token': '68e74d44zBITZniRPCwXG8rs7bnFrrlGIHyxtKx1', + '_cfuvid': '7C9e7Tl9zudw90jhhHGEM4H7SJnpWoi39xepaHJpJuM-1759995357475-0.0.1.1-604800000', + '__cf_bm': 'y7VR5vFWhYBo1IWnsrX2txdXsSeztAnTxMOQjyhyuf0-1760001832-1.0.1.1-kj32unDiaucuNb8pjHeq89WUlOf.zwJW6gyN53JjOsQ8FhB1R23kpDJtzc4878CdMKYfk7xFyYUnUBEiESvziCBFUbhm3F.R0qaPyZ.dw8g', +} + +headers = { + 'accept': 'application/json, text/plain, */*', + 'accept-language': 'zh-CN,zh;q=0.9,zh-HK;q=0.8,en;q=0.7', + 'baggage': 'sentry-environment=online,sentry-release=776c8c2125078b22570121601aabb051a52c0936,sentry-public_key=8aeef93d782e4ef5ae75634bfee9b590,sentry-trace_id=cb93656935cd47f289b30e55dd96f6c0', + 'cache-control': 'no-cache', + 'content-type': 'application/json;charset=UTF-8', + 'custom-token': '2facaf72193a42ab84dd879b94b57c7e', + 'deviceid': '7c88d47fdc39e5c422eff197b10d3485', + 'dy-token': '68e74d44zBITZniRPCwXG8rs7bnFrrlGIHyxtKx1', + 'language': 'zh_CN', + 'locale': 'zh_CN', + 'origin': 'https://www.bitget.com', + 'pragma': 'no-cache', + 'priority': 'u=1, i', + 'referer': 'https://www.bitget.com/zh-CN/futures/usdt/ETHUSDT', + 'sec-ch-ua': '"Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"', + 'sec-ch-ua-mobile': '?0', + 'sec-ch-ua-platform': '"Windows"', + 'sec-fetch-dest': 'empty', + 'sec-fetch-mode': 'cors', + 'sec-fetch-site': 'same-origin', + 'sentry-trace': 'cb93656935cd47f289b30e55dd96f6c0-b7272e524943c558-0', + 'terminalcode': 'cc98a9dd01af7e2d50d9b9858723b25e', + 'terminaltype': '1', + 'tm': '1760002404225', + 'uhti': 'w1760002409197066bf83bff8', + 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36', + 'website': 'mix', + # 'cookie': 'bitget_lang=zh-CN; _dx_kvani5r=24e0dceb12f85d9a1279183ca29c09f772f8c61124e4eca228d8dd909c9b24b0019c2b9a; OptanonAlertBoxClosed=Wed%20Sep%2024%202025%2017:12:32%20GMT+0800%20(%E4%B8%AD%E5%9B%BD%E6%A0%87%E5%87%86%E6%97%B6%E9%97%B4); OptanonConsent=isMarketing=1&isStatistic=1; g_state={"i_l":0}; theme=white; BITGET_LOCAL_COOKIE={%22bitget_lang%22:%22zh-CN%22%2C%22bitget_unit%22:%22CNY%22%2C%22bitget_showasset%22:true%2C%22bitget_theme%22:%22white%22%2C%22bitget_layout%22:%22right%22%2C%22bitget_valuationunit%22:0%2C%22bitget_valuationunit_new%22:1%2C%22bitget_valuationunitandfiat%22:1%2C%22bitgt_login%22:false%2C%22theme%22:%22black%22%2C%22brand_simulation_trade%22:false%2C%22bitget_currency%22:%22%22}; USD=CNY; _gcl_au=1.1.737358653.1759055313; _ga=GA1.1.942322417.1759055313; afUserId=58c62981-8c6f-4601-adee-77489e65d72b-p; AF_SYNC=1759974778836; bt_rtoken=upex:session:id:d250cc2b001c88f9e9c60a3686fd7dcf5773a666402d41b35c7a6fa3f853392d; bt_uid=619BB9EC4D4A3F9FC1AC092D38818A00; bt_sessonid=6ad2dd3f-35f3-4ef8-accb-3292ceb8b5d7; bt_newsessionid=eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1NTk2ZjA1MC0zOGFhLTQxMjktOTcyZS0wMWUyZDI1MWI0N2M1NzQxNTgyOTIiLCJ1aWQiOiIxV00rVjRqcTJYSVRQemdJVWhUMnNRPT0iLCJzdWIiOiJsenoqKipvbSIsImlwIjoiWGRhSGJmdHZQVGVpeFlnMmxlVmdUZz09IiwiZGlkIjoiSjBZZjQ1NkV5RUxaSGhaa2tWYnNQZTVlSFVYYUNKZS9CM21wTHJ5SHJWMTEyUklzWlFLTTVIQmtTNHlUUmhuVyIsInN0cyI6MCwiaWF0IjoxNzU5OTc0NzkwLCJleHAiOjE3NjA0MDY3OTAsInB1c2hpZCI6ImRka1NMR1VDak9Sd1pFdU1rMFlaMWc9PSIsImlzcyI6InVwZXgifQ.0SygmCSR3f5tfA0xQpdzS241nFDbsVultPm0LmleYgY; _ga_Z8Q93KHR0F=GS2.1.s1759974680$o4$g1$t1759974795$j19$l0$h0; dy_token=68e74d44zBITZniRPCwXG8rs7bnFrrlGIHyxtKx1; _cfuvid=7C9e7Tl9zudw90jhhHGEM4H7SJnpWoi39xepaHJpJuM-1759995357475-0.0.1.1-604800000; __cf_bm=y7VR5vFWhYBo1IWnsrX2txdXsSeztAnTxMOQjyhyuf0-1760001832-1.0.1.1-kj32unDiaucuNb8pjHeq89WUlOf.zwJW6gyN53JjOsQ8FhB1R23kpDJtzc4878CdMKYfk7xFyYUnUBEiESvziCBFUbhm3F.R0qaPyZ.dw8g', +} + +json_data = { + 'startTime': 1759912500000, + 'endTime': 1760002409196, + 'symbolCode': 'ETHUSDT', + 'languageType': 1, +} + +response = requests.post( + 'https://www.bitget.com/v1/trigger/strategy/tradingview/queryHistorySignals', + cookies=cookies, + headers=headers, + json=json_data, +) + +print(response.json()) + +# Note: json_data will not be serialized by requests +# exactly as it was in the original request. +# data = '{"startTime":1759912500000,"endTime":1760002409196,"symbolCode":"ETHUSDT","languageType":1}' +# response = requests.post( +# 'https://www.bitget.com/v1/trigger/strategy/tradingview/queryHistorySignals', +# cookies=cookies, +# headers=headers, +# data=data, +# ) diff --git a/回测数据/test2.py b/回测数据/test2.py index 988e198..d500edb 100644 --- a/回测数据/test2.py +++ b/回测数据/test2.py @@ -1,177 +1,414 @@ -import datetime -import requests -from loguru import logger - -# 请求头,用于伪装成浏览器访问接口 -headers = { - 'accept': 'application/json, text/plain, */*', - 'accept-language': 'zh,zh-CN;q=0.9,zh-HK;q=0.8,en;q=0.7', - 'cache-control': 'no-cache', - 'origin': 'https://www.websea.com', - 'pragma': 'no-cache', - 'priority': 'u=1, i', - 'referer': 'https://www.websea.com/', - 'sec-ch-ua': '"Chromium";v="140", "Not=A?Brand";v="24", "Google Chrome";v="140"', - 'sec-ch-ua-mobile': '?0', - 'sec-ch-ua-platform': '"Windows"', - 'sec-fetch-dest': 'empty', - 'sec-fetch-mode': 'cors', - 'sec-fetch-site': 'same-site', - 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36', -} +import re +from datetime import datetime -def fetch_kline(day: int): - """获取某一天的分钟级 K线数据""" - # 构造该日的起止时间戳 - time_ser = datetime.datetime(2025, 6, day) - start_of_day = time_ser.replace(hour=0, minute=0, second=0, microsecond=0) - end_of_day = time_ser.replace(hour=23, minute=59, second=59, microsecond=0) - params = { - 'symbol': 'ETH-USDT', # 交易对 - 'period': '1min', # 分钟级K线 - 'start': int(start_of_day.timestamp()), # 开始时间 - 'end': int(end_of_day.timestamp()), # 结束时间 +def calculate_max_drawdown(log_data): + """ + 计算交易日志的最大回撤 + """ + # 解析日志数据,提取每笔交易的盈利 + profits = [] + + for line in log_data.split('\n'): + if not line.strip(): + continue + + # 使用正则表达式提取盈利数值 + match = re.search(r'盈利=([-\d.]+)', line) + if match: + profit = float(match.group(1)) + profits.append(profit) + + if not profits: + return 0, 0, 0, 0, [] + + # 计算累计收益 + cumulative_returns = [] + cumulative = 0 + for profit in profits: + cumulative += profit + cumulative_returns.append(cumulative) + + # 计算最大回撤 + max_drawdown = 0 + max_drawdown_start = 0 + max_drawdown_end = 0 + peak = cumulative_returns[0] + + for i in range(1, len(cumulative_returns)): + if cumulative_returns[i] > peak: + peak = cumulative_returns[i] + else: + drawdown = peak - cumulative_returns[i] + if drawdown > max_drawdown: + max_drawdown = drawdown + max_drawdown_start = cumulative_returns.index(peak) + max_drawdown_end = i + + # 计算其他统计指标 + total_trades = len(profits) + winning_trades = len([p for p in profits if p > 0]) + losing_trades = len([p for p in profits if p < 0]) + win_rate = winning_trades / total_trades if total_trades > 0 else 0 + total_profit = sum(profits) + + return { + 'max_drawdown': max_drawdown, + 'max_drawdown_percentage': (max_drawdown / peak * 100) if peak != 0 else 0, + 'max_drawdown_period': (max_drawdown_start, max_drawdown_end), + 'total_trades': total_trades, + 'winning_trades': winning_trades, + 'losing_trades': losing_trades, + 'win_rate': win_rate, + 'total_profit': total_profit, + 'average_profit': total_profit / total_trades if total_trades > 0 else 0, + 'cumulative_returns': cumulative_returns, + 'individual_profits': profits } - # 请求 API 获取数据 - response = requests.get('https://capi.websea.com/webApi/market/getKline', params=params, headers=headers) - data = response.json()['result']['data'] - # 按 id 排序(保证时间顺序) - return sorted(data, key=lambda x: x['id']) -# ================= 辅助函数 ================= +def print_analysis_results(results): + """打印分析结果""" + print("=" * 60) + print("交易策略分析报告") + print("=" * 60) -def is_bullish(candle): - """判断是否是阳线(收盘价 > 开盘价)""" - return float(candle['close']) > float(candle['open']) + print(f"总交易次数: {results['total_trades']}") + print(f"盈利交易: {results['winning_trades']} 次") + print(f"亏损交易: {results['losing_trades']} 次") + print(f"胜率: {results['win_rate']:.2%}") + print(f"总盈利: {results['total_profit']:.2f} u") + print(f"平均每笔盈利: {results['average_profit']:.2f} u") + print("-" * 60) + print(f"最大回撤: {results['max_drawdown']:.2f} u") + print(f"最大回撤百分比: {results['max_drawdown_percentage']:.2f}%") + print(f"最大回撤期间: 第{results['max_drawdown_period'][0] + 1}笔到第{results['max_drawdown_period'][1] + 1}笔交易") + print("=" * 60) -def is_bearish(candle): - """判断是否是阴线(收盘价 < 开盘价)""" - return float(candle['close']) < float(candle['open']) +# 使用示例 +if __name__ == "__main__": + # 你的日志数据 + log_data = """2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-01号 做多(涨包跌) 入场=4473.89 出场=4471.89 出场时间=1756677600 差价=-2.00 盈利=-4.47 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-01号 做多(涨包跌) 入场=4393.76 出场=4391.76 出场时间=1756688400 差价=-2.00 盈利=-4.55 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-01号 做空(跌包涨) 入场=4391.39 出场=4393.39 出场时间=1756690200 差价=-2.00 盈利=-4.55 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-01号 做多(涨包跌) 入场=4406.72 出场=4404.72 出场时间=1756692000 差价=-2.00 盈利=-4.54 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-01号 做空(跌包涨) 入场=4386.45 出场=4388.45 出场时间=1756702800 差价=-2.00 盈利=-4.56 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-01号 做空(跌包涨) 入场=4372.44 出场=4374.44 出场时间=1756704600 差价=-2.00 盈利=-4.57 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-01号 做空(跌包涨) 入场=4395.14 出场=4397.14 出场时间=1756731600 差价=-2.00 盈利=-4.55 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-02号 做空(跌包涨) 入场=4353.46 出场=4323.46 出场时间=1756746900 差价=30.00 盈利=68.91 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-02号 做多(涨包跌) 入场=4337.84 出场=4335.84 出场时间=1756751400 差价=-2.00 盈利=-4.61 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-02号 做空(跌包涨) 入场=4358.37 出场=4328.37 出场时间=1756758600 差价=30.00 盈利=68.83 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-02号 做多(涨包跌) 入场=4282.50 出场=4312.50 出场时间=1756770300 差价=30.00 盈利=70.05 开仓手续费=5u 平仓手续费=5.04 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-02号 做多(涨包跌) 入场=4308.02 出场=4338.02 出场时间=1756777500 差价=30.00 盈利=69.64 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-02号 做空(跌包涨) 入场=4365.27 出场=4367.27 出场时间=1756786500 差价=-2.00 盈利=-4.58 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-02号 做空(跌包涨) 入场=4377.65 出场=4379.65 出场时间=1756791000 差价=-2.00 盈利=-4.57 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.537 | INFO | __main__::203 - 2025-09-02号 做多(涨包跌) 入场=4406.23 出场=4404.23 出场时间=1756796400 差价=-2.00 盈利=-4.54 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-02号 做空(跌包涨) 入场=4391.82 出场=4393.82 出场时间=1756798200 差价=-2.00 盈利=-4.55 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-02号 做多(涨包跌) 入场=4394.03 出场=4392.03 出场时间=1756802700 差价=-2.00 盈利=-4.55 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-02号 做空(跌包涨) 入场=4375.77 出场=4345.77 出场时间=1756813500 差价=30.00 盈利=68.56 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做空(跌包涨) 入场=4289.53 出场=4291.53 出场时间=1756834200 差价=-2.00 盈利=-4.66 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4307.73 出场=4305.73 出场时间=1756835100 差价=-2.00 盈利=-4.64 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4294.79 出场=4292.79 出场时间=1756840500 差价=-2.00 盈利=-4.66 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做空(跌包涨) 入场=4270.34 出场=4272.34 出场时间=1756841400 差价=-2.00 盈利=-4.68 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4294.49 出场=4324.49 出场时间=1756845000 差价=30.00 盈利=69.86 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4321.17 出场=4319.17 出场时间=1756848600 差价=-2.00 盈利=-4.63 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4326.20 出场=4324.20 出场时间=1756854000 差价=-2.00 盈利=-4.62 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4324.54 出场=4322.54 出场时间=1756858500 差价=-2.00 盈利=-4.62 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4325.25 出场=4323.25 出场时间=1756860300 差价=-2.00 盈利=-4.62 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4351.59 出场=4349.59 出场时间=1756867500 差价=-2.00 盈利=-4.60 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4332.70 出场=4330.70 出场时间=1756872900 差价=-2.00 盈利=-4.62 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做空(跌包涨) 入场=4369.68 出场=4371.68 出场时间=1756902600 差价=-2.00 盈利=-4.58 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做空(跌包涨) 入场=4350.48 出场=4352.48 出场时间=1756904400 差价=-2.00 盈利=-4.60 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-03号 做多(涨包跌) 入场=4468.99 出场=4466.99 出场时间=1756915200 差价=-2.00 盈利=-4.48 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.540 | INFO | __main__::203 - 2025-09-04号 做多(涨包跌) 入场=4464.26 出场=4462.26 出场时间=1756923300 差价=-2.00 盈利=-4.48 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做多(涨包跌) 入场=4463.76 出场=4461.76 出场时间=1756931400 差价=-2.00 盈利=-4.48 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做空(跌包涨) 入场=4446.52 出场=4448.52 出场时间=1756944000 差价=-2.00 盈利=-4.50 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做空(跌包涨) 入场=4458.54 出场=4428.54 出场时间=1756953000 差价=30.00 盈利=67.29 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做多(涨包跌) 入场=4403.16 出场=4401.16 出场时间=1756962000 差价=-2.00 盈利=-4.54 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做空(跌包涨) 入场=4366.90 出场=4368.90 出场时间=1756969200 差价=-2.00 盈利=-4.58 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做多(涨包跌) 入场=4368.87 出场=4366.87 出场时间=1756975500 差价=-2.00 盈利=-4.58 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做空(跌包涨) 入场=4373.44 出场=4375.44 出场时间=1756976400 差价=-2.00 盈利=-4.57 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做多(涨包跌) 入场=4379.92 出场=4377.92 出场时间=1756978200 差价=-2.00 盈利=-4.57 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做多(涨包跌) 入场=4420.13 出场=4418.13 出场时间=1756983600 差价=-2.00 盈利=-4.52 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做空(跌包涨) 入场=4405.24 出场=4407.24 出场时间=1756984500 差价=-2.00 盈利=-4.54 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-04号 做多(涨包跌) 入场=4423.63 出场=4421.63 出场时间=1756985400 差价=-2.00 盈利=-4.52 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-05号 做空(跌包涨) 入场=4277.44 出场=4279.44 出场时间=1757011500 差价=-2.00 盈利=-4.68 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-05号 做多(涨包跌) 入场=4294.38 出场=4324.38 出场时间=1757024100 差价=30.00 盈利=69.86 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-05号 做多(涨包跌) 入场=4339.47 出场=4337.47 出场时间=1757027700 差价=-2.00 盈利=-4.61 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-05号 做多(涨包跌) 入场=4312.49 出场=4342.49 出场时间=1757055600 差价=30.00 盈利=69.57 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.541 | INFO | __main__::203 - 2025-09-05号 做空(跌包涨) 入场=4415.58 出场=4417.58 出场时间=1757074500 差价=-2.00 盈利=-4.53 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-06号 做多(涨包跌) 入场=4329.37 出场=4327.37 出场时间=1757103300 差价=-2.00 盈利=-4.62 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-06号 做多(涨包跌) 入场=4314.71 出场=4312.71 出场时间=1757113200 差价=-2.00 盈利=-4.64 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-06号 做多(涨包跌) 入场=4310.52 出场=4308.52 出场时间=1757132100 差价=-2.00 盈利=-4.64 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-06号 做空(跌包涨) 入场=4305.11 出场=4307.11 出场时间=1757147400 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-06号 做多(涨包跌) 入场=4296.53 出场=4294.53 出场时间=1757152800 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-06号 做空(跌包涨) 入场=4291.14 出场=4293.14 出场时间=1757153700 差价=-2.00 盈利=-4.66 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-06号 做多(涨包跌) 入场=4297.53 出场=4295.53 出场时间=1757165400 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-06号 做空(跌包涨) 入场=4294.23 出场=4264.23 出场时间=1757173500 差价=30.00 盈利=69.86 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-07号 做多(涨包跌) 入场=4276.84 出场=4274.84 出场时间=1757186100 差价=-2.00 盈利=-4.68 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-07号 做多(涨包跌) 入场=4300.96 出场=4298.96 出场时间=1757216700 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-07号 做空(跌包涨) 入场=4288.89 出场=4290.89 出场时间=1757226600 差价=-2.00 盈利=-4.66 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-07号 做多(涨包跌) 入场=4299.99 出场=4297.99 出场时间=1757236500 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-07号 做空(跌包涨) 入场=4299.17 出场=4301.17 出场时间=1757239200 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-07号 做空(跌包涨) 入场=4301.95 出场=4303.95 出场时间=1757245500 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-07号 做空(跌包涨) 入场=4298.13 出场=4300.13 出场时间=1757248200 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-07号 做多(涨包跌) 入场=4309.18 出场=4307.18 出场时间=1757257200 差价=-2.00 盈利=-4.64 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.542 | INFO | __main__::203 - 2025-09-07号 做多(涨包跌) 入场=4298.15 出场=4296.15 出场时间=1757259900 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-08号 做多(涨包跌) 入场=4281.15 出场=4279.15 出场时间=1757268000 差价=-2.00 盈利=-4.67 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-08号 做多(涨包跌) 入场=4295.00 出场=4293.00 出场时间=1757284200 差价=-2.00 盈利=-4.66 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-08号 做多(涨包跌) 入场=4308.00 出场=4306.00 出场时间=1757288700 差价=-2.00 盈利=-4.64 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-08号 做多(涨包跌) 入场=4314.79 出场=4312.79 出场时间=1757292300 差价=-2.00 盈利=-4.64 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-08号 做空(跌包涨) 入场=4287.74 出场=4289.74 出场时间=1757311200 差价=-2.00 盈利=-4.66 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-08号 做多(涨包跌) 入场=4299.91 出场=4297.91 出场时间=1757313900 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-08号 做空(跌包涨) 入场=4327.20 出场=4329.20 出场时间=1757336400 差价=-2.00 盈利=-4.62 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-09号 做多(涨包跌) 入场=4327.65 出场=4325.65 出场时间=1757358900 差价=-2.00 盈利=-4.62 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-09号 做空(跌包涨) 入场=4312.94 出场=4282.94 出场时间=1757359800 差价=30.00 盈利=69.56 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-09号 做空(跌包涨) 入场=4298.59 出场=4300.59 出场时间=1757378700 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-09号 做多(涨包跌) 入场=4299.78 出场=4297.78 出场时间=1757380500 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-09号 做空(跌包涨) 入场=4296.12 出场=4298.12 出场时间=1757387700 差价=-2.00 盈利=-4.66 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-09号 做多(涨包跌) 入场=4311.54 出场=4309.54 出场时间=1757394900 差价=-2.00 盈利=-4.64 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-09号 做多(涨包跌) 入场=4355.07 出场=4353.07 出场时间=1757421000 差价=-2.00 盈利=-4.59 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-09号 做空(跌包涨) 入场=4347.42 出场=4349.42 出场时间=1757424600 差价=-2.00 盈利=-4.60 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做多(涨包跌) 入场=4288.33 出场=4286.33 出场时间=1757443500 差价=-2.00 盈利=-4.66 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做空(跌包涨) 入场=4297.72 出场=4299.72 出场时间=1757454300 差价=-2.00 盈利=-4.65 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做多(涨包跌) 入场=4313.29 出场=4311.29 出场时间=1757458800 差价=-2.00 盈利=-4.64 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做多(涨包跌) 入场=4311.67 出场=4309.67 出场时间=1757473200 差价=-2.00 盈利=-4.64 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做空(跌包涨) 入场=4315.93 出场=4317.93 出场时间=1757474100 差价=-2.00 盈利=-4.63 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做多(涨包跌) 入场=4308.22 出场=4338.22 出场时间=1757506500 差价=30.00 盈利=69.63 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做多(涨包跌) 入场=4317.36 出场=4315.36 出场时间=1757494800 差价=-2.00 盈利=-4.63 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做空(跌包涨) 入场=4316.57 出场=4318.57 出场时间=1757496600 差价=-2.00 盈利=-4.63 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做多(涨包跌) 入场=4327.65 出场=4325.65 出场时间=1757501100 差价=-2.00 盈利=-4.62 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做多(涨包跌) 入场=4329.55 出场=4359.55 出场时间=1757507400 差价=30.00 盈利=69.29 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做多(涨包跌) 入场=4382.96 出场=4380.96 出场时间=1757511000 差价=-2.00 盈利=-4.56 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-10号 做多(涨包跌) 入场=4421.52 出场=4419.52 出场时间=1757518200 差价=-2.00 盈利=-4.52 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-11号 做多(涨包跌) 入场=4346.92 出场=4344.92 出场时间=1757542500 差价=-2.00 盈利=-4.60 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-11号 做空(跌包涨) 入场=4336.99 出场=4338.99 出场时间=1757550600 差价=-2.00 盈利=-4.61 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-11号 做多(涨包跌) 入场=4357.63 出场=4387.63 出场时间=1757560500 差价=30.00 盈利=68.84 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-11号 做多(涨包跌) 入场=4402.02 出场=4400.02 出场时间=1757567700 差价=-2.00 盈利=-4.54 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-11号 做空(跌包涨) 入场=4391.29 出场=4393.29 出场时间=1757597400 差价=-2.00 盈利=-4.55 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-12号 做空(跌包涨) 入场=4422.34 出场=4424.34 出场时间=1757622600 差价=-2.00 盈利=-4.52 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-12号 做多(涨包跌) 入场=4461.86 出场=4491.86 出场时间=1757637900 差价=30.00 盈利=67.24 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-12号 做多(涨包跌) 入场=4503.75 出场=4533.75 出场时间=1757655900 差价=30.00 盈利=66.61 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.544 | INFO | __main__::203 - 2025-09-12号 做多(涨包跌) 入场=4544.59 出场=4542.59 出场时间=1757662200 差价=-2.00 盈利=-4.40 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-12号 做空(跌包涨) 入场=4516.28 出场=4518.28 出场时间=1757670300 差价=-2.00 盈利=-4.43 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-12号 做空(跌包涨) 入场=4509.88 出场=4511.88 出场时间=1757673900 差价=-2.00 盈利=-4.43 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-12号 做多(涨包跌) 入场=4524.93 出场=4522.93 出场时间=1757682900 差价=-2.00 盈利=-4.42 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-12号 做多(涨包跌) 入场=4538.25 出场=4568.25 出场时间=1757686500 差价=30.00 盈利=66.10 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-12号 做空(跌包涨) 入场=4523.53 出场=4525.53 出场时间=1757689200 差价=-2.00 盈利=-4.42 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-12号 做多(涨包跌) 入场=4539.47 出场=4537.47 出场时间=1757692800 差价=-2.00 盈利=-4.41 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做多(涨包跌) 入场=4573.66 出场=4571.66 出场时间=1757697300 差价=-2.00 盈利=-4.37 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做多(涨包跌) 入场=4612.89 出场=4610.89 出场时间=1757702700 差价=-2.00 盈利=-4.34 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做多(涨包跌) 入场=4705.43 出场=4703.43 出场时间=1757720700 差价=-2.00 盈利=-4.25 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做多(涨包跌) 入场=4710.88 出场=4708.88 出场时间=1757722500 差价=-2.00 盈利=-4.25 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做多(涨包跌) 入场=4711.68 出场=4741.68 出场时间=1757734200 差价=30.00 盈利=63.67 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做空(跌包涨) 入场=4736.99 出场=4738.99 出场时间=1757737800 差价=-2.00 盈利=-4.22 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做多(涨包跌) 入场=4745.30 出场=4743.30 出场时间=1757739600 差价=-2.00 盈利=-4.21 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做多(涨包跌) 入场=4727.14 出场=4725.14 出场时间=1757745000 差价=-2.00 盈利=-4.23 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做空(跌包涨) 入场=4713.59 出场=4715.59 出场时间=1757747700 差价=-2.00 盈利=-4.24 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.545 | INFO | __main__::203 - 2025-09-13号 做多(涨包跌) 入场=4716.72 出场=4714.72 出场时间=1757759400 差价=-2.00 盈利=-4.24 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-13号 做多(涨包跌) 入场=4722.36 出场=4720.36 出场时间=1757754900 差价=-2.00 盈利=-4.24 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-13号 做空(跌包涨) 入场=4679.55 出场=4649.55 出场时间=1757778300 差价=30.00 盈利=64.11 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做空(跌包涨) 入场=4636.38 出场=4638.38 出场时间=1757794500 差价=-2.00 盈利=-4.31 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做多(涨包跌) 入场=4655.91 出场=4653.91 出场时间=1757801700 差价=-2.00 盈利=-4.30 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做多(涨包跌) 入场=4656.59 出场=4654.59 出场时间=1757806200 差价=-2.00 盈利=-4.29 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做多(涨包跌) 入场=4665.35 出场=4663.35 出场时间=1757810700 差价=-2.00 盈利=-4.29 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做空(跌包涨) 入场=4653.94 出场=4655.94 出场时间=1757813400 差价=-2.00 盈利=-4.30 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做空(跌包涨) 入场=4660.68 出场=4662.68 出场时间=1757833200 差价=-2.00 盈利=-4.29 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做空(跌包涨) 入场=4659.87 出场=4661.87 出场时间=1757835000 差价=-2.00 盈利=-4.29 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做空(跌包涨) 入场=4658.33 出场=4660.33 出场时间=1757838600 差价=-2.00 盈利=-4.29 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做空(跌包涨) 入场=4654.18 出场=4656.18 出场时间=1757841300 差价=-2.00 盈利=-4.30 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做空(跌包涨) 入场=4638.94 出场=4640.94 出场时间=1757852100 差价=-2.00 盈利=-4.31 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-14号 做空(跌包涨) 入场=4611.10 出场=4613.10 出场时间=1757859300 差价=-2.00 盈利=-4.34 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-15号 做空(跌包涨) 入场=4614.31 出场=4616.31 出场时间=1757880900 差价=-2.00 盈利=-4.33 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-15号 做多(涨包跌) 入场=4625.02 出场=4623.02 出场时间=1757881800 差价=-2.00 盈利=-4.32 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-15号 做多(涨包跌) 入场=4633.11 出场=4631.11 出场时间=1757887200 差价=-2.00 盈利=-4.32 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.547 | INFO | __main__::203 - 2025-09-15号 做多(涨包跌) 入场=4613.11 出场=4611.11 出场时间=1757897100 差价=-2.00 盈利=-4.34 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-15号 做多(涨包跌) 入场=4648.63 出场=4646.63 出场时间=1757917800 差价=-2.00 盈利=-4.30 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-15号 做空(跌包涨) 入场=4649.44 出场=4619.44 出场时间=1757918700 差价=30.00 盈利=64.52 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-15号 做空(跌包涨) 入场=4512.58 出场=4514.58 出场时间=1757942100 差价=-2.00 盈利=-4.43 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-15号 做空(跌包涨) 入场=4495.43 出场=4497.43 出场时间=1757944800 差价=-2.00 盈利=-4.45 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-15号 做多(涨包跌) 入场=4525.94 出场=4523.94 出场时间=1757947500 差价=-2.00 盈利=-4.42 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-16号 做空(跌包涨) 入场=4490.79 出场=4492.79 出场时间=1757954700 差价=-2.00 盈利=-4.45 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-16号 做多(涨包跌) 入场=4509.17 出场=4507.17 出场时间=1757955600 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-16号 做空(跌包涨) 入场=4492.05 出场=4494.05 出场时间=1757961000 差价=-2.00 盈利=-4.45 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-16号 做空(跌包涨) 入场=4504.03 出场=4506.03 出场时间=1758007800 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-16号 做多(涨包跌) 入场=4509.40 出场=4507.40 出场时间=1758017700 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-16号 做多(涨包跌) 入场=4499.52 出场=4497.52 出场时间=1758027600 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-16号 做空(跌包涨) 入场=4452.65 出场=4422.65 出场时间=1758031200 差价=30.00 盈利=67.38 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-16号 做空(跌包涨) 入场=4432.67 出场=4434.67 出场时间=1758033000 差价=-2.00 盈利=-4.51 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-16号 做空(跌包涨) 入场=4431.47 出场=4433.47 出场时间=1758036600 差价=-2.00 盈利=-4.51 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-17号 做空(跌包涨) 入场=4456.89 出场=4458.89 出场时间=1758042000 差价=-2.00 盈利=-4.49 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-17号 做空(跌包涨) 入场=4505.66 出场=4507.66 出场时间=1758062700 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.548 | INFO | __main__::203 - 2025-09-17号 做多(涨包跌) 入场=4509.71 出场=4507.71 出场时间=1758069900 差价=-2.00 盈利=-4.43 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做多(涨包跌) 入场=4514.77 出场=4512.77 出场时间=1758073500 差价=-2.00 盈利=-4.43 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做空(跌包涨) 入场=4504.68 出场=4506.68 出场时间=1758074400 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做多(涨包跌) 入场=4514.08 出场=4544.08 出场时间=1758077100 差价=30.00 盈利=66.46 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做多(涨包跌) 入场=4484.33 出场=4482.33 出场时间=1758087000 差价=-2.00 盈利=-4.46 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做多(涨包跌) 入场=4488.62 出场=4518.62 出场时间=1758089700 差价=30.00 盈利=66.84 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做多(涨包跌) 入场=4542.19 出场=4540.19 出场时间=1758096900 差价=-2.00 盈利=-4.40 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做多(涨包跌) 入场=4509.28 出场=4507.28 出场时间=1758100500 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做空(跌包涨) 入场=4501.62 出场=4503.62 出场时间=1758111300 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做多(涨包跌) 入场=4487.46 出场=4485.46 出场时间=1758110400 差价=-2.00 盈利=-4.46 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做空(跌包涨) 入场=4488.34 出场=4490.34 出场时间=1758112200 差价=-2.00 盈利=-4.46 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-17号 做多(涨包跌) 入场=4504.61 出场=4502.61 出场时间=1758113100 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-18号 做空(跌包涨) 入场=4479.74 出场=4481.74 出场时间=1758130200 差价=-2.00 盈利=-4.46 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-18号 做多(涨包跌) 入场=4515.40 出场=4545.40 出场时间=1758146400 差价=30.00 盈利=66.44 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-18号 做多(涨包跌) 入场=4588.30 出场=4586.30 出场时间=1758156300 差价=-2.00 盈利=-4.36 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-18号 做空(跌包涨) 入场=4582.77 出场=4584.77 出场时间=1758158100 差价=-2.00 盈利=-4.36 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-18号 做空(跌包涨) 入场=4605.80 出场=4607.80 出场时间=1758170700 差价=-2.00 盈利=-4.34 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.550 | INFO | __main__::203 - 2025-09-18号 做多(涨包跌) 入场=4566.39 出场=4596.39 出场时间=1758184200 差价=30.00 盈利=65.70 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-18号 做空(跌包涨) 入场=4573.06 出场=4575.06 出场时间=1758183300 差价=-2.00 盈利=-4.37 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-18号 做空(跌包涨) 入场=4590.38 出场=4592.38 出场时间=1758189600 差价=-2.00 盈利=-4.36 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-18号 做多(涨包跌) 入场=4579.52 出场=4577.52 出场时间=1758195000 差价=-2.00 盈利=-4.37 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-18号 做多(涨包跌) 入场=4579.26 出场=4577.26 出场时间=1758202200 差价=-2.00 盈利=-4.37 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-18号 做多(涨包跌) 入场=4586.05 出场=4616.05 出场时间=1758204900 差价=30.00 盈利=65.42 开仓手续费=5u 平仓手续费=5.03 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-18号 做空(跌包涨) 入场=4597.81 出场=4599.81 出场时间=1758207600 差价=-2.00 盈利=-4.35 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做空(跌包涨) 入场=4604.49 出场=4574.49 出场时间=1758236400 差价=30.00 盈利=65.15 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做空(跌包涨) 入场=4586.19 出场=4588.19 出场时间=1758226500 差价=-2.00 盈利=-4.36 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做多(涨包跌) 入场=4600.81 出场=4598.81 出场时间=1758229200 差价=-2.00 盈利=-4.35 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做多(涨包跌) 入场=4593.23 出场=4591.23 出场时间=1758235500 差价=-2.00 盈利=-4.35 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做空(跌包涨) 入场=4589.06 出场=4591.06 出场时间=1758240000 差价=-2.00 盈利=-4.36 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做空(跌包涨) 入场=4575.91 出场=4545.91 出场时间=1758253500 差价=30.00 盈利=65.56 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做空(跌包涨) 入场=4531.36 出场=4533.36 出场时间=1758263400 差价=-2.00 盈利=-4.41 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做多(涨包跌) 入场=4540.41 出场=4538.41 出场时间=1758270600 差价=-2.00 盈利=-4.40 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做多(涨包跌) 入场=4529.15 出场=4527.15 出场时间=1758279600 差价=-2.00 盈利=-4.42 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.552 | INFO | __main__::203 - 2025-09-19号 做空(跌包涨) 入场=4511.11 出场=4513.11 出场时间=1758285900 差价=-2.00 盈利=-4.43 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-19号 做多(涨包跌) 入场=4525.80 出场=4523.80 出场时间=1758292200 差价=-2.00 盈利=-4.42 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做空(跌包涨) 入场=4478.92 出场=4448.92 出场时间=1758304800 差价=30.00 盈利=66.98 开仓手续费=5u 平仓手续费=4.97 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做空(跌包涨) 入场=4446.67 出场=4448.67 出场时间=1758309300 差价=-2.00 盈利=-4.50 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做多(涨包跌) 入场=4457.41 出场=4455.41 出场时间=1758310200 差价=-2.00 盈利=-4.49 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做空(跌包涨) 入场=4450.16 出场=4452.16 出场时间=1758312000 差价=-2.00 盈利=-4.49 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做空(跌包涨) 入场=4464.25 出场=4466.25 出场时间=1758331800 差价=-2.00 盈利=-4.48 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做空(跌包涨) 入场=4462.98 出场=4464.98 出场时间=1758343500 差价=-2.00 盈利=-4.48 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做多(涨包跌) 入场=4473.81 出场=4471.81 出场时间=1758357900 差价=-2.00 盈利=-4.47 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做多(涨包跌) 入场=4475.08 出场=4473.08 出场时间=1758358800 差价=-2.00 盈利=-4.47 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做空(跌包涨) 入场=4463.10 出场=4465.10 出场时间=1758359700 差价=-2.00 盈利=-4.48 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-20号 做多(涨包跌) 入场=4467.10 出场=4465.10 出场时间=1758376800 差价=-2.00 盈利=-4.48 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-21号 做多(涨包跌) 入场=4497.46 出场=4495.46 出场时间=1758385800 差价=-2.00 盈利=-4.45 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-21号 做多(涨包跌) 入场=4501.98 出场=4499.98 出场时间=1758387600 差价=-2.00 盈利=-4.44 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.553 | INFO | __main__::203 - 2025-09-21号 做多(涨包跌) 入场=4481.03 出场=4479.03 出场时间=1758418200 差价=-2.00 盈利=-4.46 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-21号 做多(涨包跌) 入场=4476.19 出场=4474.19 出场时间=1758428100 差价=-2.00 盈利=-4.47 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-21号 做多(涨包跌) 入场=4489.61 出场=4487.61 出场时间=1758438000 差价=-2.00 盈利=-4.45 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-21号 做空(跌包涨) 入场=4458.35 出场=4460.35 出场时间=1758456900 差价=-2.00 盈利=-4.49 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-21号 做多(涨包跌) 入场=4463.11 出场=4461.11 出场时间=1758458700 差价=-2.00 盈利=-4.48 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-21号 做空(跌包涨) 入场=4463.11 出场=4465.11 出场时间=1758459600 差价=-2.00 盈利=-4.48 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-21号 做空(跌包涨) 入场=4473.53 出场=4475.53 出场时间=1758465900 差价=-2.00 盈利=-4.47 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-21号 做多(涨包跌) 入场=4480.92 出场=4478.92 出场时间=1758468600 差价=-2.00 盈利=-4.46 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-22号 做多(涨包跌) 入场=4490.50 出场=4488.50 出场时间=1758481200 差价=-2.00 盈利=-4.45 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-22号 做空(跌包涨) 入场=4292.37 出场=4294.37 出场时间=1758513600 差价=-2.00 盈利=-4.66 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-22号 做空(跌包涨) 入场=4191.34 出场=4193.34 出场时间=1758528900 差价=-2.00 盈利=-4.77 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-22号 做多(涨包跌) 入场=4198.11 出场=4196.11 出场时间=1758531600 差价=-2.00 盈利=-4.76 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-22号 做多(涨包跌) 入场=4180.00 出场=4178.00 出场时间=1758539700 差价=-2.00 盈利=-4.78 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-22号 做多(涨包跌) 入场=4180.81 出场=4178.81 出场时间=1758542400 差价=-2.00 盈利=-4.78 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-22号 做多(涨包跌) 入场=4205.64 出场=4203.64 出场时间=1758550500 差价=-2.00 盈利=-4.76 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.554 | INFO | __main__::203 - 2025-09-22号 做空(跌包涨) 入场=4169.20 出场=4171.20 出场时间=1758556800 差价=-2.00 盈利=-4.80 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.555 | INFO | __main__::203 - 2025-09-23号 做多(涨包跌) 入场=4171.17 出场=4169.17 出场时间=1758565800 差价=-2.00 盈利=-4.79 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.555 | INFO | __main__::203 - 2025-09-23号 做空(跌包涨) 入场=4194.16 出场=4196.16 出场时间=1758590100 差价=-2.00 盈利=-4.77 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.555 | INFO | __main__::203 - 2025-09-23号 做多(涨包跌) 入场=4195.72 出场=4193.72 出场时间=1758591900 差价=-2.00 盈利=-4.77 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.555 | INFO | __main__::203 - 2025-09-23号 做多(涨包跌) 入场=4175.20 出场=4173.20 出场时间=1758600900 差价=-2.00 盈利=-4.79 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.555 | INFO | __main__::203 - 2025-09-23号 做多(涨包跌) 入场=4192.98 出场=4222.98 出场时间=1758618000 差价=30.00 盈利=71.55 开仓手续费=5u 平仓手续费=5.04 +2025-10-09 17:07:20.555 | INFO | __main__::203 - 2025-09-23号 做多(涨包跌) 入场=4205.95 出场=4203.95 出场时间=1758614400 差价=-2.00 盈利=-4.76 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.555 | INFO | __main__::203 - 2025-09-23号 做空(跌包涨) 入场=4202.18 出场=4204.18 出场时间=1758634200 差价=-2.00 盈利=-4.76 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.555 | INFO | __main__::203 - 2025-09-23号 做空(跌包涨) 入场=4188.97 出场=4190.97 出场时间=1758624300 差价=-2.00 盈利=-4.77 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-23号 做空(跌包涨) 入场=4182.03 出场=4184.03 出场时间=1758627000 差价=-2.00 盈利=-4.78 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-23号 做多(涨包跌) 入场=4193.37 出场=4191.37 出场时间=1758630600 差价=-2.00 盈利=-4.77 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-23号 做多(涨包跌) 入场=4196.04 出场=4194.04 出场时间=1758632400 差价=-2.00 盈利=-4.77 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-23号 做多(涨包跌) 入场=4193.46 出场=4191.46 出场时间=1758635100 差价=-2.00 盈利=-4.77 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-23号 做空(跌包涨) 入场=4172.60 出场=4174.60 出场时间=1758640500 差价=-2.00 盈利=-4.79 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-24号 做空(跌包涨) 入场=4155.55 出场=4157.55 出场时间=1758657600 差价=-2.00 盈利=-4.81 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-24号 做多(涨包跌) 入场=4157.98 出场=4155.98 出场时间=1758659400 差价=-2.00 盈利=-4.81 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-24号 做空(跌包涨) 入场=4149.58 出场=4151.58 出场时间=1758660300 差价=-2.00 盈利=-4.82 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-24号 做多(涨包跌) 入场=4163.67 出场=4161.67 出场时间=1758669300 差价=-2.00 盈利=-4.80 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-24号 做多(涨包跌) 入场=4182.29 出场=4180.29 出场时间=1758668400 差价=-2.00 盈利=-4.78 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.556 | INFO | __main__::203 - 2025-09-24号 做多(涨包跌) 入场=4182.22 出场=4180.22 出场时间=1758679200 差价=-2.00 盈利=-4.78 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.557 | INFO | __main__::203 - 2025-09-24号 做空(跌包涨) 入场=4168.33 出场=4170.33 出场时间=1758703500 差价=-2.00 盈利=-4.80 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.557 | INFO | __main__::203 - 2025-09-25号 做多(涨包跌) 入场=4167.78 出场=4165.78 出场时间=1758733200 差价=-2.00 盈利=-4.80 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.557 | INFO | __main__::203 - 2025-09-25号 做空(跌包涨) 入场=4136.98 出场=4138.98 出场时间=1758761100 差价=-2.00 盈利=-4.83 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.557 | INFO | __main__::203 - 2025-09-25号 做空(跌包涨) 入场=4126.64 出场=4096.64 出场时间=1758763800 差价=30.00 盈利=72.70 开仓手续费=5u 平仓手续费=4.96 +2025-10-09 17:07:20.557 | INFO | __main__::203 - 2025-09-25号 做多(涨包跌) 入场=4099.29 出场=4097.29 出场时间=1758769200 差价=-2.00 盈利=-4.88 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.557 | INFO | __main__::203 - 2025-09-25号 做空(跌包涨) 入场=4006.85 出场=4008.85 出场时间=1758788100 差价=-2.00 盈利=-4.99 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.557 | INFO | __main__::203 - 2025-09-26号 做空(跌包涨) 入场=3996.44 出场=3966.44 出场时间=1758817800 差价=30.00 盈利=75.07 开仓手续费=5u 平仓手续费=4.96 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做多(涨包跌) 入场=3941.93 出场=3971.93 出场时间=1758860100 差价=30.00 盈利=76.10 开仓手续费=5u 平仓手续费=5.04 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做多(涨包跌) 入场=3957.78 出场=3955.78 出场时间=1758855600 差价=-2.00 盈利=-5.05 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做空(跌包涨) 入场=3954.18 出场=3956.18 出场时间=1758858300 差价=-2.00 盈利=-5.06 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做空(跌包涨) 入场=3942.70 出场=3912.70 出场时间=1758866400 差价=30.00 盈利=76.09 开仓手续费=5u 平仓手续费=4.96 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做多(涨包跌) 入场=3936.72 出场=3934.72 出场时间=1758874500 差价=-2.00 盈利=-5.08 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做多(涨包跌) 入场=3938.30 出场=3936.30 出场时间=1758877200 差价=-2.00 盈利=-5.08 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做空(跌包涨) 入场=3932.34 出场=3934.34 出场时间=1758878100 差价=-2.00 盈利=-5.09 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做空(跌包涨) 入场=3925.27 出场=3895.27 出场时间=1758880800 差价=30.00 盈利=76.43 开仓手续费=5u 平仓手续费=4.96 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做空(跌包涨) 入场=3885.37 出场=3887.37 出场时间=1758882600 差价=-2.00 盈利=-5.15 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做多(涨包跌) 入场=3889.10 出场=3887.10 出场时间=1758888000 差价=-2.00 盈利=-5.14 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-26号 做空(跌包涨) 入场=3929.40 出场=3931.40 出场时间=1758899700 差价=-2.00 盈利=-5.09 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-27号 做多(涨包跌) 入场=3962.44 出场=3992.44 出场时间=1758906000 差价=30.00 盈利=75.71 开仓手续费=5u 平仓手续费=5.04 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-27号 做空(跌包涨) 入场=4040.19 出场=4042.19 出场时间=1758913200 差价=-2.00 盈利=-4.95 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-27号 做多(涨包跌) 入场=4014.73 出场=4012.73 出场时间=1758922200 差价=-2.00 盈利=-4.98 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-27号 做空(跌包涨) 入场=4024.47 出场=4026.47 出场时间=1758929400 差价=-2.00 盈利=-4.97 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-27号 做空(跌包涨) 入场=4020.16 出场=4022.16 出场时间=1758934800 差价=-2.00 盈利=-4.97 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.558 | INFO | __main__::203 - 2025-09-27号 做多(涨包跌) 入场=4021.02 出场=4019.02 出场时间=1758944700 差价=-2.00 盈利=-4.97 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.559 | INFO | __main__::203 - 2025-09-27号 做多(涨包跌) 入场=4017.62 出场=4015.62 出场时间=1758952800 差价=-2.00 盈利=-4.98 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.559 | INFO | __main__::203 - 2025-09-27号 做空(跌包涨) 入场=4013.06 出场=4015.06 出场时间=1758955500 差价=-2.00 盈利=-4.98 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.559 | INFO | __main__::203 - 2025-09-27号 做多(涨包跌) 入场=4014.17 出场=4012.17 出场时间=1758957300 差价=-2.00 盈利=-4.98 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.559 | INFO | __main__::203 - 2025-09-27号 做多(涨包跌) 入场=4011.06 出场=4009.06 出场时间=1758973500 差价=-2.00 盈利=-4.99 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.559 | INFO | __main__::203 - 2025-09-27号 做空(跌包涨) 入场=4003.02 出场=4005.02 出场时间=1758976200 差价=-2.00 盈利=-5.00 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.559 | INFO | __main__::203 - 2025-09-28号 做空(跌包涨) 入场=4010.05 出场=4012.05 出场时间=1758990600 差价=-2.00 盈利=-4.99 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.559 | INFO | __main__::203 - 2025-09-28号 做多(涨包跌) 入场=3994.31 出场=3992.31 出场时间=1758996000 差价=-2.00 盈利=-5.01 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.559 | INFO | __main__::203 - 2025-09-28号 做多(涨包跌) 入场=3997.65 出场=3995.65 出场时间=1759002300 差价=-2.00 盈利=-5.00 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-28号 做空(跌包涨) 入场=4017.87 出场=4019.87 出场时间=1759014000 差价=-2.00 盈利=-4.98 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-28号 做多(涨包跌) 入场=4019.97 出场=4017.97 出场时间=1759070700 差价=-2.00 盈利=-4.98 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做多(涨包跌) 入场=4031.50 出场=4029.50 出场时间=1759079700 差价=-2.00 盈利=-4.96 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做多(涨包跌) 入场=4043.59 出场=4041.59 出场时间=1759082400 差价=-2.00 盈利=-4.95 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做多(涨包跌) 入场=4046.53 出场=4044.53 出场时间=1759095000 差价=-2.00 盈利=-4.94 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做空(跌包涨) 入场=4126.21 出场=4128.21 出场时间=1759107600 差价=-2.00 盈利=-4.85 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做多(涨包跌) 入场=4131.65 出场=4129.65 出场时间=1759109400 差价=-2.00 盈利=-4.84 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做空(跌包涨) 入场=4107.23 出场=4109.23 出场时间=1759114800 差价=-2.00 盈利=-4.87 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做空(跌包涨) 入场=4102.61 出场=4104.61 出场时间=1759116600 差价=-2.00 盈利=-4.87 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做多(涨包跌) 入场=4119.60 出场=4117.60 出场时间=1759119300 差价=-2.00 盈利=-4.85 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做多(涨包跌) 入场=4109.84 出场=4107.84 出场时间=1759125600 差价=-2.00 盈利=-4.87 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做空(跌包涨) 入场=4097.93 出场=4099.93 出场时间=1759127400 差价=-2.00 盈利=-4.88 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做空(跌包涨) 入场=4095.66 出场=4097.66 出场时间=1759131000 差价=-2.00 盈利=-4.88 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做空(跌包涨) 入场=4100.79 出场=4102.79 出场时间=1759148100 差价=-2.00 盈利=-4.88 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做空(跌包涨) 入场=4102.21 出场=4104.21 出场时间=1759150800 差价=-2.00 盈利=-4.88 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.560 | INFO | __main__::203 - 2025-09-29号 做多(涨包跌) 入场=4102.88 出场=4132.88 出场时间=1759152600 差价=30.00 盈利=73.12 开仓手续费=5u 平仓手续费=5.04 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-29号 做多(涨包跌) 入场=4190.00 出场=4188.00 出场时间=1759158000 差价=-2.00 盈利=-4.77 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做多(涨包跌) 入场=4153.21 出场=4151.21 出场时间=1759169700 差价=-2.00 盈利=-4.82 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做多(涨包跌) 入场=4180.24 出场=4210.24 出场时间=1759177800 差价=30.00 盈利=71.77 开仓手续费=5u 平仓手续费=5.04 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做多(涨包跌) 入场=4224.17 出场=4222.17 出场时间=1759187700 差价=-2.00 盈利=-4.73 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做空(跌包涨) 入场=4198.99 出场=4200.99 出场时间=1759199400 差价=-2.00 盈利=-4.76 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做多(涨包跌) 入场=4202.00 出场=4200.00 出场时间=1759201200 差价=-2.00 盈利=-4.76 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做多(涨包跌) 入场=4199.63 出场=4197.63 出场时间=1759203900 差价=-2.00 盈利=-4.76 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做空(跌包涨) 入场=4188.06 出场=4190.06 出场时间=1759216500 差价=-2.00 盈利=-4.78 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做多(涨包跌) 入场=4168.93 出场=4166.93 出场时间=1759225500 差价=-2.00 盈利=-4.80 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做空(跌包涨) 入场=4153.01 出场=4155.01 出场时间=1759231800 差价=-2.00 盈利=-4.82 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做多(涨包跌) 入场=4165.46 出场=4163.46 出场时间=1759236300 差价=-2.00 盈利=-4.80 开仓手续费=5u 平仓手续费=5.00 +2025-10-09 17:07:20.561 | INFO | __main__::203 - 2025-09-30号 做空(跌包涨) 入场=4116.00 出场=4118.00 出场时间=1759247100 差价=-2.00 盈利=-4.86 开仓手续费=5u 平仓手续费=5.00 + """ # 这里放入你提供的完整日志数据 + # 计算最大回撤 + results = calculate_max_drawdown(log_data) -def check_signal(prev, curr): - """ - 判断是否出现反包形态: - 1. 前一根阴线,后一根阳线,并且阳线包住前一根阴线 -> 做多信号 - 2. 前一根阳线,后一根阴线,并且阴线包住前一根阳线 -> 做空信号 - """ - p_open, p_close = float(prev['open']), float(prev['close']) - c_open, c_close = float(curr['open']), float(curr['close']) + # 打印结果 + print_analysis_results(results) - # 情况1:前阴后阳,且阳线包住前阴 - if is_bullish(curr) and is_bearish(prev): - if c_open < p_close and c_close > p_open: - return "long" + # 可选:绘制累计收益曲线(需要matplotlib) + try: + import matplotlib.pyplot as plt - # 情况2:前阳后阴,且阴线包住前阳 - if is_bearish(curr) and is_bullish(prev): - if c_open > p_close and c_close < p_open: - return "short" + plt.figure(figsize=(12, 6)) + plt.plot(results['cumulative_returns'], label='累计收益', linewidth=2) + plt.axhline(y=0, color='r', linestyle='--', alpha=0.7, label='盈亏平衡线') - return None + # 标记最大回撤区间 + start_idx, end_idx = results['max_drawdown_period'] + plt.axvspan(start_idx, end_idx, alpha=0.3, color='red', label='最大回撤区间') + plt.title('交易策略表现 - 累计收益曲线') + plt.xlabel('交易次数') + plt.ylabel('累计收益 (u)') + plt.legend() + plt.grid(True, alpha=0.3) + plt.tight_layout() + plt.show() -def simulate_trade(direction, entry_price, future_candles, capital=10000, take_profit_ratio=5, - stop_loss_ratio=-2): - """ - 模拟交易(逐根K线回测) - 使用资金金额来控制止盈止损: - - 盈利达到 capital * take_profit_ratio 就止盈 - - 亏损达到 capital * stop_loss_ratio 就止损 - """ - - for candle in future_candles: - high, low, close = float(candle['high']), float(candle['low']), float(candle['close']) - - if direction == "long": - if high - entry_price >= take_profit_ratio: - return high, take_profit_ratio, candle['id'] # 止盈 - if low - entry_price <= stop_loss_ratio: - return low, stop_loss_ratio, candle['id'] # 止损 - - elif direction == "short": - if entry_price - low >= take_profit_ratio: - return high, take_profit_ratio, candle['id'] # 止盈 - if entry_price - low <= stop_loss_ratio: - return low, stop_loss_ratio, candle['id'] # 止损 - - # 如果未来都没触发,最后一根收盘平仓 - final_price = float(future_candles[-1]['close']) - if direction == "long": - diff_money = (final_price - entry_price) / entry_price * capital - else: - diff_money = (entry_price - final_price) / entry_price * capital - - return final_price, diff_money, future_candles[-1]['id'] - - -# ================= 主程序 ================= -if __name__ == '__main__': - if __name__ == '__main__': - zh_project = 0 # 累计盈亏 - all_trades = [] # 保存所有交易明细 - - # 遍历 9月1日 ~ 9月27日 - for i in range(1, 30): - sorted_data = fetch_kline(i) # 获取数据 - - signals = wins = 0 - lig_price = low_price = 0 # 分别记录多/空的净收益 - - # 遍历每根K线,寻找信号 - for idx in range(1, len(sorted_data) - 2): # 留出未来K线 - prev, curr = sorted_data[idx - 1], sorted_data[idx] # 前一笔,当前一笔 - entry_candle = sorted_data[idx + 1] # 下一根开盘价作为入场价 - future_candles = sorted_data[idx + 2:] # 未来行情 - - entry_open = float(entry_candle['open']) # 开仓价格 - direction = check_signal(prev, curr) # 判断开仓方向 - - if direction: - signals += 1 # 总共信号数 - exit_price, diff, exit_time = simulate_trade(direction, entry_open, future_candles) - - # 统计多单/空单盈亏情况 - if direction == "long": - lig_price += diff - if diff > 0: wins += 1 - else: - low_price += diff - if diff > 0: wins += 1 - - # 保存交易详情 - all_trades.append((f"{i}号", entry_candle["id"], "做多" if direction == "long" else "做空", - entry_open, exit_price, diff, exit_time)) - - # 输出每日统计结果 - if signals > 0: - logger.info( - f"日期:{i}号,信号数={signals}, 胜率={wins / signals * 100:.2f}%," - f"上涨方向={lig_price:.2f},下跌方向={low_price:.2f},综合={lig_price + low_price:.2f}" - ) - else: - logger.info(f"日期:{i}号,没有信号") - - # 累计盈亏 - zh_project += (lig_price + low_price) - - logger.success(f"综合价格:{zh_project:.2f}") - - # ===== 输出每笔交易详情 ===== - logger.info("===== 每笔交易详情 =====") - n = n1 = 0 # n = 总盈利,n1 = 总手续费 - for date, time_str, direction, entry, exit, diff, end_time in all_trades: - logger.info( - f"{date} {time_str} {direction} 入场={entry:.2f} 出场={exit:.2f} 出场时间={end_time} " - f"差价={diff:.2f} 盈利={diff / entry * 10000:.2f} " - f"开仓手续费=5u 平仓手续费={10000 / entry * exit * 0.0005:.2f}" - ) - n1 += 5 + (10000 / entry * exit * 0.0005) - n += (diff / entry) * 10000 - - print(f'一共笔数:{len(all_trades)}') - print(f"一共盈利:{n:.2f}") - print(f'一共手续费:{n1:.2f}') + except ImportError: + print("如需可视化图表,请安装matplotlib: pip install matplotlib") \ No newline at end of file diff --git a/回测数据/推测策略,回测.py b/回测数据/推测策略,回测.py index 250ee51..050720a 100644 --- a/回测数据/推测策略,回测.py +++ b/回测数据/推测策略,回测.py @@ -21,15 +21,15 @@ headers = { } -def fetch_kline(day: int): +def fetch_kline(day: int, year: int = 2025, month: int = 9, period=1): """获取某一天的分钟级 K线数据""" # 构造该日的起止时间戳 - time_ser = datetime.datetime(2025, 10, day) # 修正为2024年9月 + time_ser = datetime.datetime(year, month, day) # 修正为2024年9月 start_of_day = time_ser.replace(hour=0, minute=0, second=0, microsecond=0) end_of_day = time_ser.replace(hour=23, minute=59, second=59, microsecond=0) params = { 'symbol': 'ETH-USDT', # 交易对 - 'period': '1min', # 分钟级K线 + 'period': f'{period}min', # 分钟级K线 'start': int(start_of_day.timestamp()), # 开始时间 'end': int(end_of_day.timestamp()), # 结束时间 } @@ -60,8 +60,8 @@ def check_signal(prev, curr): 3. 前涨后涨包住 -> 做多信号 (bull_bull_engulf) 4. 前跌后跌包住 -> 做空信号 (bear_bear_engulf) """ - p_open, p_close = float(prev['open']), float(prev['close']) - c_open, c_close = float(curr['open']), float(curr['close']) + p_open, p_close = float(prev['open']), float(prev['close']) # 前一笔 + c_open, c_close = float(curr['open']), float(curr['close']) # 当前一笔 # 情况1:前跌后涨,且涨线包住前跌线 -> 做多信号 if is_bullish(curr) and is_bearish(prev): @@ -73,25 +73,30 @@ def check_signal(prev, curr): if c_open > p_close and c_close < p_open: return "short", "bull_bear_engulf" - # 情况3:前涨后涨,且后涨线包住前涨线 -> 做多信号 - if is_bullish(curr) and is_bullish(prev): - if c_open < p_open and c_close > p_close: - return "long", "bull_bull_engulf" + # # 情况3:前涨后涨,且后涨线包住前涨线 -> 做多信号 + # if is_bullish(curr) and is_bullish(prev): + # if c_open < p_open and c_close > p_close: + # return "long", "bull_bull_engulf" - # 情况4:前跌后跌,且后跌线包住前跌线 -> 做空信号 - if is_bearish(curr) and is_bearish(prev): - if c_open > p_open and c_close < p_close: - return "short", "bear_bear_engulf" + # # 情况4:前跌后跌,且后跌线包住前跌线 -> 做空信号 + # if is_bearish(curr) and is_bearish(prev): + # if c_open > p_open and c_close < p_close: + # return "short", "bear_bear_engulf" return None, None -def simulate_trade(direction, entry_price, future_candles, take_profit_diff=10, stop_loss_diff=-2): +def simulate_trade(direction, entry_price, future_candles, take_profit_diff=30, stop_loss_diff=-10): """ 模拟交易(逐根K线回测) 使用价差来控制止盈止损: - 盈利达到 take_profit_diff 就止盈 - 亏损达到 stop_loss_diff 就止损 + + direction:信号类型 + entry_price:开盘价格 + future_candles:未来的行情数据 + """ for candle in future_candles: @@ -128,82 +133,75 @@ if __name__ == '__main__': # 四种信号类型的统计 signal_stats = { - "bear_bull_engulf": {"count": 0, "wins": 0, "total_profit": 0, "name": "跌包涨"}, - "bull_bear_engulf": {"count": 0, "wins": 0, "total_profit": 0, "name": "涨包跌"}, - "bull_bull_engulf": {"count": 0, "wins": 0, "total_profit": 0, "name": "涨包涨"}, - "bear_bear_engulf": {"count": 0, "wins": 0, "total_profit": 0, "name": "跌包跌"} + "bear_bull_engulf": {"count": 0, "wins": 0, "total_profit": 0, "name": "涨包跌"}, + "bull_bear_engulf": {"count": 0, "wins": 0, "total_profit": 0, "name": "跌包涨"}, + # "bull_bull_engulf": {"count": 0, "wins": 0, "total_profit": 0, "name": "涨包涨"}, + # "bear_bear_engulf": {"count": 0, "wins": 0, "total_profit": 0, "name": "跌包跌"} } + datas = [] # 遍历 9月1日 ~ 9月27日 - for i in range(1, 9): - sorted_data = fetch_kline(i) # 获取数据 + for i in range(1, 31): + logger.info(i) + sorted_data = fetch_kline(year=2025, month=9, day=i, period=15) # 获取数据 - daily_signals = 0 - daily_wins = 0 - daily_profit = 0 + datas.extend(sorted_data) - # 遍历每根K线,寻找信号 - for idx in range(1, len(sorted_data) - 2): # 留出未来K线 - prev, curr = sorted_data[idx - 1], sorted_data[idx] # 前一笔,当前一笔 - entry_candle = sorted_data[idx + 1] # 下一根开盘价作为入场价 - future_candles = sorted_data[idx + 2:] # 未来行情 + sorted(datas, key=lambda x: x["id"]) - entry_open = float(entry_candle['open']) # 开仓价格 - direction, signal_type = check_signal(prev, curr) # 判断开仓方向和信号类型 + daily_signals = 0 # 信号总数 + daily_wins = 0 + daily_profit = 0 # 价差总和 - if direction and signal_type: - daily_signals += 1 - exit_price, diff, exit_time = simulate_trade(direction, entry_open, future_candles) + # 遍历每根K线,寻找信号 + for idx in range(1, len(datas) - 2): # 留出未来K线 + prev, curr = datas[idx - 1], datas[idx] # 前一笔,当前一笔 + entry_candle = datas[idx + 1] # 下一根开盘价作为入场价 + future_candles = datas[idx + 2:] # 未来行情 - # 统计该信号类型的表现 - signal_stats[signal_type]["count"] += 1 - signal_stats[signal_type]["total_profit"] += diff - if diff > 0: - signal_stats[signal_type]["wins"] += 1 - daily_wins += 1 + entry_open = float(entry_candle['open']) # 开仓价格 + direction, signal_type = check_signal(prev, curr) # 判断开仓方向和信号类型 - daily_profit += diff + if direction and signal_type: + daily_signals += 1 - # 保存交易详情 - all_trades.append((f"{i}号", entry_candle["id"], "做多" if direction == "long" else "做空", - signal_stats[signal_type]["name"], entry_open, exit_price, diff, exit_time)) + exit_price, diff, exit_time = simulate_trade(direction, entry_open, future_candles,take_profit_diff=30, stop_loss_diff=-2) - # 输出每日统计结果 - if daily_signals > 0: - win_rate = daily_wins / daily_signals * 100 - logger.info( - f"日期:{i}号,信号数={daily_signals}, 胜率={win_rate:.2f}%," - f"当日盈亏={daily_profit:.2f}" + # 统计该信号类型的表现 + signal_stats[signal_type]["count"] += 1 + signal_stats[signal_type]["total_profit"] += diff + if diff > 0: + signal_stats[signal_type]["wins"] += 1 + daily_wins += 1 + + daily_profit += diff + + # 将时间戳转换为本地时间 + local_time = datetime.datetime.fromtimestamp(entry_candle['id']) + formatted_time = local_time.strftime("%Y-%m-%d") + + # 保存交易详情 + all_trades.append( + ( + f"{formatted_time}号", + "做多" if direction == "long" else "做空", + signal_stats[signal_type]["name"], + entry_open, + exit_price, + diff, + exit_time + ) ) - else: - logger.info(f"日期:{i}号,没有信号") - - # 累计盈亏 - zh_project += daily_profit - - logger.success(f"综合盈亏:{zh_project:.2f}") - - # 输出四种信号类型的统计结果 - logger.info("===== 四种信号类型统计 =====") - for signal_type, stats in signal_stats.items(): - if stats["count"] > 0: - win_rate = stats["wins"] / stats["count"] * 100 - logger.info( - f"{stats['name']}: 信号数={stats['count']}, 胜率={win_rate:.2f}%, " - f"总盈亏={stats['total_profit']:.2f}, 平均盈亏={stats['total_profit'] / stats['count']:.2f}" - ) - else: - logger.info(f"{stats['name']}: 无信号") # ===== 输出每笔交易详情 ===== logger.info("===== 每笔交易详情 =====") n = n1 = 0 # n = 总盈利,n1 = 总手续费 - for date, time_str, direction, signal_name, entry, exit, diff, end_time in all_trades: + for date, direction, signal_name, entry, exit, diff, end_time in all_trades: profit_amount = diff / entry * 10000 # 计算盈利金额 close_fee = 10000 / entry * exit * 0.0005 # 平仓手续费 logger.info( - f"{date} {time_str} {direction}({signal_name}) 入场={entry:.2f} 出场={exit:.2f} 出场时间={end_time} " + f"{date} {direction}({signal_name}) 入场={entry:.2f} 出场={exit:.2f} 出场时间={end_time} " f"差价={diff:.2f} 盈利={profit_amount:.2f} " f"开仓手续费=5u 平仓手续费={close_fee:.2f}" ) @@ -213,4 +211,3 @@ if __name__ == '__main__': print(f'一共笔数:{len(all_trades)}') print(f"一共盈利:{n:.2f}") print(f'一共手续费:{n1:.2f}') - diff --git a/回测数据/通过止盈止损策略.py b/回测数据/通过止盈止损策略.py index 01badd1..826e69d 100644 --- a/回测数据/通过止盈止损策略.py +++ b/回测数据/通过止盈止损策略.py @@ -1,216 +1,169 @@ import datetime -import itertools -import random -import time - import requests from loguru import logger +from typing import List, Dict, Tuple, Optional -# 请求头(模拟浏览器请求,避免被拒绝) -headers = { +# ================== 常量配置 ================== +BASE_URL = "https://capi.websea.com/webApi/market/getKline" +HEADERS = { 'accept': 'application/json, text/plain, */*', - 'accept-language': 'zh,zh-CN;q=0.9,zh-HK;q=0.8,en;q=0.7', - 'cache-control': 'no-cache', 'origin': 'https://www.websea.com', - 'pragma': 'no-cache', - 'priority': 'u=1, i', 'referer': 'https://www.websea.com/', - 'sec-ch-ua': '"Chromium";v="140", "Not=A?Brand";v="24", "Google Chrome";v="140"', - 'sec-ch-ua-mobile': '?0', - 'sec-ch-ua-platform': '"Windows"', - 'sec-fetch-dest': 'empty', - 'sec-fetch-mode': 'cors', - 'sec-fetch-site': 'same-site', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36', } +SYMBOL = "ETH-USDT" +PERIOD = "15min" +TAKE_PROFIT_DIFF = 30 +STOP_LOSS_DIFF = -2 -def fetch_kline(yue, day: int, ): - """ - 获取某一天的分钟K线数据 - :param day: 日期中的“日”,比如27表示2025-09-27 - :return: 按时间顺序排序后的K线数据 - """ - time_ser = datetime.datetime(2025, yue, day) +# ================== 数据获取 ================== +def fetch_kline(day: int, year: int = 2025, month: int = 9) -> List[Dict]: + """获取指定日期的K线数据(按时间升序返回)""" + try: + date = datetime.datetime(year, month, day) + start = int(date.replace(hour=0, minute=0, second=0).timestamp()) + end = int(date.replace(hour=23, minute=59, second=59).timestamp()) + params = {"symbol": SYMBOL, "period": PERIOD, "start": start, "end": end} + resp = requests.get(BASE_URL, params=params, headers=HEADERS, timeout=10) + resp.raise_for_status() + data = resp.json().get("result", {}).get("data", []) + return sorted(data, key=lambda x: x["id"]) + except Exception as e: + logger.error(f"获取 {day} 号数据失败: {e}") + return [] - # 当天 0点 - start_of_day = time_ser.replace(hour=0, minute=0, second=0, microsecond=0) - # 当天 23:59:59 - end_of_day = time_ser.replace(hour=23, minute=59, second=59, microsecond=0) - # API 参数 - params = { - 'symbol': 'ETH-USDT', # 交易对 - 'period': '1min', # 1分钟K线 - 'start': int(start_of_day.timestamp()), # 开始时间戳 - 'end': int(end_of_day.timestamp()), # 结束时间戳 +# ================== K线辅助函数 ================== +def is_bullish(candle: Dict) -> bool: + return float(candle["open"]) < float(candle["close"]) + + +def is_bearish(candle: Dict) -> bool: + return float(candle["open"]) > float(candle["close"]) + + +def check_signal(prev: Dict, curr: Dict) -> Tuple[Optional[str], Optional[str]]: + """检测K线形态信号""" + p_open, p_close = float(prev["open"]), float(prev["close"]) + c_open, c_close = float(curr["open"]), float(curr["close"]) + + if is_bullish(curr) and is_bearish(prev) and c_open < p_close and c_close > p_open: + return "long", "bear_bull_engulf" # 涨包跌 + if is_bearish(curr) and is_bullish(prev) and c_open > p_close and c_close < p_open: + return "short", "bull_bear_engulf" # 跌包涨 + return None, None + + +# ================== 回测函数 ================== +def simulate_trade(direction: str, entry_price: float, future: List[Dict], + take_profit_diff: float, stop_loss_diff: float) -> Tuple[float, float, int]: + """基于未来K线模拟止盈止损""" + for candle in future: + high, low, close = map(float, (candle["high"], candle["low"], candle["close"])) + cid = candle["id"] + + if direction == "long": + if high >= entry_price + take_profit_diff: + return entry_price + take_profit_diff, take_profit_diff, cid + if low <= entry_price + stop_loss_diff: + return entry_price + stop_loss_diff, stop_loss_diff, cid + + elif direction == "short": + if low <= entry_price - take_profit_diff: + return entry_price - take_profit_diff, take_profit_diff, cid + if high >= entry_price - stop_loss_diff: + return entry_price - stop_loss_diff, stop_loss_diff, cid + + final_close = float(future[-1]["close"]) + diff = final_close - entry_price if direction == "long" else entry_price - final_close + return final_close, diff, future[-1]["id"] + + +# ================== 主程序 ================== +def main(): + all_trades = [] + total_profit = 0.0 + + signal_stats = { + "bear_bull_engulf": {"count": 0, "wins": 0, "profit": 0.0, "name": "涨包跌"}, + "bull_bear_engulf": {"count": 0, "wins": 0, "profit": 0.0, "name": "跌包涨"}, } - # 请求接口 - response = requests.get('https://capi.websea.com/webApi/market/getKline', params=params, headers=headers) - data = response.json()['result']['data'] + for day in range(1, 31): + data = fetch_kline(year=2025, month=9, day=day) + if not data: + continue - # 返回按 id(时间) 排序的列表 - return sorted(data, key=lambda x: x['id']) + daily_signals = daily_wins = 0 + daily_profit = 0.0 + for i in range(1, len(data) - 2): + prev, curr = data[i - 1], data[i] + entry_candle = data[i + 1] + future_candles = data[i + 2:] -def backtest_kline(sorted_data, day): - """ - 回测策略逻辑 - 规则: - - 做多:连续两根阳线,第二根包住第一根 - - 做空:连续两根阴线,第二根包住第一根 - 止盈止损: - - 多单:止盈+0.15%,止损-0.2% - - 空单:止盈-0.15%,止损+0.2% - """ + direction, signal_type = check_signal(prev, curr) + if not direction: + continue - signals = wins = 0 # 统计信号总数、胜率 - lig_price = low_price = 0 # 多单收益、空单收益 - all_trades = [] # 存储所有交易详情 - - # 遍历 K 线,至少需要 3 根(前一根+当前+下一根开仓) - for idx in range(1, len(sorted_data) - 2): - prev = sorted_data[idx - 1] # 前一根K线 - curr = sorted_data[idx] # 当前K线 - entry_candle = sorted_data[idx + 1] # 下一根K线,用于入场 - - prev_open, prev_close = float(prev['open']), float(prev['close']) - curr_open, curr_close = float(curr['open']), float(curr['close']) - entry_open = float(entry_candle['open']) # 入场价 - - trade_signal = None # 信号类型:long / short - - # ======================== 做多条件 ======================== - if ( - curr_close > curr_open and prev_close > prev_open and # 连续两根阳线 - curr_open < prev_open and curr_close > prev_close # 当前包住前一根 - ): - trade_signal = "long" - - # ======================== 执行交易 ======================== - if trade_signal: - signals += 1 - - # 设定止盈止损 - if trade_signal == "long": - take_profit = entry_open + 4 - stop_loss = entry_open - 2 - - exit_price = None # 出场价格 - exit_time = None # 出场时间 - - # 遍历后续K线,寻找止盈/止损 - for future in sorted_data[idx + 2:]: - high, low, close = float(future['high']), float(future['low']), float(future['close']) - - if trade_signal == "long": - if high >= take_profit: # 触发止盈 - exit_price = take_profit - exit_time = future["id"] - break - if low <= stop_loss: # 触发止损 - exit_price = stop_loss - exit_time = future["id"] - break - - # 如果没触发止盈止损,用最后一根收盘价离场 - if exit_price is None: - exit_price = float(sorted_data[-1]['close']) - exit_time = sorted_data[-1]["id"] - - # ======================== 盈亏计算 ======================== - if trade_signal == "long": - diff = exit_price - entry_open # 多单盈亏 - lig_price += diff - else: - diff = entry_open - exit_price # 空单盈亏 - low_price += diff - - # 保存交易详情 - all_trades.append( - (f"{day}号", entry_candle["id"], "做多" if trade_signal == "long" else "做空", - entry_open, exit_price, diff, exit_time) + entry_price = float(entry_candle["open"]) + exit_price, diff, exit_id = simulate_trade( + direction, entry_price, future_candles, TAKE_PROFIT_DIFF, STOP_LOSS_DIFF ) - # 统计胜率 + daily_signals += 1 + daily_profit += diff + signal_stats[signal_type]["count"] += 1 + signal_stats[signal_type]["profit"] += diff if diff > 0: - wins += 1 + daily_wins += 1 + signal_stats[signal_type]["wins"] += 1 - return signals, wins, lig_price, low_price, all_trades + all_trades.append({ + "date": f"{day}号", + "entry_id": entry_candle["id"], + "direction": "做多" if direction == "long" else "做空", + "signal": signal_stats[signal_type]["name"], + "entry": entry_price, + "exit": exit_price, + "diff": diff, + "exit_id": exit_id, + }) + if daily_signals: + win_rate = daily_wins / daily_signals * 100 + logger.info(f"{day}号: 信号={daily_signals}, 胜率={win_rate:.2f}%, 盈亏={daily_profit:.2f}") + else: + logger.info(f"{day}号: 无信号") -if __name__ == '__main__': - zh_project = 0 - all_trades = [] + total_profit += daily_profit - total_profit = 0 # 总利润 - total_handling_fee = 0 # 总手续费 - # 回测 9月27日的数据 - for i, j in itertools.product(range(9, 10), range(1, 30)): - sorted_data = fetch_kline(i, j) - signals, wins, lig_price, low_price, trades = backtest_kline(sorted_data, i) - - # # 输出当天结果 - # if signals > 0: - # logger.info( - # f"日期:{i}号,信号数={signals}, 胜率={wins / signals * 100:.2f}%," - # f"上涨方向:{lig_price:.2f},下跌方向:{low_price:.2f}," - # f"综合价格:{(lig_price + low_price):.2f}" - # ) - # else: - # logger.info(f"日期:{i}号,没有信号") - - zh_project += (lig_price + low_price) - all_trades.extend(trades) - - n = n1 = 0 # n: 总盈利, n1: 总手续费 - for trade in trades: - date, time_str, direction, entry, exit, diff, end_time = trade - - fee_open = 5 # 固定开仓手续费 - fee_close = 10000 / entry * exit * 0.0005 # 平仓手续费 + logger.success(f"✅ 综合盈亏:{total_profit:.2f}") + # 信号统计 + logger.info("===== 信号类型统计 =====") + for k, v in signal_stats.items(): + if v["count"]: + wr = v["wins"] / v["count"] * 100 logger.info( - f"{date} {time_str} {direction} 入场={entry:.2f} 出场={exit:.2f} 出场时间:{end_time} " - f"差价={diff:.2f} 盈利:{diff / entry * 10000:.2f} " - f"开仓手续费:{fee_open:.2f} 平仓手续费:{fee_close:.2f}" - ) + f"{v['name']} 信号={v['count']}, 胜率={wr:.2f}%, 总盈亏={v['profit']:.2f}, 均盈亏={v['profit'] / v['count']:.2f}") + else: + logger.info(f"{v['name']} 无信号") - n1 += fee_open + fee_close - n += (diff / entry) * 10000 + # 交易明细 + total_fee = total_gain = 0.0 + logger.info("===== 每笔交易详情 =====") + for t in all_trades: + profit = t["diff"] / t["entry"] * 10000 + close_fee = 10000 / t["entry"] * t["exit"] * 0.0005 + total_gain += profit + total_fee += 5 + close_fee + logger.info( + f"{t['date']} {t['entry_id']} {t['direction']}({t['signal']}) 入={t['entry']:.2f} 出={t['exit']:.2f} 差={t['diff']:.2f} 盈={profit:.2f} 手续费={5 + close_fee:.2f}") - # 输出汇总结果 - logger.warning(f'一共笔数:{len(trades)} 一共盈利:{n:.2f} 一共手续费:{n1:.2f}') + logger.info(f"总笔数:{len(all_trades)} 总盈利:{total_gain:.2f} 总手续费:{total_fee:.2f}") - total_profit += n - total_handling_fee += n1 - # time.sleep(random.random() * 2) - - print(f"总利润:{total_profit} 总手续费:{total_handling_fee}") - - # # ======================== 汇总输出 ======================== - # logger.success(f"综合价格:{zh_project:.2f}") - # - # logger.info("===== 每笔交易详情 =====") - # n = n1 = 0 # n: 总盈利, n1: 总手续费 - # for trade in all_trades: - # date, time_str, direction, entry, exit, diff, end_time = trade - # - # fee_open = 5 # 固定开仓手续费 - # fee_close = 10000 / entry * exit * 0.0005 # 平仓手续费 - # - # logger.info( - # f"{date} {time_str} {direction} 入场={entry:.2f} 出场={exit:.2f} 出场时间:{end_time} " - # f"差价={diff:.2f} 盈利:{diff / entry * 10000:.2f} " - # f"开仓手续费:{fee_open:.2f} 平仓手续费:{fee_close:.2f}" - # ) - # - # n1 += fee_open + fee_close - # n += (diff / entry) * 10000 - # - # # 输出汇总结果 - # print(f'一共笔数:{len(all_trades)}') - # print(f"一共盈利:{n:.2f}") - # print(f'一共手续费:{n1:.2f}') +if __name__ == "__main__": + main()