diff --git a/config.py b/config.py index 5103fee..ed5867f 100644 --- a/config.py +++ b/config.py @@ -6,3 +6,5 @@ CHAIN_ID = 137 REQUEST_TIMEOUT = 5 PROFIT_MARGIN = 0.02 TRADING_BPS_THRESHOLD = 50 +MARKET_SESSION_SECONDS = 900 +TIMEZONE = "US/Eastern" diff --git a/main.py b/main.py index bb1d332..3918a89 100644 --- a/main.py +++ b/main.py @@ -4,6 +4,7 @@ from utils.logger import setup_logging from utils.tokens import fetch_tokens from utils.clob_client import init_clob_client from utils.orderbook import OrderBook +from utils.market_time import is_in_trading_window async def main(): @@ -16,7 +17,16 @@ async def main(): book.start() while True: - await asyncio.sleep(10) + if not is_in_trading_window(): + + book.stop() + logger.info("Trading session ended. Starting new session.") + + up_token, down_token, market_slug = await fetch_tokens() + book = OrderBook(up_token, down_token, market_slug) + book.start() + + await asyncio.sleep(1) if __name__ == "__main__": diff --git a/utils/market_time.py b/utils/market_time.py new file mode 100644 index 0000000..0a1d37e --- /dev/null +++ b/utils/market_time.py @@ -0,0 +1,13 @@ +import time +from config import MARKET_SESSION_SECONDS + + +def get_period_elapsed_seconds(): + ts = int(time.time()) + period_start = (ts // MARKET_SESSION_SECONDS) * MARKET_SESSION_SECONDS + return ts - period_start + + +def is_in_trading_window(): + elapsed_seconds = get_period_elapsed_seconds() + return elapsed_seconds > MARKET_SESSION_SECONDS diff --git a/utils/slug.py b/utils/slug.py index eabadf0..91a0fc4 100644 --- a/utils/slug.py +++ b/utils/slug.py @@ -1,9 +1,6 @@ import pytz from datetime import datetime - - -MARKET_INTERVAL_SECONDS = 900 -TIMEZONE = "US/Eastern" +from config import MARKET_SESSION_SECONDS, TIMEZONE def get_market_slug(coin: str = "btc") -> str: @@ -14,5 +11,5 @@ def get_market_slug(coin: str = "btc") -> str: et_tz = pytz.timezone(TIMEZONE) now = datetime.now(et_tz) ts = int(now.timestamp()) - start = (ts // MARKET_INTERVAL_SECONDS) * MARKET_INTERVAL_SECONDS + start = (ts // MARKET_SESSION_SECONDS) * MARKET_SESSION_SECONDS return f"{coin.lower()}-updown-15m-{start}"