Local changes: Updated model training, removed debug instrumentation, and configuration improvements
This commit is contained in:
69
tests/unit/strategies/test_grid_strategy.py
Normal file
69
tests/unit/strategies/test_grid_strategy.py
Normal file
@@ -0,0 +1,69 @@
|
||||
"""Tests for Grid strategy."""
|
||||
|
||||
import pytest
|
||||
from decimal import Decimal
|
||||
from src.strategies.grid.grid_strategy import GridStrategy
|
||||
|
||||
|
||||
def test_grid_strategy_initialization():
|
||||
"""Test Grid strategy initializes correctly."""
|
||||
strategy = GridStrategy("Test Grid", {
|
||||
"grid_spacing": 1,
|
||||
"num_levels": 10,
|
||||
"profit_target": 2
|
||||
})
|
||||
assert strategy.name == "Test Grid"
|
||||
assert strategy.grid_spacing == Decimal("0.01")
|
||||
assert strategy.num_levels == 10
|
||||
|
||||
|
||||
def test_grid_levels_calculation():
|
||||
"""Test grid levels are calculated correctly."""
|
||||
strategy = GridStrategy("Test Grid", {
|
||||
"grid_spacing": 1,
|
||||
"num_levels": 5,
|
||||
"center_price": 100
|
||||
})
|
||||
|
||||
strategy._update_grid_levels(Decimal("100"))
|
||||
assert len(strategy.buy_levels) == 5
|
||||
assert len(strategy.sell_levels) == 5
|
||||
|
||||
# Buy levels should be below center
|
||||
assert all(level < Decimal("100") for level in strategy.buy_levels)
|
||||
# Sell levels should be above center
|
||||
assert all(level > Decimal("100") for level in strategy.sell_levels)
|
||||
|
||||
|
||||
def test_grid_buy_signal():
|
||||
"""Test grid generates buy signal at lower level."""
|
||||
strategy = GridStrategy("Test Grid", {
|
||||
"grid_spacing": 1,
|
||||
"num_levels": 5,
|
||||
"center_price": 100,
|
||||
"position_size": Decimal("0.1")
|
||||
})
|
||||
|
||||
# Price at buy level
|
||||
signal = strategy.on_tick("BTC/USD", Decimal("99"), "1h", {})
|
||||
assert signal is not None
|
||||
assert signal.signal_type.value == "buy"
|
||||
|
||||
|
||||
def test_grid_profit_taking():
|
||||
"""Test grid takes profit at target."""
|
||||
strategy = GridStrategy("Test Grid", {
|
||||
"grid_spacing": 1,
|
||||
"num_levels": 5,
|
||||
"profit_target": 2
|
||||
})
|
||||
|
||||
# Simulate position
|
||||
entry_price = Decimal("100")
|
||||
strategy.positions[entry_price] = Decimal("0.1")
|
||||
|
||||
# Price with profit
|
||||
signal = strategy.on_tick("BTC/USD", Decimal("102"), "1h", {})
|
||||
assert signal is not None
|
||||
assert signal.signal_type.value == "sell"
|
||||
assert entry_price not in strategy.positions # Position removed
|
||||
Reference in New Issue
Block a user