30 lines
1.2 KiB
Python
30 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from market.config import MarketConfig
|
|
from market.provider_base import MarketDataProvider
|
|
from market.providers.akshare_provider import AkshareCnProvider
|
|
from market.providers.cmes_provider import CmesCnProvider
|
|
|
|
|
|
def create_provider(config: MarketConfig) -> MarketDataProvider:
|
|
if config.channel == "cn" and config.provider == "akshare":
|
|
return AkshareCnProvider()
|
|
if config.channel == "cn" and config.provider == "cmesdata":
|
|
return CmesCnProvider(token=config.cmes_token)
|
|
if config.provider == "futu" and config.channel in {"cn", "hk", "us"}:
|
|
from market.providers.futu_provider import FutuProvider
|
|
|
|
return FutuProvider(
|
|
channel=config.channel,
|
|
host=config.futu_host,
|
|
port=config.futu_port,
|
|
is_encrypt=config.futu_is_encrypt,
|
|
market=config.futu_market,
|
|
)
|
|
if config.channel in {"us", "hk"}:
|
|
raise RuntimeError(
|
|
f"channel={config.channel} provider={config.provider} 尚未实现,"
|
|
"请新增 Provider 后接入 factory。"
|
|
)
|
|
raise RuntimeError(f"不支持的通道配置: channel={config.channel}, provider={config.provider}")
|