from __future__ import annotations import sys import os from collections import OrderedDict import logging import ccxt _ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) if _ROOT not in sys.path: sys.path.append(_ROOT) from config import MACD_FAST, MACD_SLOW, MACD_SIGNAL, ccxt_proxies from services.cn_stock import ChinaStockData logger = logging.getLogger(__name__) class TRADE_POINT_TYPE: BUY1 = 1 # 一类买点 BUY2 = 2 # 二类买点 BUY3 = 3 # 三类买点 SELL1 = -1 # 一类卖点 SELL2 = -2 # 二类卖点 SELL3 = -3 # 三类卖点 # mutable runtime state macd_fast_period = MACD_FAST macd_slow_period = MACD_SLOW macd_signal_period = MACD_SIGNAL _proxies = ccxt_proxies() _exchange_kwargs = {"enableRateLimit": True} if _proxies: _exchange_kwargs["proxies"] = _proxies exchange = ccxt.binance(_exchange_kwargs) china_stock = ChinaStockData() _zone_cache = {} DEFAULT_TIMEFRAME_LABELS = OrderedDict([ ("1m", "1分钟"), ("3m", "3分钟"), ("5m", "5分钟"), ("15m", "15分钟"), ("30m", "30分钟"), ("45m", "45分钟"), ("1h", "1小时"), ("2h", "2小时"), ("4h", "4小时"), ("6h", "6小时"), ("8h", "8小时"), ("12h", "12小时"), ("1d", "日线"), ("3d", "3日线"), ("1w", "周线"), ("1M", "月线"), ]) DEFAULT_SYMBOLS = [ 'SOL/USDT:USDT', 'BTC/USDT:USDT', 'ETH/USDT:USDT', 'BNB/USDT:USDT', 'XRP/USDT:USDT', 'WIF/USDT:USDT', 'ADA/USDT:USDT', 'DOGE/USDT:USDT', 'AVAX/USDT:USDT', 'DOT/USDT:USDT', 'MATIC/USDT:USDT' ] TIMEFRAMES = DEFAULT_TIMEFRAME_LABELS.copy() SYMBOLS = DEFAULT_SYMBOLS.copy() DATA_SERVICE_AVAILABLE = False SERVICE_METADATA_LAST_REFRESH = 0