test_search_recent_squeeze_breakout_refine.py 992 B

12345678910111213141516171819202122232425262728293031
  1. import importlib.util
  2. import sys
  3. from pathlib import Path
  4. import pandas as pd
  5. import pytest
  6. def load_module():
  7. path = Path(__file__).resolve().parents[1] / "scripts" / "search_recent_squeeze_breakout_refine.py"
  8. spec = importlib.util.spec_from_file_location("search_recent_squeeze_breakout_refine", path)
  9. assert spec is not None
  10. module = importlib.util.module_from_spec(spec)
  11. assert spec.loader is not None
  12. sys.modules[spec.name] = module
  13. spec.loader.exec_module(module)
  14. return module
  15. def test_short_exit_return_subtracts_roundtrip_cost():
  16. module = load_module()
  17. assert module.exit_return("short", 100.0, 99.0) == pytest.approx(100.0 / 99.0 - 1.0 - module.ROUNDTRIP_COST)
  18. def test_ratio_filter_directional():
  19. module = load_module()
  20. frame = pd.DataFrame({"ratio": [1.0] * 100 + [0.98]})
  21. assert module.ratio_allows(frame, 100, "short", "directional") is True
  22. assert module.ratio_allows(frame, 100, "long", "directional") is False