Initial public release

This commit is contained in:
sinmb79
2026-03-30 13:19:11 +09:00
commit 92a692b63c
116 changed files with 5822 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
# tests/test_strategy_signal.py
from hydra.strategy.signal import SignalGenerator
def test_volatile_returns_hold():
gen = SignalGenerator()
indicators = {"EMA_9": 1.1, "EMA_20": 1.0, "RSI_14": 60.0}
sig = gen.generate(indicators, "volatile", 50000.0)
assert sig.signal == "HOLD"
assert sig.reason == "volatile: skip"
def test_trending_up_buy():
gen = SignalGenerator()
indicators = {"EMA_9": 1.1, "EMA_20": 1.0, "RSI_14": 55.0}
sig = gen.generate(indicators, "trending_up", 50000.0)
assert sig.signal == "BUY"
assert sig.reason == "trend_up: ema_cross+rsi"
def test_trending_up_hold_no_cross():
gen = SignalGenerator()
indicators = {"EMA_9": 0.9, "EMA_20": 1.0, "RSI_14": 55.0}
sig = gen.generate(indicators, "trending_up", 50000.0)
assert sig.signal == "HOLD"
def test_trending_down_sell():
gen = SignalGenerator()
indicators = {"EMA_9": 0.9, "EMA_20": 1.0, "RSI_14": 40.0}
sig = gen.generate(indicators, "trending_down", 50000.0)
assert sig.signal == "SELL"
assert sig.reason == "trend_down: ema_cross+rsi"
def test_trending_down_hold_no_cross():
gen = SignalGenerator()
indicators = {"EMA_9": 1.1, "EMA_20": 1.0, "RSI_14": 40.0}
sig = gen.generate(indicators, "trending_down", 50000.0)
assert sig.signal == "HOLD"
def test_ranging_buy_oversold():
gen = SignalGenerator()
indicators = {"EMA_9": 1.0, "EMA_20": 1.0, "RSI_14": 25.0}
sig = gen.generate(indicators, "ranging", 50000.0)
assert sig.signal == "BUY"
assert sig.reason == "ranging: rsi_oversold"
def test_ranging_sell_overbought():
gen = SignalGenerator()
indicators = {"EMA_9": 1.0, "EMA_20": 1.0, "RSI_14": 75.0}
sig = gen.generate(indicators, "ranging", 50000.0)
assert sig.signal == "SELL"
assert sig.reason == "ranging: rsi_overbought"
def test_none_indicators_return_hold():
gen = SignalGenerator()
indicators = {"EMA_9": None, "EMA_20": None, "RSI_14": None}
sig = gen.generate(indicators, "trending_up", 50000.0)
assert sig.signal == "HOLD"