From 8a4f5fe4f04cafad45f999f3d099b8a2e8c2ccad Mon Sep 17 00:00:00 2001 From: Ichinga Samuel Date: Sun, 1 Dec 2024 13:07:37 +0100 Subject: [PATCH] v4.0.6 --- pyproject.toml | 2 +- src/aiomql/__init__.py | 1 + src/aiomql/_utils.py | 46 ++++++++++++++++++-------------------- src/aiomql/lib/sessions.py | 15 ++++++------- src/aiomql/lib/strategy.py | 13 ++++++----- 5 files changed, 38 insertions(+), 39 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 26c5b9e..1607e37 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "aiomql" -version = "4.0.5" +version = "4.0.6" readme = "README.md" requires-python = ">=3.11" classifiers = [ diff --git a/src/aiomql/__init__.py b/src/aiomql/__init__.py index d1eded6..136d3d0 100644 --- a/src/aiomql/__init__.py +++ b/src/aiomql/__init__.py @@ -1,3 +1,4 @@ from .core import * from .lib import * from .contrib import * +from ._utils import * diff --git a/src/aiomql/_utils.py b/src/aiomql/_utils.py index 16e61c2..b0c62c5 100644 --- a/src/aiomql/_utils.py +++ b/src/aiomql/_utils.py @@ -10,35 +10,33 @@ from .core.config import Config logger = getLogger(__name__) - -async def backtest_sleep(secs: float): +async def backtest_sleep(secs): + """An async sleep function for use during backtesting.""" config = Config() - btc = config.backtest_controller - try: - if btc.parties == 2: - steps = int(secs) // config.backtest_engine.speed - steps = max(steps, 1) - config.backtest_engine.fast_forward(steps=steps) - btc.wait() - - elif btc.parties > 2: - _time = config.backtest_engine.cursor.time + secs - while _time > config.backtest_engine.cursor.time: - btc.wait() - else: - btc.wait() - except Exception as err: - btc.wait() - logger.error("Error: %s in backtest_sleep", err) + sleep = config.backtest_engine.cursor.time + secs + while sleep > config.backtest_engine.cursor.time: + await asyncio.sleep(0) -# async def backtest_sleep(secs): -# """An async sleep function for use during backtesting.""" -# btc = BackTestController() +# async def backtest_sleep(secs: float): # config = Config() -# sleep = config.backtest_engine.cursor.time + secs -# while sleep > config.backtest_engine.cursor.time: +# btc = config.backtest_controller +# try: +# if btc.parties == 2: +# steps = int(secs) // config.backtest_engine.speed +# steps = max(steps, 1) +# config.backtest_engine.fast_forward(steps=steps) +# btc.wait() +# +# elif btc.parties > 2: +# _time = config.backtest_engine.cursor.time + secs +# while _time > config.backtest_engine.cursor.time: +# btc.wait() +# else: +# btc.wait() +# except Exception as err: # btc.wait() +# logger.error("Error: %s in backtest_sleep", err) def dict_to_string(data: dict, multi=False) -> str: diff --git a/src/aiomql/lib/sessions.py b/src/aiomql/lib/sessions.py index 103f346..a615b46 100644 --- a/src/aiomql/lib/sessions.py +++ b/src/aiomql/lib/sessions.py @@ -6,7 +6,6 @@ from logging import getLogger from ..core.models import OrderSendResult, TradePosition from ..core.config import Config from .positions import Positions -from .._utils import backtest_sleep logger = getLogger(__name__) @@ -26,13 +25,13 @@ def delta(obj: time) -> timedelta: return timedelta(hours=obj.hour, minutes=obj.minute, seconds=obj.second, microseconds=obj.microsecond) -# async def backtest_sleep(secs): -# """An async sleep function for use during backtesting.""" -# btc = BackTestController() -# config = Config() -# sleep = config.backtest_engine.cursor.time + secs -# while sleep > config.backtest_engine.cursor.time: -# btc.wait() +async def backtest_sleep(secs): + """An async sleep function for use during backtesting.""" + config = Config() + btc = config.backtest_controller + sleep = config.backtest_engine.cursor.time + secs + while sleep > config.backtest_engine.cursor.time: + btc.wait() class Session: diff --git a/src/aiomql/lib/strategy.py b/src/aiomql/lib/strategy.py index b5f84c4..9d5bb26 100644 --- a/src/aiomql/lib/strategy.py +++ b/src/aiomql/lib/strategy.py @@ -126,13 +126,14 @@ class Strategy(ABC): async def _backtest_sleep(self, *, secs: float): try: - if self.backtest_controller.parties == 2: - steps = int(secs) // self.config.backtest_engine.speed - steps = max(steps, 1) - self.config.backtest_engine.fast_forward(steps=steps) - self.backtest_controller.wait() + # if self.backtest_controller.parties == 2: + # this is not needed, as the backtest_engine iterator will handle this + # steps = int(secs) // self.config.backtest_engine.speed + # steps = max(steps, 1) + # self.config.backtest_engine.fast_forward(steps=steps) + # self.backtest_controller.wait() - elif self.backtest_controller.parties > 2: + if self.backtest_controller.parties >= 2: _time = self.config.backtest_engine.cursor.time + secs while _time > self.config.backtest_engine.cursor.time: self.backtest_controller.wait()