Refactor MT5 constant parsing to delegate to pdmt5 >= 0.3.0 (#28)
* Refactor MT5 constant parsing to delegate to pdmt5 >= 0.3.0 Replace local TIMEFRAME_MAP, TICK_FLAG_MAP, and parser helpers with thin compatibility wrappers around pdmt5. COPY_TICKS flags now use real MT5 values (ALL=-1, INFO=1, TRADE=2). Click parameter types validate all inputs through the wrappers. Update tests and docs to describe the pdmt5/mt5cli/mt5api layering. Co-authored-by: Daichi Narushima <dceoy@users.noreply.github.com> * Fix timeframe defaults and COPY_TICKS flag defaults after pdmt5 migration Use short timeframe aliases for default history collection and granularity naming via pdmt5.get_timeframe_name. Set CLI/SDK default tick flags to ALL (-1) instead of the legacy mt5cli-only value. Co-authored-by: Daichi Narushima <dceoy@users.noreply.github.com> * Address CI lint failure and PR review feedback Fix ruff import ordering in history.py. Use ALL string defaults for CLI tick flags, isolate TICK_FLAG_MAP as a dict snapshot, derive flag names from pdmt5, reuse TIMEFRAME_NAMES for default history timeframes, and add tests for prefix stripping and TIMEFRAME_ key filtering. Co-authored-by: Daichi Narushima <dceoy@users.noreply.github.com> * Bump version to 0.7.0 Co-authored-by: Daichi Narushima <dceoy@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Daichi Narushima <dceoy@users.noreply.github.com>
This commit is contained in:
co-authored by
Daichi Narushima
Cursor Agent
parent
d654b82f9d
commit
0fad55d609
+17
-1
@@ -517,6 +517,9 @@ class TestResolveHistorySettings:
|
||||
"""Test default timeframes include all fixed MT5 values."""
|
||||
resolved = resolve_history_timeframes(None)
|
||||
assert len(resolved) == len(DEFAULT_HISTORY_TIMEFRAMES)
|
||||
assert not any(
|
||||
name.startswith("TIMEFRAME_") for name in DEFAULT_HISTORY_TIMEFRAMES
|
||||
)
|
||||
assert 1 in resolved
|
||||
assert TIMEFRAME_MAP["H1"] in resolved
|
||||
|
||||
@@ -526,7 +529,7 @@ class TestResolveHistorySettings:
|
||||
|
||||
def test_resolve_history_tick_flags(self) -> None:
|
||||
"""Test tick flag resolution."""
|
||||
assert resolve_history_tick_flags("ALL") == 1
|
||||
assert resolve_history_tick_flags("ALL") == -1
|
||||
assert resolve_history_tick_flags(2) == 2
|
||||
|
||||
def test_resolve_granularity_name_falls_back_to_integer(self) -> None:
|
||||
@@ -534,6 +537,17 @@ class TestResolveHistorySettings:
|
||||
assert resolve_granularity_name(999) == "999"
|
||||
assert resolve_granularity_name(1) == "M1"
|
||||
|
||||
def test_resolve_granularity_name_strips_official_prefix(
|
||||
self,
|
||||
mocker: MockerFixture,
|
||||
) -> None:
|
||||
"""Test official pdmt5 timeframe names are normalized to short aliases."""
|
||||
mocker.patch(
|
||||
"mt5cli.history._get_timeframe_name",
|
||||
return_value="TIMEFRAME_H1",
|
||||
)
|
||||
assert resolve_granularity_name(16385) == "H1"
|
||||
|
||||
|
||||
class TestDropFormingRateBar:
|
||||
"""Tests for drop_forming_rate_bar."""
|
||||
@@ -1754,6 +1768,8 @@ class TestIncrementalIntegration:
|
||||
"""Test invalid tick flags raise ValueError."""
|
||||
with pytest.raises(ValueError, match="Invalid tick flags"):
|
||||
resolve_history_tick_flags("BAD")
|
||||
with pytest.raises(ValueError, match="Invalid tick flags"):
|
||||
resolve_history_tick_flags(7)
|
||||
|
||||
def test_resolve_history_timeframes_invalid(self) -> None:
|
||||
"""Test invalid timeframes raise ValueError."""
|
||||
|
||||
Reference in New Issue
Block a user