Files
crypto_monitor/tests/test_key_auto_order_lib.py
T

76 lines
2.5 KiB
Python

"""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()