setting up feed handlers, more to come

This commit is contained in:
2026-04-21 20:22:33 +00:00
parent 1de0d932a1
commit d2068b1c73
10 changed files with 1197 additions and 66 deletions

84
main.py Normal file
View File

@@ -0,0 +1,84 @@
import asyncio
import json
import logging
import math
import os
import time
import traceback
from dataclasses import asdict, dataclass
from datetime import datetime, timezone
from typing import AsyncContextManager
from dotenv import load_dotenv
import numpy as np
import pandas as pd
import requests
# import talib
import valkey
from sqlalchemy import text
from sqlalchemy.ext.asyncio import create_async_engine
### Database ###
CLIENT = None
CON: AsyncContextManager | None = None
VAL_KEY = None
### Logging ###
load_dotenv()
LOG_FILEPATH: str = os.getenv("LOGS_PATH") + '/Fund_Rate_Algo.log'
async def run_algo():
try:
while True:
loop_start = time.time()
print('__________Start___________')
MEXC_FUND_RATE = json.loads(VAL_KEY.get('fund_rate_mexc'))
MEXC_TICKER = json.loads(VAL_KEY.get('fut_ticker_mexc'))
APEX_TICKER = json.loads(VAL_KEY.get('fut_ticker_apex'))
print(f'MEXC FUND RATE: {MEXC_FUND_RATE}')
print(f'MEXC TICKER: {MEXC_TICKER}')
print(f'APEX TICKER: {APEX_TICKER}')
time.sleep(5)
print(f'__________________________ (Algo Engine ms: {(time.time() - loop_start)*1000})')
except KeyboardInterrupt:
print('...algo stopped')
# await cancel_all_orders(CLIENT=CLIENT)
except Exception as e:
logging.critical(f'*** ALGO ENGINE CRASHED: {e}')
logging.error(traceback.format_exc())
# await cancel_all_orders(CLIENT=CLIENT)
async def main():
global CLIENT
global VAL_KEY
global CON
VAL_KEY = valkey.Valkey(host='localhost', port=6379, db=0, decode_responses=True)
engine = create_async_engine('mysql+asyncmy://root:pwd@localhost/fund_rate')
async with engine.connect() as CON:
# await create_executions_orders_table(CON=CON)
await run_algo()
if __name__ == '__main__':
START_TIME = round(datetime.now().timestamp()*1000)
logging.info(f'Log FilePath: {LOG_FILEPATH}')
logging.basicConfig(
force=True,
filename=LOG_FILEPATH,
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filemode='w'
)
logging.info(f"STARTED: {START_TIME}")
asyncio.run(main())