feat: KEY_AUTO_ORDER_ENABLED 三所统一开关,联动关键位自动单与开仓类型
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
"""key_auto_order_lib 单元测试。"""
|
||||
import unittest
|
||||
|
||||
from lib.key_monitor.key_auto_order_lib import (
|
||||
check_monitor_type_add_allowed,
|
||||
effective_entry_reason_options,
|
||||
effective_stats_segment_defs,
|
||||
load_key_auto_order_enabled,
|
||||
)
|
||||
from lib.trade.position_sizing_lib import MODE_FULL_MARGIN, MODE_RISK
|
||||
|
||||
FULL_OPTS = (
|
||||
"趋势A",
|
||||
"趋势B",
|
||||
"趋势C",
|
||||
"趋势D",
|
||||
"趋势E",
|
||||
"关键位箱体突破",
|
||||
"关键位收敛突破",
|
||||
"关键位斐波0.618",
|
||||
"关键位斐波0.786",
|
||||
"关键位假突破",
|
||||
"关键位回调触价开仓",
|
||||
"关键位突破触价开仓",
|
||||
"趋势回调",
|
||||
"顺势加仓",
|
||||
)
|
||||
|
||||
STATS_DEFS = (
|
||||
("all", "全部", {}),
|
||||
("key_box", "箱体", {}),
|
||||
("key_trigger", "触价", {}),
|
||||
)
|
||||
|
||||
|
||||
class KeyAutoOrderLibTest(unittest.TestCase):
|
||||
def test_load_default_false(self):
|
||||
self.assertFalse(load_key_auto_order_enabled({"KEY_AUTO_ORDER_ENABLED": "false"}))
|
||||
self.assertFalse(load_key_auto_order_enabled({}))
|
||||
self.assertTrue(load_key_auto_order_enabled({"KEY_AUTO_ORDER_ENABLED": "true"}))
|
||||
|
||||
def test_entry_reason_off(self):
|
||||
out = effective_entry_reason_options(FULL_OPTS, MODE_RISK, False)
|
||||
self.assertNotIn("关键位箱体突破", out)
|
||||
self.assertNotIn("关键位回调触价开仓", out)
|
||||
self.assertIn("顺势加仓", out)
|
||||
|
||||
def test_entry_reason_risk_on(self):
|
||||
out = effective_entry_reason_options(FULL_OPTS, MODE_RISK, True)
|
||||
self.assertIn("关键位箱体突破", out)
|
||||
self.assertIn("关键位回调触价开仓", out)
|
||||
|
||||
def test_entry_reason_full_margin_on(self):
|
||||
out = effective_entry_reason_options(FULL_OPTS, MODE_FULL_MARGIN, True)
|
||||
self.assertNotIn("关键位箱体突破", out)
|
||||
self.assertIn("关键位回调触价开仓", out)
|
||||
|
||||
def test_stats_segments_off(self):
|
||||
segs = effective_stats_segment_defs(STATS_DEFS, MODE_RISK, False)
|
||||
keys = {x[0] for x in segs}
|
||||
self.assertIn("all", keys)
|
||||
self.assertNotIn("key_box", keys)
|
||||
|
||||
def test_add_key_rs_always(self):
|
||||
ok, _ = check_monitor_type_add_allowed("关键支撑阻力", MODE_RISK, False)
|
||||
self.assertTrue(ok)
|
||||
|
||||
def test_add_key_trigger_off(self):
|
||||
ok, msg = check_monitor_type_add_allowed("回调触价开仓", MODE_RISK, False)
|
||||
self.assertFalse(ok)
|
||||
self.assertIn("KEY_AUTO_ORDER_ENABLED", msg)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user