Files
aiomql/tests/live/unit/test_symbol.py
T

53 lines
2.1 KiB
Python
Raw Normal View History

from datetime import datetime, timedelta
import pytest
from aiomql.lib.symbol import Symbol
from aiomql.lib.candle import Candles
from aiomql.lib.ticks import Ticks
class TestSymbol:
2024-11-04 00:32:51 +01:00
@pytest.fixture(scope="class", autouse=True)
async def btc(self):
2024-11-04 00:32:51 +01:00
symbol = Symbol(name="BTCUSD")
2025-06-07 00:10:35 +01:00
if symbol.initialized is False:
2024-10-28 06:36:10 +01:00
await symbol.initialize()
return symbol
async def test_symbol_attributes(self, btc):
2024-11-04 00:32:51 +01:00
assert btc.name == "BTCUSD"
assert btc.select is True
assert btc.tick is not None
async def test_volume(self, btc):
volume = btc.volume_min - btc.volume_step
success, volume = btc.check_volume(volume=volume)
assert success is False
volume = btc.volume_min + btc.volume_step * 2
success, volume = btc.check_volume(volume=volume)
assert success is True
volume = btc.volume_min + btc.volume_step * 2.5
volume = btc.round_off_volume(volume=volume, round_down=True)
assert volume == btc.volume_min + btc.volume_step * 2
async def test_rates(self, btc):
start = datetime(year=2023, month=10, day=5)
end = start + timedelta(hours=9)
2024-11-11 05:56:08 +01:00
rates_from = await btc.copy_rates_from(timeframe=btc.mt5.TIMEFRAME_H1, date_from=start, count=10)
assert isinstance(rates_from, Candles)
assert len(rates_from) == 10
2024-11-11 05:56:08 +01:00
rates_from_pos = await btc.copy_rates_from_pos(timeframe=btc.mt5.TIMEFRAME_H1, count=10, start_position=0)
assert isinstance(rates_from_pos, Candles)
assert len(rates_from_pos) == 10
2024-11-11 05:56:08 +01:00
rates_range = await btc.copy_rates_range(timeframe=btc.mt5.TIMEFRAME_H1, date_from=start, date_to=end)
assert isinstance(rates_range, Candles)
assert len(rates_range) == 10
ticks_from = await btc.copy_ticks_from(date_from=start, count=10)
assert isinstance(ticks_from, Ticks)
assert len(ticks_from) == 10
end = start + timedelta(seconds=20)
ticks_from_pos = await btc.copy_ticks_range(date_from=start, date_to=end)
assert isinstance(ticks_from_pos, Ticks)
assert len(ticks_from_pos) >= 10