Implement trading session management and add market time utilities

This commit is contained in:
Nawaz Haider
2026-01-01 20:02:36 +06:00
parent 1035b69eb6
commit 73f08a0c49
4 changed files with 28 additions and 6 deletions
+2
View File
@@ -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"
+11 -1
View File
@@ -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__":
+13
View File
@@ -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
+2 -5
View File
@@ -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}"