haha
This commit is contained in:
1
WXAUTOX_LICENSE
Normal file
1
WXAUTOX_LICENSE
Normal file
@@ -0,0 +1 @@
|
|||||||
|
~Ew3IKb0y_M#*JAU9ygsGw-+|!kbIFmkfKZT(pO^f!Wx=@u,!48kV5E|{lAtnoMWEYhbW!/hLD^,#_.(U%nT!?gke-xZLW{le
|
||||||
@@ -90,7 +90,7 @@ class BBTrader:
|
|||||||
self.page: ChromiumPage | None = None
|
self.page: ChromiumPage | None = None
|
||||||
self.page_start = True # 需要(重新)打开浏览器
|
self.page_start = True # 需要(重新)打开浏览器
|
||||||
self.last_page_open_time = 0.0 # 上次打开浏览器的时间
|
self.last_page_open_time = 0.0 # 上次打开浏览器的时间
|
||||||
self.PAGE_REFRESH_INTERVAL = 180 # 每3分钟关闭重开浏览器
|
self.PAGE_REFRESH_INTERVAL = 1800 # 每30分钟关闭重开浏览器
|
||||||
|
|
||||||
# 持仓状态: -1=空, 0=无, 1=多
|
# 持仓状态: -1=空, 0=无, 1=多
|
||||||
self.position = 0
|
self.position = 0
|
||||||
@@ -394,9 +394,9 @@ class BBTrader:
|
|||||||
page_start = False
|
page_start = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 每3分钟关闭浏览器重新打开
|
# 每30分钟关闭浏览器重新打开
|
||||||
if time.time() - self.last_page_open_time >= self.PAGE_REFRESH_INTERVAL:
|
if time.time() - self.last_page_open_time >= self.PAGE_REFRESH_INTERVAL:
|
||||||
logger.info("浏览器已打开超过3分钟,关闭刷新")
|
logger.info("浏览器已打开超过30分钟,关闭刷新")
|
||||||
try:
|
try:
|
||||||
self.page.close()
|
self.page.close()
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|||||||
192
bb_trade_log_20260226.txt
Normal file
192
bb_trade_log_20260226.txt
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 15:37:31
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2057.35
|
||||||
|
BB上轨: 2067.10 | 中轨: 2062.49 | 下轨: 2057.87
|
||||||
|
原因: 价格最低2057.32触及下轨2057.87,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 15:40:57
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2056.25
|
||||||
|
BB上轨: 2068.33 | 中轨: 2062.01 | 下轨: 2055.69
|
||||||
|
原因: 价格最低2055.40触及下轨2055.69,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 15:51:35
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 2053.30
|
||||||
|
BB上轨: 2069.08 | 中轨: 2061.27 | 下轨: 2053.46
|
||||||
|
原因: 价格最低2053.17触及下轨2053.46,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 16:09:24
|
||||||
|
操作: 加仓多#3
|
||||||
|
价格: 2048.33
|
||||||
|
BB上轨: 2066.37 | 中轨: 2057.64 | 下轨: 2048.91
|
||||||
|
原因: 价格最低2047.81触及下轨2048.91,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 16:51:34
|
||||||
|
操作: 开空
|
||||||
|
价格: 2056.74
|
||||||
|
BB上轨: 2056.68 | 中轨: 2050.00 | 下轨: 2043.32
|
||||||
|
原因: 价格最高2056.74触及上轨2056.68,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 17:06:46
|
||||||
|
操作: 加仓空#1
|
||||||
|
价格: 2058.39
|
||||||
|
BB上轨: 2058.12 | 中轨: 2050.99 | 下轨: 2043.87
|
||||||
|
原因: 价格最高2058.64触及上轨2058.12,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 17:11:06
|
||||||
|
操作: 加仓空#2
|
||||||
|
价格: 2060.60
|
||||||
|
BB上轨: 2061.02 | 中轨: 2051.98 | 下轨: 2042.95
|
||||||
|
原因: 价格最高2061.23触及上轨2061.02,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 17:15:14
|
||||||
|
操作: 加仓空#3
|
||||||
|
价格: 2069.55
|
||||||
|
BB上轨: 2068.81 | 中轨: 2053.53 | 下轨: 2038.25
|
||||||
|
原因: 价格最高2069.08触及上轨2068.81,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 18:26:26
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2069.00
|
||||||
|
BB上轨: 2078.82 | 中轨: 2073.78 | 下轨: 2068.74
|
||||||
|
原因: 价格最低2068.60触及下轨2068.74,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 18:30:18
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2065.64
|
||||||
|
BB上轨: 2080.83 | 中轨: 2072.96 | 下轨: 2065.08
|
||||||
|
原因: 价格最低2064.90触及下轨2065.08,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 19:18:18
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2056.57
|
||||||
|
BB上轨: 2073.88 | 中轨: 2065.36 | 下轨: 2056.83
|
||||||
|
原因: 价格最低2056.55触及下轨2056.83,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 19:47:23
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 2054.27
|
||||||
|
BB上轨: 2066.70 | 中轨: 2060.46 | 下轨: 2054.23
|
||||||
|
原因: 价格最低2053.94触及下轨2054.23,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 20:09:37
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 2063.02
|
||||||
|
BB上轨: 2063.19 | 中轨: 2058.15 | 下轨: 2053.11
|
||||||
|
原因: 价格最高2063.55触及上轨2063.19,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 20:18:32
|
||||||
|
操作: 加仓空#1
|
||||||
|
价格: 2066.00
|
||||||
|
BB上轨: 2065.69 | 中轨: 2059.14 | 下轨: 2052.58
|
||||||
|
原因: 价格最高2066.00触及上轨2065.69,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 20:49:59
|
||||||
|
操作: 加仓空#2
|
||||||
|
价格: 2069.54
|
||||||
|
BB上轨: 2070.82 | 中轨: 2063.52 | 下轨: 2056.21
|
||||||
|
原因: 价格最高2070.84触及上轨2070.82,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 21:22:34
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2060.33
|
||||||
|
BB上轨: 2071.65 | 中轨: 2066.19 | 下轨: 2060.73
|
||||||
|
原因: 价格最低2060.33触及下轨2060.73,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 21:47:47
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 2070.41
|
||||||
|
BB上轨: 2072.64 | 中轨: 2066.47 | 下轨: 2060.31
|
||||||
|
原因: 价格最高2072.75触及上轨2072.64,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 22:03:03
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2060.65
|
||||||
|
BB上轨: 2072.69 | 中轨: 2066.27 | 下轨: 2059.84
|
||||||
|
原因: 价格最低2059.40触及下轨2059.84,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 22:06:42
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2059.82
|
||||||
|
BB上轨: 2072.86 | 中轨: 2066.15 | 下轨: 2059.44
|
||||||
|
原因: 价格最低2059.00触及下轨2059.44,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 22:30:56
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2054.88
|
||||||
|
BB上轨: 2073.40 | 中轨: 2065.42 | 下轨: 2057.43
|
||||||
|
原因: 价格最低2052.00触及下轨2057.43,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 22:35:22
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 2073.86
|
||||||
|
BB上轨: 2074.10 | 中轨: 2065.63 | 下轨: 2057.16
|
||||||
|
原因: 价格最高2076.97触及上轨2074.10,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 22:45:42
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2052.53
|
||||||
|
BB上轨: 2073.67 | 中轨: 2064.05 | 下轨: 2054.44
|
||||||
|
原因: 价格最低2053.71触及下轨2054.44,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 22:50:13
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2039.79
|
||||||
|
BB上轨: 2082.56 | 中轨: 2061.54 | 下轨: 2040.53
|
||||||
|
原因: 价格最低2038.54触及下轨2040.53,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-26 23:16:31
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 2028.67
|
||||||
|
BB上轨: 2079.34 | 中轨: 2052.02 | 下轨: 2024.71
|
||||||
|
原因: 价格最低2023.71触及下轨2024.71,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
440
bb_trade_log_20260227.txt
Normal file
440
bb_trade_log_20260227.txt
Normal file
@@ -0,0 +1,440 @@
|
|||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 00:34:52
|
||||||
|
操作: 加仓多#3
|
||||||
|
价格: 2019.27
|
||||||
|
BB上轨: 2038.07 | 中轨: 2029.31 | 下轨: 2020.55
|
||||||
|
原因: 价格最低2018.47触及下轨2020.55,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 00:45:54
|
||||||
|
操作: 开多
|
||||||
|
价格: 1995.09
|
||||||
|
BB上轨: 2041.76 | 中轨: 2024.21 | 下轨: 2006.67
|
||||||
|
原因: 价格最低1991.10触及下轨2006.67,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 00:50:23
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 1997.38
|
||||||
|
BB上轨: 2044.57 | 中轨: 2021.06 | 下轨: 1997.54
|
||||||
|
原因: 价格最低1997.37触及下轨1997.54,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 00:58:13
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 1981.63
|
||||||
|
BB上轨: 2052.12 | 中轨: 2016.68 | 下轨: 1981.24
|
||||||
|
原因: 价格最低1980.90触及下轨1981.24,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 01:50:45
|
||||||
|
操作: 加仓多#3
|
||||||
|
价格: 1981.96
|
||||||
|
BB上轨: 1996.89 | 中轨: 1989.38 | 下轨: 1981.88
|
||||||
|
原因: 价格最低1981.72触及下轨1981.88,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 02:33:12
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 1993.72
|
||||||
|
BB上轨: 1994.06 | 中轨: 1986.40 | 下轨: 1978.74
|
||||||
|
原因: 价格最高1994.73触及上轨1994.06,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 02:36:47
|
||||||
|
操作: 加仓空#1
|
||||||
|
价格: 1999.68
|
||||||
|
BB上轨: 1998.39 | 中轨: 1987.39 | 下轨: 1976.39
|
||||||
|
原因: 价格最高1999.68触及上轨1998.39,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 02:43:43
|
||||||
|
操作: 加仓空#2
|
||||||
|
价格: 2006.48
|
||||||
|
BB上轨: 2004.93 | 中轨: 1989.32 | 下轨: 1973.70
|
||||||
|
原因: 价格最高2006.75触及上轨2004.93,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 03:59:44
|
||||||
|
操作: 加仓空#1
|
||||||
|
价格: 2026.68
|
||||||
|
BB上轨: 2032.27 | 中轨: 2024.20 | 下轨: 2016.12
|
||||||
|
原因: 价格最高2032.94触及上轨2032.27,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 04:03:33
|
||||||
|
操作: 加仓空#2
|
||||||
|
价格: 2032.81
|
||||||
|
BB上轨: 2032.74 | 中轨: 2025.19 | 下轨: 2017.64
|
||||||
|
原因: 价格最高2032.60触及上轨2032.74,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 04:05:12
|
||||||
|
操作: 加仓空#3
|
||||||
|
价格: 2038.22
|
||||||
|
BB上轨: 2038.99 | 中轨: 2027.23 | 下轨: 2015.47
|
||||||
|
原因: 价格最高2039.70触及上轨2038.99,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 05:10:18
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2017.56
|
||||||
|
BB上轨: 2032.98 | 中轨: 2025.96 | 下轨: 2018.93
|
||||||
|
原因: 价格最低2017.55触及下轨2018.93,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 05:48:57
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 2033.77
|
||||||
|
BB上轨: 2033.55 | 中轨: 2026.29 | 下轨: 2019.02
|
||||||
|
原因: 价格最高2033.78触及上轨2033.55,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 06:36:53
|
||||||
|
操作: 加仓空#1
|
||||||
|
价格: 2034.32
|
||||||
|
BB上轨: 2033.90 | 中轨: 2030.08 | 下轨: 2026.26
|
||||||
|
原因: 价格最高2034.32触及上轨2033.90,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 06:41:38
|
||||||
|
操作: 加仓空#2
|
||||||
|
价格: 2033.41
|
||||||
|
BB上轨: 2033.33 | 中轨: 2029.99 | 下轨: 2026.64
|
||||||
|
原因: 价格最高2033.41触及上轨2033.33,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 06:45:52
|
||||||
|
操作: 加仓空#3
|
||||||
|
价格: 2036.11
|
||||||
|
BB上轨: 2036.02 | 中轨: 2030.57 | 下轨: 2025.11
|
||||||
|
原因: 价格最高2036.12触及上轨2036.02,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 07:05:56
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2023.39
|
||||||
|
BB上轨: 2038.77 | 中轨: 2031.22 | 下轨: 2023.66
|
||||||
|
原因: 价格最低2023.29触及下轨2023.66,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 07:51:41
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2023.26
|
||||||
|
BB上轨: 2032.74 | 中轨: 2028.23 | 下轨: 2023.72
|
||||||
|
原因: 价格最低2023.26触及下轨2023.72,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 08:04:43
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 2023.45
|
||||||
|
BB上轨: 2032.80 | 中轨: 2028.16 | 下轨: 2023.52
|
||||||
|
原因: 价格最低2023.45触及下轨2023.52,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 08:18:36
|
||||||
|
操作: 加仓多#3
|
||||||
|
价格: 2020.68
|
||||||
|
BB上轨: 2032.86 | 中轨: 2027.04 | 下轨: 2021.22
|
||||||
|
原因: 价格最低2020.68触及下轨2021.22,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 10:20:03
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 2028.97
|
||||||
|
BB上轨: 2028.81 | 中轨: 2017.30 | 下轨: 2005.80
|
||||||
|
原因: 价格最高2029.00触及上轨2028.81,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 10:20:40
|
||||||
|
操作: 加仓空#1
|
||||||
|
价格: 2029.67
|
||||||
|
BB上轨: 2030.85 | 中轨: 2019.44 | 下轨: 2008.03
|
||||||
|
原因: 价格最高2031.42触及上轨2030.85,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 11:06:08
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2021.85
|
||||||
|
BB上轨: 2032.13 | 中轨: 2027.36 | 下轨: 2022.58
|
||||||
|
原因: 价格最低2021.85触及下轨2022.58,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 11:11:59
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2020.95
|
||||||
|
BB上轨: 2032.35 | 中轨: 2026.75 | 下轨: 2021.14
|
||||||
|
原因: 价格最低2020.82触及下轨2021.14,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 11:45:07
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 2029.42
|
||||||
|
BB上轨: 2030.01 | 中轨: 2023.47 | 下轨: 2016.93
|
||||||
|
原因: 价格最高2030.16触及上轨2030.01,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 11:49:54
|
||||||
|
操作: 加仓空#1
|
||||||
|
价格: 2031.58
|
||||||
|
BB上轨: 2031.24 | 中轨: 2023.72 | 下轨: 2016.19
|
||||||
|
原因: 价格最高2031.59触及上轨2031.24,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 11:52:39
|
||||||
|
操作: 加仓空#2
|
||||||
|
价格: 2034.61
|
||||||
|
BB上轨: 2033.42 | 中轨: 2024.27 | 下轨: 2015.12
|
||||||
|
原因: 价格最高2034.83触及上轨2033.42,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 11:56:42
|
||||||
|
操作: 加仓空#3
|
||||||
|
价格: 2038.24
|
||||||
|
BB上轨: 2037.16 | 中轨: 2025.24 | 下轨: 2013.32
|
||||||
|
原因: 价格最高2038.24触及上轨2037.16,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 12:58:23
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2040.81
|
||||||
|
BB上轨: 2063.10 | 中轨: 2051.08 | 下轨: 2039.06
|
||||||
|
原因: 价格最低2035.83触及下轨2039.06,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 13:23:15
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2040.84
|
||||||
|
BB上轨: 2050.50 | 中轨: 2045.50 | 下轨: 2040.51
|
||||||
|
原因: 价格最低2040.21触及下轨2040.51,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 13:57:37
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2040.17
|
||||||
|
BB上轨: 2047.74 | 中轨: 2043.81 | 下轨: 2039.88
|
||||||
|
原因: 价格最低2039.84触及下轨2039.88,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 14:01:28
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 2039.00
|
||||||
|
BB上轨: 2048.08 | 中轨: 2043.60 | 下轨: 2039.11
|
||||||
|
原因: 价格最低2038.43触及下轨2039.11,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 14:08:09
|
||||||
|
操作: 加仓多#3
|
||||||
|
价格: 2038.54
|
||||||
|
BB上轨: 2047.75 | 中轨: 2043.19 | 下轨: 2038.63
|
||||||
|
原因: 价格最低2038.30触及下轨2038.63,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 15:09:03
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 2039.58
|
||||||
|
BB上轨: 2039.40 | 中轨: 2034.52 | 下轨: 2029.64
|
||||||
|
原因: 价格最高2039.71触及上轨2039.40,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 15:21:53
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2031.37
|
||||||
|
BB上轨: 2039.67 | 中轨: 2035.57 | 下轨: 2031.46
|
||||||
|
原因: 价格最低2031.25触及下轨2031.46,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 15:29:08
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2031.29
|
||||||
|
BB上轨: 2039.73 | 中轨: 2035.54 | 下轨: 2031.35
|
||||||
|
原因: 价格最低2031.20触及下轨2031.35,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 15:37:53
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 2028.64
|
||||||
|
BB上轨: 2039.96 | 中轨: 2034.30 | 下轨: 2028.65
|
||||||
|
原因: 价格最低2028.64触及下轨2028.65,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 15:40:26
|
||||||
|
操作: 加仓多#3
|
||||||
|
价格: 2023.35
|
||||||
|
BB上轨: 2042.08 | 中轨: 2033.08 | 下轨: 2024.09
|
||||||
|
原因: 价格最低2023.35触及下轨2024.09,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 16:09:03
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 2037.82
|
||||||
|
BB上轨: 2038.00 | 中轨: 2029.64 | 下轨: 2021.28
|
||||||
|
原因: 价格最高2038.44触及上轨2038.00,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 16:10:11
|
||||||
|
操作: 加仓空#1
|
||||||
|
价格: 2040.95
|
||||||
|
BB上轨: 2041.45 | 中轨: 2030.26 | 下轨: 2019.08
|
||||||
|
原因: 价格最高2042.00触及上轨2041.45,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 17:17:59
|
||||||
|
操作: 加仓空#2
|
||||||
|
价格: 2037.56
|
||||||
|
BB上轨: 2037.39 | 中轨: 2033.42 | 下轨: 2029.45
|
||||||
|
原因: 价格最高2037.56触及上轨2037.39,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 17:20:15
|
||||||
|
操作: 加仓空#3
|
||||||
|
价格: 2038.29
|
||||||
|
BB上轨: 2038.51 | 中轨: 2033.60 | 下轨: 2028.70
|
||||||
|
原因: 价格最高2038.54触及上轨2038.51,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 17:37:16
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 2030.27
|
||||||
|
BB上轨: 2039.23 | 中轨: 2034.69 | 下轨: 2030.15
|
||||||
|
原因: 价格最低2029.69触及下轨2030.15,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 17:42:11
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2027.07
|
||||||
|
BB上轨: 2040.89 | 中轨: 2034.17 | 下轨: 2027.44
|
||||||
|
原因: 价格最低2026.84触及下轨2027.44,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 17:47:31
|
||||||
|
操作: 开多
|
||||||
|
价格: 2015.02
|
||||||
|
BB上轨: 2046.09 | 中轨: 2032.76 | 下轨: 2019.42
|
||||||
|
原因: 价格最低2011.72触及下轨2019.42,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 17:51:12
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 2012.12
|
||||||
|
BB上轨: 2049.50 | 中轨: 2031.08 | 下轨: 2012.65
|
||||||
|
原因: 价格最低2011.75触及下轨2012.65,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 18:50:47
|
||||||
|
操作: 开多
|
||||||
|
价格: 1981.75
|
||||||
|
BB上轨: 2008.92 | 中轨: 1993.81 | 下轨: 1978.71
|
||||||
|
原因: 价格最低1977.18触及下轨1978.71,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 19:17:27
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 1972.22
|
||||||
|
BB上轨: 1999.72 | 中轨: 1985.80 | 下轨: 1971.88
|
||||||
|
原因: 价格最低1970.22触及下轨1971.88,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 19:39:39
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 1961.41
|
||||||
|
BB上轨: 1993.01 | 中轨: 1977.21 | 下轨: 1961.41
|
||||||
|
原因: 价格最低1961.36触及下轨1961.41,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 19:41:51
|
||||||
|
操作: 加仓多#3
|
||||||
|
价格: 1956.50
|
||||||
|
BB上轨: 1991.23 | 中轨: 1974.42 | 下轨: 1957.61
|
||||||
|
原因: 价格最低1956.50触及下轨1957.61,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 20:27:33
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 1965.94
|
||||||
|
BB上轨: 1965.48 | 中轨: 1960.08 | 下轨: 1954.68
|
||||||
|
原因: 价格最高1965.94触及上轨1965.48,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 20:42:26
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 1955.65
|
||||||
|
BB上轨: 1965.42 | 中轨: 1960.60 | 下轨: 1955.77
|
||||||
|
原因: 价格最低1955.64触及下轨1955.77,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 20:45:33
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 1952.42
|
||||||
|
BB上轨: 1966.37 | 中轨: 1960.12 | 下轨: 1953.87
|
||||||
|
原因: 价格最低1952.42触及下轨1953.87,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 21:36:10
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 1949.38
|
||||||
|
BB上轨: 1967.58 | 中轨: 1958.42 | 下轨: 1949.27
|
||||||
|
原因: 价格最低1949.23触及下轨1949.27,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-27 22:43:04
|
||||||
|
操作: 加仓多#3
|
||||||
|
价格: 1945.85
|
||||||
|
BB上轨: 1965.93 | 中轨: 1955.68 | 下轨: 1945.44
|
||||||
|
原因: 价格最低1945.00触及下轨1945.44,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
128
bb_trade_log_20260228.txt
Normal file
128
bb_trade_log_20260228.txt
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 01:19:27
|
||||||
|
操作: 开多
|
||||||
|
价格: 1916.03
|
||||||
|
BB上轨: 1946.64 | 中轨: 1931.71 | 下轨: 1916.78
|
||||||
|
原因: 价格最低1915.60触及下轨1916.78,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 01:23:07
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 1912.34
|
||||||
|
BB上轨: 1945.77 | 中轨: 1929.22 | 下轨: 1912.67
|
||||||
|
原因: 价格最低1912.34触及下轨1912.67,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 01:28:21
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 1911.23
|
||||||
|
BB上轨: 1942.48 | 中轨: 1926.75 | 下轨: 1911.02
|
||||||
|
原因: 价格最低1910.24触及下轨1911.02,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 01:31:41
|
||||||
|
操作: 加仓多#3
|
||||||
|
价格: 1906.88
|
||||||
|
BB上轨: 1941.53 | 中轨: 1924.30 | 下轨: 1907.06
|
||||||
|
原因: 价格最低1906.99触及下轨1907.06,BB(10,2.5) (加仓#3/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 06:34:30
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 1908.38
|
||||||
|
BB上轨: 1927.72 | 中轨: 1918.60 | 下轨: 1909.47
|
||||||
|
原因: 价格最低1908.31触及下轨1909.47,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 06:35:11
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 1892.16
|
||||||
|
BB上轨: 1937.73 | 中轨: 1914.97 | 下轨: 1892.22
|
||||||
|
原因: 价格最低1889.17触及下轨1892.22,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 08:07:34
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 1931.86
|
||||||
|
BB上轨: 1931.43 | 中轨: 1929.13 | 下轨: 1926.83
|
||||||
|
原因: 价格最高1931.86触及上轨1931.43,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 08:11:19
|
||||||
|
操作: 加仓空#1
|
||||||
|
价格: 1931.98
|
||||||
|
BB上轨: 1931.89 | 中轨: 1929.38 | 下轨: 1926.86
|
||||||
|
原因: 价格最高1931.99触及上轨1931.89,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 08:15:12
|
||||||
|
操作: 加仓空#2
|
||||||
|
价格: 1935.46
|
||||||
|
BB上轨: 1935.14 | 中轨: 1929.96 | 下轨: 1924.79
|
||||||
|
原因: 价格最高1935.80触及上轨1935.14,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 09:28:30
|
||||||
|
操作: 开多
|
||||||
|
价格: 1925.76
|
||||||
|
BB上轨: 1935.12 | 中轨: 1930.99 | 下轨: 1926.86
|
||||||
|
原因: 价格最低1925.54触及下轨1926.86,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 09:30:09
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 1924.35
|
||||||
|
BB上轨: 1936.62 | 中轨: 1930.70 | 下轨: 1924.79
|
||||||
|
原因: 价格最低1924.35触及下轨1924.79,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 11:31:58
|
||||||
|
操作: 开多
|
||||||
|
价格: 1924.43
|
||||||
|
BB上轨: 1931.27 | 中轨: 1928.33 | 下轨: 1925.38
|
||||||
|
原因: 价格最低1923.19触及下轨1925.38,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 11:36:12
|
||||||
|
操作: 加仓多#1
|
||||||
|
价格: 1923.24
|
||||||
|
BB上轨: 1932.37 | 中轨: 1927.89 | 下轨: 1923.42
|
||||||
|
原因: 价格最低1923.23触及下轨1923.42,BB(10,2.5) (加仓#1/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 11:40:41
|
||||||
|
操作: 加仓多#2
|
||||||
|
价格: 1921.27
|
||||||
|
BB上轨: 1933.00 | 中轨: 1927.10 | 下轨: 1921.20
|
||||||
|
原因: 价格最低1921.17触及下轨1921.20,BB(10,2.5) (加仓#2/3)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 12:29:22
|
||||||
|
操作: 翻转: 平多→开空
|
||||||
|
价格: 1927.86
|
||||||
|
BB上轨: 1925.70 | 中轨: 1923.42 | 下轨: 1921.14
|
||||||
|
原因: 价格最高1928.16触及上轨1925.70,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
时间: 2026-02-28 12:30:20
|
||||||
|
操作: 翻转: 平空→开多
|
||||||
|
价格: 1919.85
|
||||||
|
BB上轨: 1926.62 | 中轨: 1923.20 | 下轨: 1919.79
|
||||||
|
原因: 价格最低1919.32触及下轨1919.79,BB(10,2.5)
|
||||||
|
============================================================
|
||||||
Binary file not shown.
456
run_bb_full_sweep.py
Normal file
456
run_bb_full_sweep.py
Normal file
@@ -0,0 +1,456 @@
|
|||||||
|
"""
|
||||||
|
布林带均线策略 - 全参数组合扫描 (0.5~1000, 0.5~1000)
|
||||||
|
分层搜索:粗扫 → 精扫,在合理时间内覆盖全参数空间
|
||||||
|
|
||||||
|
策略:
|
||||||
|
- 阳线 + 先涨碰到均线(1m判断) → 开多
|
||||||
|
- 持多: 碰上轨止盈
|
||||||
|
- 阴线 + 先跌碰到均线(1m判断) → 平多开空
|
||||||
|
- 持空: 碰下轨止盈
|
||||||
|
|
||||||
|
配置: 200U | 1%权益/单 | 万五手续费 | 90%返佣次日8点 | 100x杠杆 | 全仓
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
import time
|
||||||
|
from collections import defaultdict
|
||||||
|
from concurrent.futures import ProcessPoolExecutor, as_completed
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
sys.path.insert(0, str(Path(__file__).resolve().parents[0]))
|
||||||
|
sys.stdout.reconfigure(line_buffering=True)
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
from strategy.bb_midline_backtest import BBMidlineConfig, run_bb_midline_backtest
|
||||||
|
from strategy.data_loader import get_1m_touch_direction, load_klines
|
||||||
|
from strategy.indicators import bollinger
|
||||||
|
|
||||||
|
# ─── 全局变量 (多进程 worker 共享) ───
|
||||||
|
G_DF: pd.DataFrame | None = None
|
||||||
|
G_DF_1M: pd.DataFrame | None = None
|
||||||
|
G_USE_1M: bool = True
|
||||||
|
G_STEP_MIN: int = 5
|
||||||
|
|
||||||
|
|
||||||
|
def _init_worker(df_path: str, df_1m_path: str | None, use_1m: bool, step_min: int):
|
||||||
|
global G_DF, G_DF_1M, G_USE_1M, G_STEP_MIN
|
||||||
|
G_DF = pd.read_pickle(df_path)
|
||||||
|
G_DF_1M = pd.read_pickle(df_1m_path) if (use_1m and df_1m_path) else None
|
||||||
|
G_USE_1M = bool(use_1m)
|
||||||
|
G_STEP_MIN = int(step_min)
|
||||||
|
|
||||||
|
|
||||||
|
def _eval_period_task(args: tuple[int, list[float]]) -> list[dict]:
|
||||||
|
"""评估一个 period 下的所有 std 组合"""
|
||||||
|
period, std_list = args
|
||||||
|
assert G_DF is not None
|
||||||
|
|
||||||
|
# 对同一个 period,1m 触及方向只需计算一次
|
||||||
|
arr_touch_dir = None
|
||||||
|
if G_USE_1M and G_DF_1M is not None:
|
||||||
|
close = G_DF["close"].astype(float)
|
||||||
|
bb_mid, _, _, _ = bollinger(close, period, 1.0)
|
||||||
|
arr_touch_dir = get_1m_touch_direction(
|
||||||
|
G_DF, G_DF_1M, bb_mid.values, kline_step_min=G_STEP_MIN
|
||||||
|
)
|
||||||
|
|
||||||
|
rows: list[dict] = []
|
||||||
|
for std in std_list:
|
||||||
|
cfg = BBMidlineConfig(
|
||||||
|
bb_period=period,
|
||||||
|
bb_std=float(std),
|
||||||
|
initial_capital=200.0,
|
||||||
|
margin_pct=0.01,
|
||||||
|
leverage=100.0,
|
||||||
|
cross_margin=True,
|
||||||
|
fee_rate=0.0005,
|
||||||
|
rebate_pct=0.90,
|
||||||
|
rebate_hour_utc=0,
|
||||||
|
fill_at_close=True,
|
||||||
|
use_1m_touch_filter=G_USE_1M,
|
||||||
|
kline_step_min=G_STEP_MIN,
|
||||||
|
)
|
||||||
|
result = run_bb_midline_backtest(
|
||||||
|
G_DF,
|
||||||
|
cfg,
|
||||||
|
df_1m=G_DF_1M if G_USE_1M else None,
|
||||||
|
arr_touch_dir_override=arr_touch_dir,
|
||||||
|
)
|
||||||
|
|
||||||
|
eq = result.equity_curve["equity"].dropna()
|
||||||
|
if len(eq) == 0:
|
||||||
|
final_eq = 0.0
|
||||||
|
ret_pct = -100.0
|
||||||
|
dd_u = -200.0
|
||||||
|
dd_pct = 100.0
|
||||||
|
else:
|
||||||
|
final_eq = float(eq.iloc[-1])
|
||||||
|
ret_pct = (final_eq - cfg.initial_capital) / cfg.initial_capital * 100.0
|
||||||
|
dd_u = float((eq.astype(float) - eq.astype(float).cummax()).min())
|
||||||
|
dd_pct = abs(dd_u) / cfg.initial_capital * 100.0
|
||||||
|
|
||||||
|
n_trades = len(result.trades)
|
||||||
|
win_rate = (
|
||||||
|
sum(1 for t in result.trades if t.net_pnl > 0) / n_trades * 100.0
|
||||||
|
if n_trades > 0
|
||||||
|
else 0.0
|
||||||
|
)
|
||||||
|
pnl = result.daily_stats["pnl"].astype(float)
|
||||||
|
sharpe = (
|
||||||
|
float(pnl.mean() / pnl.std()) * np.sqrt(365.0) if pnl.std() > 0 else 0.0
|
||||||
|
)
|
||||||
|
|
||||||
|
# 稳定性评分
|
||||||
|
sparse_penalty = -5.0 if n_trades < 200 else 0.0
|
||||||
|
score = ret_pct + sharpe * 12.0 - abs(dd_pct) * 0.8 + sparse_penalty
|
||||||
|
|
||||||
|
rows.append({
|
||||||
|
"period": period,
|
||||||
|
"std": round(float(std), 2),
|
||||||
|
"final_eq": round(final_eq, 2),
|
||||||
|
"ret_pct": round(ret_pct, 2),
|
||||||
|
"n_trades": n_trades,
|
||||||
|
"win_rate": round(win_rate, 2),
|
||||||
|
"sharpe": round(sharpe, 4),
|
||||||
|
"max_dd_u": round(dd_u, 2),
|
||||||
|
"max_dd_pct": round(dd_pct, 2),
|
||||||
|
"stable_score": round(score, 2),
|
||||||
|
})
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
def evaluate_grid(
|
||||||
|
params: list[tuple[int, float]],
|
||||||
|
*,
|
||||||
|
workers: int,
|
||||||
|
df_path: str,
|
||||||
|
df_1m_path: str | None,
|
||||||
|
use_1m: bool,
|
||||||
|
step_min: int,
|
||||||
|
label: str = "",
|
||||||
|
) -> pd.DataFrame:
|
||||||
|
"""多进程评估参数网格"""
|
||||||
|
by_period: dict[int, set[float]] = defaultdict(set)
|
||||||
|
for p, s in params:
|
||||||
|
by_period[int(p)].add(round(float(s), 2))
|
||||||
|
|
||||||
|
tasks = [(p, sorted(stds)) for p, stds in sorted(by_period.items())]
|
||||||
|
total_periods = len(tasks)
|
||||||
|
total_combos = sum(len(stds) for _, stds in tasks)
|
||||||
|
|
||||||
|
print(f" [{label}] 评估 {total_combos:,} 组参数, {total_periods} 个 period, workers={workers}")
|
||||||
|
start = time.time()
|
||||||
|
rows: list[dict] = []
|
||||||
|
done_periods = 0
|
||||||
|
done_combos = 0
|
||||||
|
|
||||||
|
with ProcessPoolExecutor(
|
||||||
|
max_workers=workers,
|
||||||
|
initializer=_init_worker,
|
||||||
|
initargs=(df_path, df_1m_path, use_1m, step_min),
|
||||||
|
) as ex:
|
||||||
|
future_map = {ex.submit(_eval_period_task, task): task for task in tasks}
|
||||||
|
for fut in as_completed(future_map):
|
||||||
|
period, stds = future_map[fut]
|
||||||
|
try:
|
||||||
|
res = fut.result()
|
||||||
|
rows.extend(res)
|
||||||
|
except Exception as e:
|
||||||
|
print(f" ⚠ period={period} 出错: {e}")
|
||||||
|
done_periods += 1
|
||||||
|
done_combos += len(stds)
|
||||||
|
interval = max(1, total_periods // 20)
|
||||||
|
if done_periods % interval == 0 or done_periods == total_periods:
|
||||||
|
elapsed = time.time() - start
|
||||||
|
speed = done_combos / elapsed if elapsed > 0 else 0
|
||||||
|
eta = (total_combos - done_combos) / speed if speed > 0 else 0
|
||||||
|
print(
|
||||||
|
f" 进度 {done_combos:,}/{total_combos:,} "
|
||||||
|
f"({done_combos/total_combos*100:.1f}%) "
|
||||||
|
f"| {elapsed:.0f}s | ETA {eta:.0f}s"
|
||||||
|
)
|
||||||
|
|
||||||
|
df = pd.DataFrame(rows)
|
||||||
|
print(f" [{label}] 完成, 用时 {time.time() - start:.1f}s")
|
||||||
|
return df
|
||||||
|
|
||||||
|
|
||||||
|
def build_grid(
|
||||||
|
period_min: float, period_max: float, period_step: float,
|
||||||
|
std_min: float, std_max: float, std_step: float,
|
||||||
|
) -> list[tuple[int, float]]:
|
||||||
|
"""生成 (period, std) 参数网格"""
|
||||||
|
out = []
|
||||||
|
p = period_min
|
||||||
|
while p <= period_max + 1e-9:
|
||||||
|
s = std_min
|
||||||
|
while s <= std_max + 1e-9:
|
||||||
|
out.append((max(1, int(round(p))), round(s, 2)))
|
||||||
|
s += std_step
|
||||||
|
p += period_step
|
||||||
|
return sorted(set(out))
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description="布林带均线策略 - 全参数扫描 (分层搜索)")
|
||||||
|
parser.add_argument("-p", "--kline-period", default="5m", choices=["5m", "15m", "30m"])
|
||||||
|
parser.add_argument("-j", "--workers", type=int, default=max(1, (os.cpu_count() or 4) - 1))
|
||||||
|
parser.add_argument("--no-1m", action="store_true", help="禁用 1m 触及方向过滤")
|
||||||
|
parser.add_argument("--source", default="bitmart", choices=["bitmart", "binance"])
|
||||||
|
parser.add_argument("--coarse-only", action="store_true", help="只做粗扫")
|
||||||
|
parser.add_argument("--top-n", type=int, default=20, help="粗扫后取 top N 区域精扫")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
use_1m = not args.no_1m
|
||||||
|
step_min = int(args.kline_period.replace("m", ""))
|
||||||
|
|
||||||
|
out_dir = Path(__file__).resolve().parent / "strategy" / "results"
|
||||||
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
# ─── 加载数据 ───
|
||||||
|
print("=" * 90)
|
||||||
|
print("布林带均线策略 | 全参数扫描 | 2020-2025 | 200U | 1%/单 | 万五 | 90%返佣 | 100x全仓")
|
||||||
|
print("=" * 90)
|
||||||
|
print(f"\n加载 K 线数据 (2020-01-01 ~ 2026-01-01)...")
|
||||||
|
t0 = time.time()
|
||||||
|
try:
|
||||||
|
df = load_klines(args.kline_period, "2020-01-01", "2026-01-01", source=args.source)
|
||||||
|
df_1m = load_klines("1m", "2020-01-01", "2026-01-01", source=args.source) if use_1m else None
|
||||||
|
except Exception as e:
|
||||||
|
alt = "binance" if args.source == "bitmart" else "bitmart"
|
||||||
|
print(f" {args.source} 加载失败 ({e}), 尝试 {alt}...")
|
||||||
|
df = load_klines(args.kline_period, "2020-01-01", "2026-01-01", source=alt)
|
||||||
|
df_1m = load_klines("1m", "2020-01-01", "2026-01-01", source=alt) if use_1m else None
|
||||||
|
args.source = alt
|
||||||
|
print(
|
||||||
|
f" {args.kline_period}: {len(df):,} 条"
|
||||||
|
+ (f", 1m: {len(df_1m):,} 条" if df_1m is not None else "")
|
||||||
|
+ f" | 数据源: {args.source} ({time.time()-t0:.1f}s)\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 序列化数据给子进程
|
||||||
|
with tempfile.NamedTemporaryFile(suffix=".pkl", delete=False) as f_df:
|
||||||
|
df.to_pickle(f_df.name)
|
||||||
|
df_path = f_df.name
|
||||||
|
df_1m_path = None
|
||||||
|
if df_1m is not None:
|
||||||
|
with tempfile.NamedTemporaryFile(suffix=".pkl", delete=False) as f_1m:
|
||||||
|
df_1m.to_pickle(f_1m.name)
|
||||||
|
df_1m_path = f_1m.name
|
||||||
|
|
||||||
|
try:
|
||||||
|
# ─── 第一阶段:粗扫 ───
|
||||||
|
# period: 1~1000 步长50, std: 0.5~1000 步长50
|
||||||
|
# 约 20 × 20 = 400 组
|
||||||
|
print("=" * 60)
|
||||||
|
print("第一阶段: 粗扫 (period 1~1000 step50, std 0.5~1000 step50)")
|
||||||
|
print("=" * 60)
|
||||||
|
coarse_grid = build_grid(1, 1000, 50, 0.5, 1000, 50)
|
||||||
|
print(f" 参数组合数: {len(coarse_grid):,}")
|
||||||
|
|
||||||
|
coarse_df = evaluate_grid(
|
||||||
|
coarse_grid,
|
||||||
|
workers=args.workers,
|
||||||
|
df_path=df_path,
|
||||||
|
df_1m_path=df_1m_path,
|
||||||
|
use_1m=use_1m,
|
||||||
|
step_min=step_min,
|
||||||
|
label="粗扫",
|
||||||
|
)
|
||||||
|
|
||||||
|
stamp = time.strftime("%Y%m%d_%H%M%S")
|
||||||
|
coarse_csv = out_dir / f"bb_sweep_coarse_{args.kline_period}_{stamp}.csv"
|
||||||
|
coarse_df.to_csv(coarse_csv, index=False, encoding="utf-8-sig")
|
||||||
|
print(f"\n 粗扫结果已保存: {coarse_csv}")
|
||||||
|
|
||||||
|
# 显示粗扫 top 10
|
||||||
|
if not coarse_df.empty:
|
||||||
|
top10 = coarse_df.sort_values("stable_score", ascending=False).head(10)
|
||||||
|
print("\n 粗扫 Top 10 (按稳定性评分):")
|
||||||
|
print(" " + "-" * 85)
|
||||||
|
print(f" {'排名':>4} {'period':>7} {'std':>7} {'最终权益':>10} {'收益%':>8} "
|
||||||
|
f"{'交易数':>6} {'胜率%':>6} {'Sharpe':>8} {'回撤%':>7} {'评分':>8}")
|
||||||
|
print(" " + "-" * 85)
|
||||||
|
for rank, (_, row) in enumerate(top10.iterrows(), 1):
|
||||||
|
print(
|
||||||
|
f" {rank:>4} {int(row['period']):>7} {row['std']:>7.1f} "
|
||||||
|
f"{row['final_eq']:>10.2f} {row['ret_pct']:>+8.1f} "
|
||||||
|
f"{int(row['n_trades']):>6} {row['win_rate']:>6.1f} "
|
||||||
|
f"{row['sharpe']:>8.4f} {row['max_dd_pct']:>7.1f} "
|
||||||
|
f"{row['stable_score']:>8.2f}"
|
||||||
|
)
|
||||||
|
|
||||||
|
if args.coarse_only or coarse_df.empty:
|
||||||
|
print("\n粗扫完成。")
|
||||||
|
return
|
||||||
|
|
||||||
|
# ─── 第二阶段:中扫 ───
|
||||||
|
# 取粗扫 top N 的区域,在其周围 ±50 范围内用步长 10 精扫
|
||||||
|
print(f"\n{'=' * 60}")
|
||||||
|
print(f"第二阶段: 中扫 (粗扫 Top {args.top_n} 区域, 步长 10)")
|
||||||
|
print("=" * 60)
|
||||||
|
|
||||||
|
top_coarse = coarse_df.sort_values("stable_score", ascending=False).head(args.top_n)
|
||||||
|
mid_params = set()
|
||||||
|
for _, row in top_coarse.iterrows():
|
||||||
|
p_center = int(row["period"])
|
||||||
|
s_center = float(row["std"])
|
||||||
|
for p in range(max(1, p_center - 50), min(1001, p_center + 51), 10):
|
||||||
|
for s_val in np.arange(max(0.5, s_center - 50), min(1000.5, s_center + 51), 10):
|
||||||
|
mid_params.add((max(1, int(round(p))), round(float(s_val), 2)))
|
||||||
|
|
||||||
|
mid_grid = sorted(mid_params)
|
||||||
|
print(f" 参数组合数: {len(mid_grid):,}")
|
||||||
|
|
||||||
|
mid_df = evaluate_grid(
|
||||||
|
mid_grid,
|
||||||
|
workers=args.workers,
|
||||||
|
df_path=df_path,
|
||||||
|
df_1m_path=df_1m_path,
|
||||||
|
use_1m=use_1m,
|
||||||
|
step_min=step_min,
|
||||||
|
label="中扫",
|
||||||
|
)
|
||||||
|
|
||||||
|
mid_csv = out_dir / f"bb_sweep_mid_{args.kline_period}_{stamp}.csv"
|
||||||
|
mid_df.to_csv(mid_csv, index=False, encoding="utf-8-sig")
|
||||||
|
print(f"\n 中扫结果已保存: {mid_csv}")
|
||||||
|
|
||||||
|
# ─── 第三阶段:精扫 ───
|
||||||
|
# 取中扫 top 10 区域,在其周围 ±10 范围内用步长 1 精扫
|
||||||
|
print(f"\n{'=' * 60}")
|
||||||
|
print("第三阶段: 精扫 (中扫 Top 10 区域, 步长 1)")
|
||||||
|
print("=" * 60)
|
||||||
|
|
||||||
|
all_mid = pd.concat([coarse_df, mid_df], ignore_index=True)
|
||||||
|
top_mid = all_mid.sort_values("stable_score", ascending=False).head(10)
|
||||||
|
fine_params = set()
|
||||||
|
for _, row in top_mid.iterrows():
|
||||||
|
p_center = int(row["period"])
|
||||||
|
s_center = float(row["std"])
|
||||||
|
for p in range(max(1, p_center - 10), min(1001, p_center + 11)):
|
||||||
|
for s_val in np.arange(max(0.5, s_center - 10), min(1000.5, s_center + 11), 1.0):
|
||||||
|
fine_params.add((max(1, int(round(p))), round(float(s_val), 2)))
|
||||||
|
|
||||||
|
fine_grid = sorted(fine_params)
|
||||||
|
print(f" 参数组合数: {len(fine_grid):,}")
|
||||||
|
|
||||||
|
fine_df = evaluate_grid(
|
||||||
|
fine_grid,
|
||||||
|
workers=args.workers,
|
||||||
|
df_path=df_path,
|
||||||
|
df_1m_path=df_1m_path,
|
||||||
|
use_1m=use_1m,
|
||||||
|
step_min=step_min,
|
||||||
|
label="精扫",
|
||||||
|
)
|
||||||
|
|
||||||
|
fine_csv = out_dir / f"bb_sweep_fine_{args.kline_period}_{stamp}.csv"
|
||||||
|
fine_df.to_csv(fine_csv, index=False, encoding="utf-8-sig")
|
||||||
|
print(f"\n 精扫结果已保存: {fine_csv}")
|
||||||
|
|
||||||
|
# ─── 汇总 ───
|
||||||
|
all_results = pd.concat([coarse_df, mid_df, fine_df], ignore_index=True)
|
||||||
|
all_results = all_results.drop_duplicates(subset=["period", "std"], keep="last")
|
||||||
|
all_results = all_results.sort_values("stable_score", ascending=False)
|
||||||
|
|
||||||
|
all_csv = out_dir / f"bb_sweep_all_{args.kline_period}_{stamp}.csv"
|
||||||
|
all_results.to_csv(all_csv, index=False, encoding="utf-8-sig")
|
||||||
|
|
||||||
|
print(f"\n{'=' * 90}")
|
||||||
|
print("全部扫描完成 | 汇总结果")
|
||||||
|
print("=" * 90)
|
||||||
|
print(f"总计评估: {len(all_results):,} 组参数")
|
||||||
|
print(f"结果文件: {all_csv}\n")
|
||||||
|
|
||||||
|
# Top 20
|
||||||
|
top20 = all_results.head(20)
|
||||||
|
print("Top 20 (按稳定性评分):")
|
||||||
|
print("-" * 95)
|
||||||
|
print(f"{'排名':>4} {'period':>7} {'std':>7} {'最终权益':>10} {'收益%':>8} "
|
||||||
|
f"{'交易数':>6} {'胜率%':>6} {'Sharpe':>8} {'回撤%':>7} {'评分':>8}")
|
||||||
|
print("-" * 95)
|
||||||
|
for rank, (_, row) in enumerate(top20.iterrows(), 1):
|
||||||
|
print(
|
||||||
|
f"{rank:>4} {int(row['period']):>7} {row['std']:>7.1f} "
|
||||||
|
f"{row['final_eq']:>10.2f} {row['ret_pct']:>+8.1f} "
|
||||||
|
f"{int(row['n_trades']):>6} {row['win_rate']:>6.1f} "
|
||||||
|
f"{row['sharpe']:>8.4f} {row['max_dd_pct']:>7.1f} "
|
||||||
|
f"{row['stable_score']:>8.2f}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 最佳参数详细回测
|
||||||
|
best = all_results.iloc[0]
|
||||||
|
print(f"\n{'=' * 90}")
|
||||||
|
print(f"最佳参数: BB({int(best['period'])}, {best['std']})")
|
||||||
|
print(f"最终权益: {best['final_eq']:.2f} U | 收益: {best['ret_pct']:+.2f}%")
|
||||||
|
print(f"交易次数: {int(best['n_trades'])} | 胜率: {best['win_rate']:.1f}%")
|
||||||
|
print(f"Sharpe: {best['sharpe']:.4f} | 最大回撤: {best['max_dd_pct']:.1f}%")
|
||||||
|
print("=" * 90)
|
||||||
|
|
||||||
|
# 逐年权益
|
||||||
|
cfg = BBMidlineConfig(
|
||||||
|
bb_period=int(best["period"]),
|
||||||
|
bb_std=float(best["std"]),
|
||||||
|
initial_capital=200.0,
|
||||||
|
margin_pct=0.01,
|
||||||
|
leverage=100.0,
|
||||||
|
cross_margin=True,
|
||||||
|
fee_rate=0.0005,
|
||||||
|
rebate_pct=0.90,
|
||||||
|
rebate_hour_utc=0,
|
||||||
|
fill_at_close=True,
|
||||||
|
use_1m_touch_filter=use_1m,
|
||||||
|
kline_step_min=step_min,
|
||||||
|
)
|
||||||
|
final_res = run_bb_midline_backtest(df, cfg, df_1m=df_1m if use_1m else None)
|
||||||
|
eq = final_res.equity_curve["equity"].dropna()
|
||||||
|
|
||||||
|
print("\n逐年权益 (年末):")
|
||||||
|
eq_ts = eq.copy()
|
||||||
|
eq_ts.index = pd.to_datetime(eq_ts.index)
|
||||||
|
prev = 200.0
|
||||||
|
for y in range(2020, 2026):
|
||||||
|
sub = eq_ts[eq_ts.index.year == y]
|
||||||
|
if len(sub) > 0:
|
||||||
|
ye = float(sub.iloc[-1])
|
||||||
|
ret = (ye - prev) / prev * 100.0 if prev > 0 else 0.0
|
||||||
|
print(f" {y}: {ye:.2f} U (当年收益 {ret:+.1f}%)")
|
||||||
|
prev = ye
|
||||||
|
|
||||||
|
print(f"\n总手续费: {final_res.total_fee:.2f} U")
|
||||||
|
print(f"总返佣: {final_res.total_rebate:.2f} U")
|
||||||
|
print(f"净手续费: {final_res.total_fee - final_res.total_rebate:.2f} U")
|
||||||
|
|
||||||
|
# 保存最佳参数交易明细
|
||||||
|
trade_path = out_dir / f"bb_sweep_best_trades_{args.kline_period}_{stamp}.csv"
|
||||||
|
trade_rows = []
|
||||||
|
for i, t in enumerate(final_res.trades, 1):
|
||||||
|
trade_rows.append({
|
||||||
|
"序号": i,
|
||||||
|
"方向": "做多" if t.side == "long" else "做空",
|
||||||
|
"开仓时间": t.entry_time,
|
||||||
|
"平仓时间": t.exit_time,
|
||||||
|
"开仓价": round(t.entry_price, 2),
|
||||||
|
"平仓价": round(t.exit_price, 2),
|
||||||
|
"净盈亏": round(t.net_pnl, 4),
|
||||||
|
"平仓原因": t.exit_reason,
|
||||||
|
})
|
||||||
|
pd.DataFrame(trade_rows).to_csv(trade_path, index=False, encoding="utf-8-sig")
|
||||||
|
print(f"\n最佳参数交易明细: {trade_path}")
|
||||||
|
|
||||||
|
finally:
|
||||||
|
Path(df_path).unlink(missing_ok=True)
|
||||||
|
if df_1m_path:
|
||||||
|
Path(df_1m_path).unlink(missing_ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
389
run_bb_midline_full_grid.py
Normal file
389
run_bb_midline_full_grid.py
Normal file
@@ -0,0 +1,389 @@
|
|||||||
|
"""
|
||||||
|
布林带均线策略 - 全参数组合扫描 (1-1000, 1-1000)
|
||||||
|
|
||||||
|
策略:
|
||||||
|
- 阳线 + 先涨碰到均线(1m判断) → 开多
|
||||||
|
- 持多: 碰上轨止盈
|
||||||
|
- 阴线 + 先跌碰到均线(1m判断) → 平多开空
|
||||||
|
- 持空: 碰下轨止盈
|
||||||
|
|
||||||
|
配置: 200U | 1%权益/单 | 万五手续费 | 90%返佣次日8点 | 100x杠杆 | 全仓
|
||||||
|
|
||||||
|
参数遍历: (0.5,0.5)(0.5,1)...(0.5,std_max), (1,0.5)(1,1)...(1,std_max), ...
|
||||||
|
直至 (period_max, std_max)
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
import time
|
||||||
|
from collections import defaultdict
|
||||||
|
from concurrent.futures import ProcessPoolExecutor, as_completed
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
sys.path.insert(0, str(Path(__file__).resolve().parents[0]))
|
||||||
|
sys.stdout.reconfigure(line_buffering=True)
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
from strategy.bb_midline_backtest import BBMidlineConfig, run_bb_midline_backtest
|
||||||
|
from strategy.data_loader import get_1m_touch_direction, load_klines
|
||||||
|
from strategy.indicators import bollinger
|
||||||
|
|
||||||
|
|
||||||
|
def build_full_param_grid(
|
||||||
|
period_min: float = 1.0,
|
||||||
|
period_max: float = 1000.0,
|
||||||
|
period_step: float = 1.0,
|
||||||
|
std_min: float = 1.0,
|
||||||
|
std_max: float = 1000.0,
|
||||||
|
std_step: float = 1.0,
|
||||||
|
) -> list[tuple[int, float]]:
|
||||||
|
"""生成全量 (period, std) 组合,period 取整"""
|
||||||
|
out = []
|
||||||
|
p = period_min
|
||||||
|
while p <= period_max:
|
||||||
|
s = std_min
|
||||||
|
while s <= std_max:
|
||||||
|
out.append((max(1, int(round(p))), round(s, 2)))
|
||||||
|
s += std_step
|
||||||
|
p += period_step
|
||||||
|
return sorted(set(out))
|
||||||
|
|
||||||
|
|
||||||
|
def stable_score(ret_pct: float, sharpe: float, dd_pct: float, n_trades: int) -> float:
|
||||||
|
"""收益稳定性评分"""
|
||||||
|
sparse_penalty = -5.0 if n_trades < 200 else 0.0
|
||||||
|
return ret_pct + sharpe * 12.0 - abs(dd_pct) * 0.8 + sparse_penalty
|
||||||
|
|
||||||
|
|
||||||
|
G_DF: pd.DataFrame | None = None
|
||||||
|
G_DF_1M: pd.DataFrame | None = None
|
||||||
|
G_USE_1M: bool = True
|
||||||
|
G_STEP_MIN: int = 5
|
||||||
|
|
||||||
|
|
||||||
|
def _init_worker(df_path: str, df_1m_path: str | None, use_1m: bool, step_min: int):
|
||||||
|
global G_DF, G_DF_1M, G_USE_1M, G_STEP_MIN
|
||||||
|
G_DF = pd.read_pickle(df_path)
|
||||||
|
G_DF_1M = pd.read_pickle(df_1m_path) if (use_1m and df_1m_path) else None
|
||||||
|
G_USE_1M = bool(use_1m)
|
||||||
|
G_STEP_MIN = int(step_min)
|
||||||
|
|
||||||
|
|
||||||
|
def _eval_period_task(args: tuple[int, list[float]]) -> list[dict]:
|
||||||
|
period, std_list = args
|
||||||
|
assert G_DF is not None
|
||||||
|
|
||||||
|
arr_touch_dir = None
|
||||||
|
if G_USE_1M and G_DF_1M is not None:
|
||||||
|
close = G_DF["close"].astype(float)
|
||||||
|
bb_mid, _, _, _ = bollinger(close, period, 1.0)
|
||||||
|
arr_touch_dir = get_1m_touch_direction(
|
||||||
|
G_DF, G_DF_1M, bb_mid.values, kline_step_min=G_STEP_MIN
|
||||||
|
)
|
||||||
|
|
||||||
|
rows: list[dict] = []
|
||||||
|
for std in std_list:
|
||||||
|
cfg = BBMidlineConfig(
|
||||||
|
bb_period=period,
|
||||||
|
bb_std=float(std),
|
||||||
|
initial_capital=200.0,
|
||||||
|
margin_pct=0.01,
|
||||||
|
leverage=100.0,
|
||||||
|
cross_margin=True,
|
||||||
|
fee_rate=0.0005,
|
||||||
|
rebate_pct=0.90,
|
||||||
|
rebate_hour_utc=0,
|
||||||
|
fill_at_close=True,
|
||||||
|
use_1m_touch_filter=G_USE_1M,
|
||||||
|
kline_step_min=G_STEP_MIN,
|
||||||
|
)
|
||||||
|
result = run_bb_midline_backtest(
|
||||||
|
G_DF,
|
||||||
|
cfg,
|
||||||
|
df_1m=G_DF_1M if G_USE_1M else None,
|
||||||
|
arr_touch_dir_override=arr_touch_dir,
|
||||||
|
)
|
||||||
|
|
||||||
|
eq = result.equity_curve["equity"].dropna()
|
||||||
|
if len(eq) == 0:
|
||||||
|
final_eq = 0.0
|
||||||
|
ret_pct = -100.0
|
||||||
|
dd_u = -200.0
|
||||||
|
dd_pct = 100.0
|
||||||
|
else:
|
||||||
|
final_eq = float(eq.iloc[-1])
|
||||||
|
ret_pct = (final_eq - cfg.initial_capital) / cfg.initial_capital * 100.0
|
||||||
|
dd_u = float((eq.astype(float) - eq.astype(float).cummax()).min())
|
||||||
|
dd_pct = abs(dd_u) / cfg.initial_capital * 100.0
|
||||||
|
|
||||||
|
n_trades = len(result.trades)
|
||||||
|
win_rate = (
|
||||||
|
sum(1 for t in result.trades if t.net_pnl > 0) / n_trades * 100.0
|
||||||
|
if n_trades > 0
|
||||||
|
else 0.0
|
||||||
|
)
|
||||||
|
pnl = result.daily_stats["pnl"].astype(float)
|
||||||
|
sharpe = (
|
||||||
|
float(pnl.mean() / pnl.std()) * np.sqrt(365.0) if pnl.std() > 0 else 0.0
|
||||||
|
)
|
||||||
|
score = stable_score(ret_pct, sharpe, dd_pct, n_trades)
|
||||||
|
|
||||||
|
rows.append(
|
||||||
|
{
|
||||||
|
"period": period,
|
||||||
|
"std": round(float(std), 2),
|
||||||
|
"final_eq": final_eq,
|
||||||
|
"ret_pct": ret_pct,
|
||||||
|
"n_trades": n_trades,
|
||||||
|
"win_rate": win_rate,
|
||||||
|
"sharpe": sharpe,
|
||||||
|
"max_dd_u": dd_u,
|
||||||
|
"max_dd_pct": dd_pct,
|
||||||
|
"stable_score": score,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
def evaluate_grid(
|
||||||
|
params: list[tuple[int, float]],
|
||||||
|
*,
|
||||||
|
workers: int,
|
||||||
|
df_path: str,
|
||||||
|
df_1m_path: str | None,
|
||||||
|
use_1m: bool,
|
||||||
|
step_min: int,
|
||||||
|
) -> pd.DataFrame:
|
||||||
|
by_period: dict[int, set[float]] = defaultdict(set)
|
||||||
|
for p, s in params:
|
||||||
|
by_period[int(p)].add(round(float(s), 2))
|
||||||
|
|
||||||
|
tasks = [(p, sorted(stds)) for p, stds in sorted(by_period.items())]
|
||||||
|
total_periods = len(tasks)
|
||||||
|
total_combos = sum(len(stds) for _, stds in tasks)
|
||||||
|
|
||||||
|
print(f" 评估 {total_combos:,} 组参数, {total_periods} 个 period, workers={workers}")
|
||||||
|
start = time.time()
|
||||||
|
rows: list[dict] = []
|
||||||
|
done_periods = 0
|
||||||
|
done_combos = 0
|
||||||
|
|
||||||
|
with ProcessPoolExecutor(
|
||||||
|
max_workers=workers,
|
||||||
|
initializer=_init_worker,
|
||||||
|
initargs=(df_path, df_1m_path, use_1m, step_min),
|
||||||
|
) as ex:
|
||||||
|
future_map = {ex.submit(_eval_period_task, task): task for task in tasks}
|
||||||
|
for fut in as_completed(future_map):
|
||||||
|
period, stds = future_map[fut]
|
||||||
|
res = fut.result()
|
||||||
|
rows.extend(res)
|
||||||
|
done_periods += 1
|
||||||
|
done_combos += len(stds)
|
||||||
|
if done_periods % max(1, total_periods // 20) == 0 or done_periods == total_periods:
|
||||||
|
elapsed = time.time() - start
|
||||||
|
print(f" 进度 {done_combos:,}/{total_combos:,} ({elapsed:.0f}s)")
|
||||||
|
|
||||||
|
df = pd.DataFrame(rows)
|
||||||
|
print(f" 完成, 用时 {time.time() - start:.1f}s")
|
||||||
|
return df
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description="布林带均线策略全参数扫描 (1-1000, 1-1000)")
|
||||||
|
parser.add_argument(
|
||||||
|
"--period-min", type=float, default=1.0, help="period 下限"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--period-max", type=float, default=1000.0, help="period 上限"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--period-step", type=float, default=10.0, help="period 步长 (建议10以缩短时间)"
|
||||||
|
)
|
||||||
|
parser.add_argument("--std-min", type=float, default=0.5, help="std 下限")
|
||||||
|
parser.add_argument("--std-max", type=float, default=1000.0, help="std 上限")
|
||||||
|
parser.add_argument(
|
||||||
|
"--std-step", type=float, default=1.0, help="std 步长"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-p", "--kline-period", default="5m", choices=["5m", "15m", "30m"]
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-j", "--workers", type=int, default=max(1, (os.cpu_count() or 4) - 1)
|
||||||
|
)
|
||||||
|
parser.add_argument("--no-1m", action="store_true", help="禁用 1m 触及方向过滤")
|
||||||
|
parser.add_argument(
|
||||||
|
"--source",
|
||||||
|
default="bitmart",
|
||||||
|
choices=["bitmart", "binance"],
|
||||||
|
help="数据源",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--quick",
|
||||||
|
action="store_true",
|
||||||
|
help="快速模式: period 1-200 step20, std 1-20 step2",
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
use_1m = not args.no_1m
|
||||||
|
step_min = int(args.kline_period.replace("m", ""))
|
||||||
|
|
||||||
|
if args.quick:
|
||||||
|
args.period_min = 1.0
|
||||||
|
args.period_max = 200.0
|
||||||
|
args.period_step = 20.0
|
||||||
|
args.std_min = 0.5
|
||||||
|
args.std_max = 20.0
|
||||||
|
args.std_step = 1.0
|
||||||
|
print(" 快速模式: period 1-200 step20, std 1-20 step2")
|
||||||
|
|
||||||
|
out_dir = Path(__file__).resolve().parent / "strategy" / "results"
|
||||||
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
print("加载 K 线数据 (2020-01-01 ~ 2026-01-01)...")
|
||||||
|
t0 = time.time()
|
||||||
|
try:
|
||||||
|
df = load_klines(args.kline_period, "2020-01-01", "2026-01-01", source=args.source)
|
||||||
|
df_1m = (
|
||||||
|
load_klines("1m", "2020-01-01", "2026-01-01", source=args.source)
|
||||||
|
if use_1m
|
||||||
|
else None
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
alt = "binance" if args.source == "bitmart" else "bitmart"
|
||||||
|
print(f" {args.source} 加载失败 ({e}), 尝试 {alt}...")
|
||||||
|
df = load_klines(args.kline_period, "2020-01-01", "2026-01-01", source=alt)
|
||||||
|
df_1m = (
|
||||||
|
load_klines("1m", "2020-01-01", "2026-01-01", source=alt)
|
||||||
|
if use_1m
|
||||||
|
else None
|
||||||
|
)
|
||||||
|
args.source = alt
|
||||||
|
print(
|
||||||
|
f" {args.kline_period}: {len(df):,} 条"
|
||||||
|
+ (f", 1m: {len(df_1m):,} 条" if df_1m is not None else "")
|
||||||
|
+ f" | 数据源: {args.source} ({time.time()-t0:.1f}s)\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
grid = build_full_param_grid(
|
||||||
|
period_min=args.period_min,
|
||||||
|
period_max=args.period_max,
|
||||||
|
period_step=args.period_step,
|
||||||
|
std_min=args.std_min,
|
||||||
|
std_max=args.std_max,
|
||||||
|
std_step=args.std_step,
|
||||||
|
)
|
||||||
|
print(f"参数网格: {len(grid):,} 组")
|
||||||
|
print(
|
||||||
|
f" period: {args.period_min}~{args.period_max} step{args.period_step}, "
|
||||||
|
f"std: {args.std_min}~{args.std_max} step{args.std_step}"
|
||||||
|
)
|
||||||
|
|
||||||
|
with tempfile.NamedTemporaryFile(suffix=".pkl", delete=False) as f_df:
|
||||||
|
df.to_pickle(f_df.name)
|
||||||
|
df_path = f_df.name
|
||||||
|
df_1m_path = None
|
||||||
|
if df_1m is not None:
|
||||||
|
with tempfile.NamedTemporaryFile(suffix=".pkl", delete=False) as f_1m:
|
||||||
|
df_1m.to_pickle(f_1m.name)
|
||||||
|
df_1m_path = f_1m.name
|
||||||
|
|
||||||
|
try:
|
||||||
|
result_df = evaluate_grid(
|
||||||
|
grid,
|
||||||
|
workers=args.workers,
|
||||||
|
df_path=df_path,
|
||||||
|
df_1m_path=df_1m_path,
|
||||||
|
use_1m=use_1m,
|
||||||
|
step_min=step_min,
|
||||||
|
)
|
||||||
|
finally:
|
||||||
|
Path(df_path).unlink(missing_ok=True)
|
||||||
|
if df_1m_path:
|
||||||
|
Path(df_1m_path).unlink(missing_ok=True)
|
||||||
|
|
||||||
|
if result_df.empty:
|
||||||
|
print("无有效结果")
|
||||||
|
return
|
||||||
|
|
||||||
|
best_stable = result_df.sort_values("stable_score", ascending=False).iloc[0]
|
||||||
|
best_return = result_df.sort_values("ret_pct", ascending=False).iloc[0]
|
||||||
|
|
||||||
|
stamp = time.strftime("%Y%m%d_%H%M%S")
|
||||||
|
csv_path = out_dir / f"bb_midline_full_grid_{args.kline_period}_{stamp}.csv"
|
||||||
|
result_df.to_csv(csv_path, index=False)
|
||||||
|
print(f"\n扫描结果已保存: {csv_path}")
|
||||||
|
|
||||||
|
print("\n" + "=" * 90)
|
||||||
|
print("布林带均线策略 | 2020-2025 | 200U | 1%权益/单 | 万五 | 90%返佣次日8点 | 100x全仓")
|
||||||
|
print("=" * 90)
|
||||||
|
print(
|
||||||
|
f"最佳稳定参数: BB({int(best_stable['period'])},{best_stable['std']}) | "
|
||||||
|
f"权益={best_stable['final_eq']:.1f}U | 收益={best_stable['ret_pct']:+.1f}% | "
|
||||||
|
f"回撤={best_stable['max_dd_pct']:.1f}% | Sharpe={best_stable['sharpe']:.2f} | "
|
||||||
|
f"交易={int(best_stable['n_trades'])}"
|
||||||
|
)
|
||||||
|
print(
|
||||||
|
f"最高收益参数: BB({int(best_return['period'])},{best_return['std']}) | "
|
||||||
|
f"权益={best_return['final_eq']:.1f}U | 收益={best_return['ret_pct']:+.1f}% | "
|
||||||
|
f"回撤={best_return['max_dd_pct']:.1f}% | Sharpe={best_return['sharpe']:.2f} | "
|
||||||
|
f"交易={int(best_return['n_trades'])}"
|
||||||
|
)
|
||||||
|
print("=" * 90)
|
||||||
|
|
||||||
|
cfg = BBMidlineConfig(
|
||||||
|
bb_period=int(best_stable["period"]),
|
||||||
|
bb_std=float(best_stable["std"]),
|
||||||
|
initial_capital=200.0,
|
||||||
|
margin_pct=0.01,
|
||||||
|
leverage=100.0,
|
||||||
|
cross_margin=True,
|
||||||
|
fee_rate=0.0005,
|
||||||
|
rebate_pct=0.90,
|
||||||
|
rebate_hour_utc=0,
|
||||||
|
fill_at_close=True,
|
||||||
|
use_1m_touch_filter=use_1m,
|
||||||
|
kline_step_min=step_min,
|
||||||
|
)
|
||||||
|
final_res = run_bb_midline_backtest(
|
||||||
|
df, cfg, df_1m=df_1m if use_1m else None
|
||||||
|
)
|
||||||
|
eq = final_res.equity_curve["equity"].dropna()
|
||||||
|
|
||||||
|
print("\n逐年权益 (年末):")
|
||||||
|
eq_ts = eq.copy()
|
||||||
|
eq_ts.index = pd.to_datetime(eq_ts.index)
|
||||||
|
prev = 200.0
|
||||||
|
for y in range(2020, 2026):
|
||||||
|
sub = eq_ts[eq_ts.index.year == y]
|
||||||
|
if len(sub) > 0:
|
||||||
|
ye = float(sub.iloc[-1])
|
||||||
|
ret = (ye - prev) / prev * 100.0 if prev > 0 else 0.0
|
||||||
|
print(f" {y}: {ye:.1f} U (当年收益 {ret:+.1f}%)")
|
||||||
|
prev = ye
|
||||||
|
|
||||||
|
trade_path = out_dir / f"bb_midline_best_trades_{args.kline_period}_{stamp}.csv"
|
||||||
|
rows = []
|
||||||
|
for i, t in enumerate(final_res.trades, 1):
|
||||||
|
rows.append({
|
||||||
|
"序号": i,
|
||||||
|
"方向": "做多" if t.side == "long" else "做空",
|
||||||
|
"开仓时间": t.entry_time,
|
||||||
|
"平仓时间": t.exit_time,
|
||||||
|
"开仓价": round(t.entry_price, 2),
|
||||||
|
"平仓价": round(t.exit_price, 2),
|
||||||
|
"净盈亏": round(t.net_pnl, 2),
|
||||||
|
"平仓原因": t.exit_reason,
|
||||||
|
})
|
||||||
|
pd.DataFrame(rows).to_csv(trade_path, index=False, encoding="utf-8-sig")
|
||||||
|
print(f"\n最佳参数交易明细: {trade_path}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
87702
strategy/results/bb_midline_best_trades_5m_20260227_041455.csv
Normal file
87702
strategy/results/bb_midline_best_trades_5m_20260227_041455.csv
Normal file
File diff suppressed because it is too large
Load Diff
46876
strategy/results/bb_midline_best_trades_5m_20260227_041613.csv
Normal file
46876
strategy/results/bb_midline_best_trades_5m_20260227_041613.csv
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
|||||||
|
period,std,final_eq,ret_pct,n_trades,win_rate,sharpe,max_dd_u,max_dd_pct,stable_score
|
||||||
|
20,2.0,0.0042263950973378305,-99.99788680245133,87701,33.69858952577508,-0.8399134626089371,-265.2264490104231,132.61322450521155,-216.16742795792783
|
||||||
|
101
strategy/results/bb_midline_full_grid_5m_20260227_041613.csv
Normal file
101
strategy/results/bb_midline_full_grid_5m_20260227_041613.csv
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
period,std,final_eq,ret_pct,n_trades,win_rate,sharpe,max_dd_u,max_dd_pct,stable_score
|
||||||
|
141,1.0,0.3725631525960213,-99.81371842370199,30049,32.88628573330227,-1.1419908723322958,-239.4883338177086,119.7441669088543,-209.312942418773
|
||||||
|
141,3.0,0.8935583586833639,-99.55322082065832,30102,22.692844329280444,-1.0449970179309893,-226.953389102229,113.4766945511145,-202.8745406767218
|
||||||
|
141,5.0,2.5724707153438344,-98.71376464232809,30090,21.06679960119641,-0.5885453783225604,-297.2986371543968,148.6493185771984,-224.69576404395752
|
||||||
|
141,7.0,3.4685697259990484,-98.26571513700047,30092,20.72643892064336,-0.48007699971208917,-328.79731669397,164.398658346985,-235.54556581113354
|
||||||
|
141,9.0,3.580904571423253,-98.20954771428838,30091,20.66730916220797,-0.49161721726796526,-306.39410158641846,153.19705079320923,-226.66659495607135
|
||||||
|
141,11.0,3.9783828811208326,-98.01080855943958,30091,20.657339403808447,-0.48652196781648543,-307.6960797832785,153.84803989163925,-226.92750408654882
|
||||||
|
141,13.0,3.9305433487109616,-98.03472832564452,30091,20.65401615100861,-0.48196282506779964,-311.2585673086382,155.6292836543191,-228.3217091499134
|
||||||
|
141,15.0,4.237395487302333,-97.88130225634883,30091,20.65401615100861,-0.48117309142726505,-311.1693851846781,155.58469259233905,-228.12313342734726
|
||||||
|
141,17.0,4.1877548957065605,-97.90612255214673,30091,20.65401615100861,-0.4813053584937705,-311.19057123284057,155.59528561642028,-228.15801534720822
|
||||||
|
141,19.0,4.1489686043404,-97.9255156978298,30091,20.65401615100861,-0.4814041115675331,-311.207124787311,155.6035623936555,-228.1852149515646
|
||||||
|
181,1.0,1.54541089852939,-99.22729455073531,25902,31.850822330321982,-1.199437232610771,-208.37766382491262,104.18883191245631,-196.9716068720296
|
||||||
|
181,3.0,1.9965918755290404,-99.00170406223548,25928,22.39663684048133,-1.0619028735115128,-233.36576433437043,116.68288216718521,-205.0908442781218
|
||||||
|
181,5.0,8.071401651585806,-95.9642991742071,25919,20.965315019869593,-0.6710765949697802,-240.5263670750946,120.2631835375473,-200.22776514388232
|
||||||
|
181,7.0,13.682622486061769,-93.15868875696911,25914,20.71853052404106,-0.4523005061492697,-325.41220228547587,162.70610114273794,-228.7511757449507
|
||||||
|
181,9.0,13.060274116014678,-93.46986294199266,25913,20.66144406282561,-0.45908377193167316,-323.2236062913858,161.6118031456929,-228.26831072172706
|
||||||
|
181,11.0,13.68249600732716,-93.15875199633642,25913,20.646007795315093,-0.4571038290855216,-324.09815757538547,162.04907878769274,-228.28326097551687
|
||||||
|
181,13.0,13.695219818316474,-93.15239009084176,25913,20.646007795315093,-0.455292429728791,-325.93245317752525,162.96622658876262,-228.98888051859734
|
||||||
|
181,15.0,13.67098609342226,-93.16450695328886,25913,20.646007795315093,-0.4553571498005006,-325.93961655899017,162.96980827949508,-229.00463937449092
|
||||||
|
181,17.0,13.426859791565604,-93.28657010421719,25913,20.646007795315093,-0.45602310778001637,-326.0117792097359,163.00588960486795,-229.16355908147176
|
||||||
|
181,19.0,13.426859791565604,-93.28657010421719,25913,20.646007795315093,-0.45602310778001637,-326.0117792097359,163.00588960486795,-229.16355908147176
|
||||||
|
121,1.0,0.6316466226049364,-99.68417668869753,33004,33.78378378378378,-1.052222338701853,-206.42730524680505,103.21365262340252,-194.8817668518418
|
||||||
|
121,3.0,0.6213813515500181,-99.689309324225,33066,23.099256033387768,-0.9034975192511878,-214.48595875045243,107.24297937522623,-196.32566305542025
|
||||||
|
121,5.0,1.9136436948828712,-99.04317815255857,33056,21.484753146176185,-0.5982068102544683,-211.51121036008402,105.75560518004201,-190.82614401964582
|
||||||
|
121,7.0,1.0735613492988372,-99.46321932535058,33046,21.103915753797736,-0.4968590955505304,-244.79461181542908,122.39730590771454,-203.34337319812857
|
||||||
|
121,9.0,1.1663959453321875,-99.4168020273339,33046,21.040367971917934,-0.491645833390951,-247.9707541823954,123.9853770911977,-204.5048537009835
|
||||||
|
121,11.0,1.2183278724323423,-99.39083606378382,33046,21.031289717363673,-0.4933546135117468,-247.94934993910346,123.97467496955173,-204.49083140156617
|
||||||
|
121,13.0,1.2425260804680303,-99.37873695976599,33046,21.028263632512257,-0.4874890223174935,-251.45344300781414,125.72672150390707,-205.80998243070158
|
||||||
|
121,15.0,1.2856620112079782,-99.357168994396,33046,21.028263632512257,-0.4873534021489805,-251.41190743169045,125.70595371584523,-205.77017279285997
|
||||||
|
121,17.0,1.2515397754677258,-99.37423011226613,33046,21.028263632512257,-0.4874574412622979,-251.4447637233199,125.72238186165995,-205.80162489674169
|
||||||
|
121,19.0,1.2605473760065111,-99.36972631199674,33046,21.028263632512257,-0.4868456824111407,-251.43609030718045,125.71804515359023,-205.78631062380262
|
||||||
|
101,1.0,1.3812151149048713,-99.30939244254756,36046,34.84436553293014,-1.0513559683073899,-211.596726954287,105.79836347714348,-196.56435484395104
|
||||||
|
101,3.0,1.3107125459371607,-99.34464372703142,36135,23.616991836169916,-0.8487417539167138,-219.7768214710855,109.88841073554273,-197.4402733624662
|
||||||
|
101,5.0,6.3255050108003585,-96.83724749459982,36121,21.726973228869635,-0.4279048943481762,-310.0263705615421,155.01318528077104,-225.98265445139478
|
||||||
|
101,7.0,2.898681370453997,-98.550659314773,36119,21.346105927628116,-0.5105396352220445,-266.04726570364727,133.02363285182363,-211.09604121889646
|
||||||
|
101,9.0,2.337590220963109,-98.83120488951845,36119,21.276890279354358,-0.4946838636498477,-266.9034571984829,133.45172859924145,-211.52879413270978
|
||||||
|
101,11.0,2.248555784854723,-98.87572210757264,36119,21.257509897837704,-0.49917680860743774,-266.9359298883164,133.4679649441582,-211.64021576618848
|
||||||
|
101,13.0,2.498694325239585,-98.7506528373802,36119,21.254741271906752,-0.49039344526005274,-271.61493372988264,135.80746686494132,-213.28134767245388
|
||||||
|
101,15.0,2.4446207313192856,-98.77768963434036,36119,21.254741271906752,-0.49053481242017677,-271.6323210497848,135.8161605248924,-213.31703580329642
|
||||||
|
101,17.0,2.46021630053702,-98.7698918497315,36119,21.254741271906752,-0.4895899161479696,-271.6273063072573,135.81365315362865,-213.29589336641004
|
||||||
|
101,19.0,2.46021630053702,-98.7698918497315,36119,21.254741271906752,-0.4895899161479696,-271.6273063072573,135.81365315362865,-213.29589336641004
|
||||||
|
81,1.0,0.38789258931728443,-99.80605370534136,40428,35.93054318788958,-1.3592208304573201,-203.78168899414376,101.89084449707188,-197.6293792684867
|
||||||
|
81,3.0,2.35707122036968,-98.82146438981516,40594,24.326255111592847,-1.0223276542135724,-209.41404598106254,104.70702299053127,-194.85501463280306
|
||||||
|
81,5.0,2.738798055863725,-98.63060097206814,40574,22.06092571597575,-0.612968955468472,-226.175262272745,113.08763113637251,-196.4563333467878
|
||||||
|
81,7.0,1.6379035690835946,-99.1810482154582,40564,21.721230647865102,-0.6189674329263939,-232.6156018912471,116.30780094562357,-199.65489816707378
|
||||||
|
81,9.0,1.5795652645096294,-99.21021736774519,40559,21.664735323849207,-0.6049640177737161,-233.1884392554897,116.59421962774485,-199.74516128322568
|
||||||
|
81,11.0,1.4844472673119984,-99.257776366344,40559,21.652407603737764,-0.6068398317520862,-233.2567175159563,116.62835875797815,-199.84254135375159
|
||||||
|
81,13.0,1.6060637766271089,-99.19696811168645,40558,21.650475861728882,-0.598769408587746,-233.1961706190891,116.59808530954454,-199.66066926237505
|
||||||
|
81,15.0,1.5941017930091896,-99.2029491034954,40558,21.650475861728882,-0.5978375540333052,-233.20318933464523,116.6015946673226,-199.65827548575314
|
||||||
|
81,17.0,1.5919727231579546,-99.20401363842102,40558,21.650475861728882,-0.597844544661025,-233.20443857023713,116.60221928511857,-199.65992360244817
|
||||||
|
81,19.0,1.5919727231579546,-99.20401363842102,40558,21.650475861728882,-0.597844544661025,-233.20443857023713,116.60221928511857,-199.65992360244817
|
||||||
|
61,1.0,0.18588972434247641,-99.90705513782876,46603,37.351672639100485,-1.271435744311454,-199.8161496463976,99.9080748231988,-195.09074392812525
|
||||||
|
61,3.0,1.2411584337304506,-99.37942078313478,46919,25.1049681365758,-1.002261040309346,-198.90841062139575,99.45420531069787,-190.96991751540523
|
||||||
|
61,5.0,1.2648197669081618,-99.36759011654591,46875,22.5664,-0.7628705030782208,-199.20933748136585,99.60466874068292,-188.2057711460309
|
||||||
|
61,7.0,0.5589298789988087,-99.7205350605006,46863,22.19448178733756,-0.7542253286061638,-199.61902667123155,99.80951333561578,-188.61884967226717
|
||||||
|
61,9.0,0.6392894290548907,-99.68035528547256,46855,22.149183651691388,-0.7325411704462591,-202.84398590545504,101.4219929527275,-189.6084436930097
|
||||||
|
61,11.0,0.6976965475421673,-99.65115172622892,46853,22.137323116982905,-0.7221597770072495,-205.6043321758009,102.80216608790045,-190.55880192063626
|
||||||
|
61,13.0,0.6606675247637739,-99.66966623761812,46852,22.131392469905233,-0.7288789587814761,-205.63860970568084,102.8193048528404,-190.67165762526815
|
||||||
|
61,15.0,0.6921328687861904,-99.6539335656069,46852,22.131392469905233,-0.7250593802377309,-205.60948243768982,102.80474121884491,-190.5984391035356
|
||||||
|
61,17.0,0.6711409318082459,-99.66442953409587,46852,22.131392469905233,-0.7467447191672053,-201.21777452725777,100.60888726362889,-189.11247597500545
|
||||||
|
61,19.0,0.6711409318082459,-99.66442953409587,46852,22.131392469905233,-0.7467447191672053,-201.21777452725777,100.60888726362889,-189.11247597500545
|
||||||
|
41,1.0,0.015212549931630836,-99.99239372503419,58232,38.022049732106055,-0.9675643564696258,-201.18916338481642,100.5945816924082,-192.07883135659625
|
||||||
|
41,3.0,0.05802476361942974,-99.97098761819028,58921,25.78367644812546,-0.8141023181668979,-221.8357360102845,110.91786800514225,-198.47450984030687
|
||||||
|
41,5.0,0.018204245993222193,-99.99089787700339,58828,22.76806962670837,-0.7747373783069786,-220.02688832306336,110.01344416153167,-197.29850174591246
|
||||||
|
41,7.0,0.018803260658613055,-99.99059836967069,58800,22.43877551020408,-0.7516083628047471,-213.19677775293198,106.598388876466,-194.28860982450044
|
||||||
|
41,9.0,0.019308294015552056,-99.99034585299222,58793,22.393822393822393,-0.7274306410639146,-220.4007030959921,110.20035154799605,-196.87979478415605
|
||||||
|
41,11.0,0.01806066289798151,-99.990969668551,58793,22.387018862789787,-0.728322811635155,-220.38697020477568,110.19348510238784,-196.88563149008314
|
||||||
|
41,13.0,0.01727499608890596,-99.99136250195555,58794,22.378133823179237,-0.7291549517475395,-220.38774928750541,110.1938746437527,-196.8963216379282
|
||||||
|
41,15.0,0.017696144371817355,-99.99115192781409,58794,22.378133823179237,-0.7285582364048866,-220.38733166854774,110.19366583427387,-196.88878343209183
|
||||||
|
41,17.0,0.017696144371817355,-99.99115192781409,58794,22.378133823179237,-0.7285582364048866,-220.38733166854774,110.19366583427387,-196.88878343209183
|
||||||
|
41,19.0,0.017696144371817355,-99.99115192781409,58794,22.378133823179237,-0.7285582364048866,-220.38733166854774,110.19366583427387,-196.88878343209183
|
||||||
|
161,1.0,0.18507916598399116,-99.90746041700801,27807,32.272449383248826,-1.3626921206535092,-208.8205005280496,104.4102502640248,-199.78796607606995
|
||||||
|
161,3.0,0.23998103803793114,-99.88000948098103,27834,22.53359200977222,-1.3100826718988585,-210.56993164514623,105.28496582257311,-199.82897420182582
|
||||||
|
161,5.0,0.5855126564436772,-99.70724367177816,27825,21.02785265049416,-0.92014274909802,-209.8497421239102,104.92487106195509,-194.68885351051847
|
||||||
|
161,7.0,0.47603821222660997,-99.7619808938867,27824,20.741086831512366,-0.8540499785557677,-222.3354842636233,111.16774213181164,-198.94477434200525
|
||||||
|
161,9.0,0.5528348080519955,-99.72358259597401,27824,20.68717653824037,-0.8742066357356877,-222.36440030194234,111.18220015097118,-199.15982234557922
|
||||||
|
161,11.0,0.5547483846886698,-99.72262580765566,27823,20.677137619954713,-0.8745006016030721,-222.3500000989885,111.17500004949426,-199.15663306648793
|
||||||
|
161,13.0,0.5642197176946141,-99.7178901411527,27823,20.67354347122884,-0.8685846686060622,-222.34258574695468,111.17129287347734,-199.0779404632073
|
||||||
|
161,15.0,0.5973160858428005,-99.7013419570786,27823,20.67354347122884,-0.8684350979936863,-222.3166772371032,111.1583386185516,-199.0492340278441
|
||||||
|
161,17.0,0.5931270699461915,-99.70343646502691,27823,20.67354347122884,-0.8684544122038876,-222.31995648391177,111.1599782419559,-199.0528720050383
|
||||||
|
161,19.0,0.5869955515964692,-99.70650222420177,27823,20.67354347122884,-0.8684828298480397,-222.32475636113264,111.16237818056631,-199.0581987268313
|
||||||
|
21,1.0,0.0012545307129279897,-99.99937273464353,83039,38.97686629174243,-1.2206218969570914,-214.4358469291487,107.21792346457435,-200.4211742697881
|
||||||
|
21,3.0,0.003141325327724193,-99.99842933733613,85276,27.505980580702662,-0.611161009432778,-288.68540178116535,144.34270089058268,-222.80652216299563
|
||||||
|
21,5.0,0.0004631489929338503,-99.99976842550353,84980,24.166862791245,-0.5990293997070005,-257.5217756663234,128.7608878331617,-210.19683148851692
|
||||||
|
21,7.0,0.0005214659574309736,-99.99973926702128,84944,23.981682049350162,-0.5113764484639733,-295.2633541495073,147.63167707475364,-224.24159830839187
|
||||||
|
21,9.0,0.0004554326656295686,-99.99977228366718,84945,23.968450173641767,-0.5117181252434727,-295.0636443124399,147.53182215621996,-224.16584751156483
|
||||||
|
21,11.0,0.0004365337751968878,-99.9997817331124,84945,23.960209547354168,-0.512010867309432,-295.0636628918621,147.53183144593106,-224.16937729757046
|
||||||
|
21,13.0,0.0004331898842896685,-99.99978340505785,84946,23.95757304640595,-0.5120799195015522,-295.06366617922765,147.53183308961383,-224.17020891076754
|
||||||
|
21,15.0,0.0004331388233741457,-99.99978343058831,84946,23.95757304640595,-0.512079919638494,-295.06366622942545,147.53183311471273,-224.17020895802042
|
||||||
|
21,17.0,0.0004331388233741457,-99.99978343058831,84946,23.95757304640595,-0.512079919638494,-295.06366622942545,147.53183311471273,-224.17020895802042
|
||||||
|
21,19.0,0.00043289925579133006,-99.9997835503721,84947,23.957291016751622,-0.5120799202809959,-295.06366646494337,147.53183323247168,-224.1702091797214
|
||||||
|
1,1.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
1,3.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
1,5.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
1,7.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
1,9.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
1,11.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
1,13.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
1,15.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
1,17.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
1,19.0,7.332091932035972e-15,-100.0,314852,34.19479628523877,-1.9254884054263868,-199.9,99.95,-203.06586086511663
|
||||||
|
401
strategy/results/bb_sweep_coarse_5m_20260227_054010.csv
Normal file
401
strategy/results/bb_sweep_coarse_5m_20260227_054010.csv
Normal file
@@ -0,0 +1,401 @@
|
|||||||
|
period,std,final_eq,ret_pct,n_trades,win_rate,sharpe,max_dd_u,max_dd_pct,stable_score
|
||||||
|
251,0.5,1.26,-99.37,21094,37.48,-1.1405,-199.63,99.82,-192.91
|
||||||
|
251,50.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,100.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,150.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,200.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,250.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,300.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,350.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,400.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,450.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,500.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,550.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,600.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,650.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,700.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,750.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,800.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,850.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,900.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
251,950.5,11.52,-94.24,21200,20.43,-0.4469,-243.29,121.65,-196.92
|
||||||
|
201,0.5,0.9,-99.55,24082,38.36,-1.1894,-201.26,100.63,-194.33
|
||||||
|
201,50.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,100.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,150.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,200.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,250.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,300.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,350.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,400.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,450.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,500.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,550.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,600.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,650.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,700.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,750.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,800.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,850.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,900.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
201,950.5,9.72,-95.14,24243,20.74,-0.8051,-220.74,110.37,-193.1
|
||||||
|
101,0.5,2.93,-98.53,35484,40.7,-1.0208,-200.53,100.27,-191.0
|
||||||
|
101,50.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,100.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,150.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,200.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,250.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,300.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,350.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,400.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,450.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,500.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,550.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,600.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,650.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,700.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,750.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,800.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,850.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,900.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
101,950.5,2.46,-98.77,36119,21.25,-0.4896,-271.63,135.81,-213.3
|
||||||
|
151,0.5,0.45,-99.78,28965,38.93,-1.1185,-203.05,101.52,-194.42
|
||||||
|
151,50.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,100.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,150.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,200.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,250.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,300.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,350.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,400.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,450.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,500.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,550.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,600.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,650.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,700.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,750.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,800.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,850.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,900.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
151,950.5,1.03,-99.48,29301,20.34,-0.5489,-298.09,149.05,-225.31
|
||||||
|
51,0.5,0.26,-99.87,50009,41.39,-1.3186,-200.91,100.46,-196.05
|
||||||
|
51,50.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,100.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,150.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,200.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,250.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,300.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,350.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,400.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,450.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,500.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,550.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,600.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,650.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,700.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,750.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,800.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,850.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,900.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
51,950.5,0.1,-99.95,51874,22.13,-0.8994,-213.73,106.87,-196.24
|
||||||
|
1,0.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,50.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,100.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,150.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,200.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,250.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,300.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,350.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,400.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,450.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,500.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,550.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,600.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,650.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,700.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,750.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,800.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,850.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,900.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
1,950.5,0.0,-100.0,314852,34.19,-1.9255,-199.9,99.95,-203.07
|
||||||
|
301,0.5,3.29,-98.36,18999,36.79,-0.9796,-210.35,105.17,-194.25
|
||||||
|
301,50.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,100.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,150.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,200.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,250.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,300.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,350.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,400.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,450.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,500.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,550.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,600.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,650.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,700.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,750.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,800.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,850.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,900.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
301,950.5,52.84,-73.58,19058,20.5,-0.3757,-226.55,113.28,-168.71
|
||||||
|
351,0.5,3.36,-98.32,17810,36.27,-1.221,-197.11,98.55,-191.81
|
||||||
|
351,50.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,100.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,150.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,200.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,250.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,300.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,350.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,400.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,450.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,500.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,550.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,600.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,650.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,700.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,750.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,800.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,850.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,900.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
351,950.5,9.61,-95.2,17857,19.48,-0.6357,-200.97,100.48,-183.21
|
||||||
|
401,0.5,3.01,-98.5,17114,34.98,-1.2456,-197.42,98.71,-192.41
|
||||||
|
401,50.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,100.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,150.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,200.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,250.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,300.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,350.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,400.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,450.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,500.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,550.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,600.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,650.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,700.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,750.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,800.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,850.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,900.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
401,950.5,6.01,-97.0,17153,19.41,-0.5546,-218.38,109.19,-191.01
|
||||||
|
451,0.5,2.33,-98.84,16156,34.27,-1.124,-199.45,99.73,-192.1
|
||||||
|
451,50.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,100.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,150.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,200.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,250.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,300.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,350.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,400.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,450.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,500.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,550.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,600.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,650.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,700.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,750.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,800.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,850.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,900.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
451,950.5,3.18,-98.41,16171,19.46,-0.5248,-231.2,115.6,-197.19
|
||||||
|
501,0.5,1.9,-99.05,15372,33.37,-0.8822,-198.31,99.16,-188.96
|
||||||
|
501,50.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,100.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,150.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,200.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,250.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,300.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,350.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,400.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,450.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,500.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,550.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,600.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,650.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,700.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,750.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,800.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,850.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,900.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
501,950.5,2.07,-98.97,15381,19.29,-0.5183,-256.66,128.33,-207.85
|
||||||
|
551,0.5,4.52,-97.74,14150,33.36,-0.9378,-198.07,99.03,-188.22
|
||||||
|
551,50.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,100.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,150.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,200.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,250.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,300.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,350.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,400.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,450.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,500.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,550.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,600.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,650.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,700.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,750.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,800.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,850.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,900.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
551,950.5,11.44,-94.28,14159,19.62,-0.5181,-224.63,112.31,-190.35
|
||||||
|
601,0.5,3.15,-98.43,13683,32.54,-0.7494,-247.88,123.94,-206.57
|
||||||
|
601,50.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,100.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,150.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,200.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,250.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,300.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,350.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,400.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,450.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,500.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,550.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,600.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,650.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,700.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,750.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,800.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,850.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,900.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
601,950.5,3.06,-98.47,13680,19.18,-0.1846,-553.04,276.52,-321.9
|
||||||
|
651,0.5,8.02,-95.99,13136,32.14,-0.8123,-232.77,116.39,-198.85
|
||||||
|
651,50.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,100.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,150.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,200.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,250.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,300.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,350.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,400.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,450.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,500.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,550.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,600.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,650.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,700.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,750.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,800.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,850.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,900.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
651,950.5,48.8,-75.6,13142,19.53,-0.1411,-535.69,267.85,-291.57
|
||||||
|
701,0.5,1.6,-99.2,12485,31.23,-0.8874,-198.89,99.45,-189.4
|
||||||
|
701,50.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,100.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,150.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,200.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,250.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,300.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,350.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,400.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,450.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,500.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,550.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,600.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,650.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,700.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,750.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,800.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,850.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,900.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
701,950.5,14.5,-92.75,12501,19.6,-0.1569,-643.67,321.83,-352.1
|
||||||
|
801,0.5,10.35,-94.83,11410,31.07,-0.8074,-208.99,104.49,-188.11
|
||||||
|
801,50.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,100.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,150.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,200.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,250.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,300.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,350.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,400.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,450.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,500.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,550.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,600.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,650.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,700.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,750.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,800.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,850.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,900.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
801,950.5,118.75,-40.62,11418,19.45,-0.0405,-1080.04,540.02,-473.13
|
||||||
|
751,0.5,6.79,-96.61,11769,31.7,-0.8974,-208.02,104.01,-190.58
|
||||||
|
751,50.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,100.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,150.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,200.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,250.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,300.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,350.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,400.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,450.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,500.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,550.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,600.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,650.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,700.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,750.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,800.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,850.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,900.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
751,950.5,127.53,-36.23,11780,19.9,-0.1076,-345.62,172.81,-175.77
|
||||||
|
851,0.5,13.14,-93.43,10724,31.9,-0.8458,-197.01,98.5,-182.38
|
||||||
|
851,50.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,100.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,150.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,200.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,250.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,300.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,350.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,400.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,450.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,500.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,550.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,600.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,650.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,700.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,750.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,800.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,850.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,900.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
851,950.5,316.6,58.3,10734,20.19,0.0626,-1385.53,692.77,-495.16
|
||||||
|
951,0.5,2.59,-98.71,9665,30.17,-0.804,-230.09,115.04,-200.39
|
||||||
|
951,50.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,100.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,150.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,200.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,250.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,300.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,350.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,400.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,450.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,500.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,550.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,600.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,650.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,700.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,750.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,800.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,850.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,900.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
951,950.5,79.31,-60.35,9672,19.24,-0.1026,-623.51,311.76,-310.98
|
||||||
|
901,0.5,13.45,-93.27,10264,30.67,-0.8953,-189.6,94.8,-179.86
|
||||||
|
901,50.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,100.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,150.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,200.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,250.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,300.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,350.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,400.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,450.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,500.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,550.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,600.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,650.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,700.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,750.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,800.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,850.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,900.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
901,950.5,563.79,181.9,10270,19.56,0.0934,-1726.97,863.49,-507.77
|
||||||
|
1222
strategy/results/bb_sweep_mid_5m_20260227_054010.csv
Normal file
1222
strategy/results/bb_sweep_mid_5m_20260227_054010.csv
Normal file
File diff suppressed because it is too large
Load Diff
5
test.py
Normal file
5
test.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
from wxautox4 import WeChat
|
||||||
|
|
||||||
|
wx = WeChat()
|
||||||
|
wx.ChatWith('Rainbow') # 切换到目标聊天
|
||||||
|
# 再通过 UIAutomation 定位并点击语音/视频通话按钮
|
||||||
@@ -397,11 +397,11 @@ if __name__ == '__main__':
|
|||||||
try:
|
try:
|
||||||
collector.get_stats()
|
collector.get_stats()
|
||||||
|
|
||||||
# K线
|
# K线(不指定 periods 则抓取全部:1m、3m、5m、15m、30m、1h)
|
||||||
collector.collect_from_date(start_date='2025-01-01', periods=[1, 5, 15])
|
collector.collect_from_date(start_date='2025-01-01')
|
||||||
|
|
||||||
# 秒级(可选)
|
# 秒级
|
||||||
# collector.collect_second_data(start_date='2025-01-01')
|
collector.collect_second_data(start_date='2025-01-01')
|
||||||
|
|
||||||
collector.get_stats()
|
collector.get_stats()
|
||||||
finally:
|
finally:
|
||||||
|
|||||||
Reference in New Issue
Block a user