This commit is contained in:
jack
2026-04-14 18:36:27 +08:00
parent 22ef11dfcc
commit eb28ea72b1
6 changed files with 88 additions and 6 deletions
+65
View File
@@ -0,0 +1,65 @@
# -*- coding: utf-8 -*-
import httpx
from httpx import BasicAuth
def login():
"""登录WorldQuant Brain API"""
# 从nacos获取账号密码
nacos_resp = httpx.get('http://192.168.31.41:30848/nacos/v1/cs/configs?dataId=wq_account&group=quantify')
if nacos_resp.status_code != 200:
print('获取账号密码失败')
return False
config = nacos_resp.json()
username = config['user_name']
password = config['password']
print(f"正在登录账户: {username}")
# 创建客户端并认证
client = httpx.Client(auth=BasicAuth(username, password))
# 发送登录请求
response = client.post('https://api.worldquantbrain.com/authentication')
print(f"登录状态: {response.status_code}")
if response.status_code == 201:
print("登录成功!")
print(response.json())
return client
else:
print(f"登录失败: {response.json()}")
client.close()
return None
def fetch_universe(client):
try:
response = client.options('https://api.worldquantbrain.com/simulations')
print(f"Options请求状态: {response.status_code}")
results = response.json()
except Exception as e:
print(f"Options请求失败: {e}")
return {}
return results
# 使用示例
client = login()
if client:
results = fetch_universe(client)
universe_data = (results.get('actions', {})
.get('POST', {})
.get('settings', {})
.get('children', {})
.get('universe', {})
.get('choices', {})
.get('instrumentType', {})
.get('EQUITY', {})
.get('region', {})
)
print(universe_data)
client.close()
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
data = {'USA': [{'value': 'TOP3000', 'label': 'TOP3000'}, {'value': 'TOP1000', 'label': 'TOP1000'}, {'value': 'TOP500', 'label': 'TOP500'}, {'value': 'TOP200', 'label': 'TOP200'},
{'value': 'ILLIQUID_MINVOL1M', 'label': 'ILLIQUID_MINVOL1M'}, {'value': 'TOPSP500', 'label': 'TOPSP500'}],
'GLB': [{'value': 'TOP3000', 'label': 'TOP3000'}, {'value': 'MINVOL1M', 'label': 'MINVOL1M'}, {'value': 'TOPDIV3000', 'label': 'TOPDIV3000'}],
'EUR': [{'value': 'TOP2500', 'label': 'TOP2500'}, {'value': 'TOP1200', 'label': 'TOP1200'}, {'value': 'TOP800', 'label': 'TOP800'}, {'value': 'TOP400', 'label': 'TOP400'},
{'value': 'ILLIQUID_MINVOL1M', 'label': 'ILLIQUID_MINVOL1M'}, {'value': 'TOPCS1600', 'label': 'TOPCS1600'}],
'ASI': [{'value': 'MINVOL1M', 'label': 'MINVOL1M'}, {'value': 'ILLIQUID_MINVOL1M', 'label': 'ILLIQUID_MINVOL1M'}], 'CHN': [{'value': 'TOP2000U', 'label': 'TOP2000U'}],
'KOR': [{'value': 'TOP600', 'label': 'TOP600'}], 'TWN': [{'value': 'TOP500', 'label': 'TOP500'}, {'value': 'TOP100', 'label': 'TOP100'}],
'IND': [{'value': 'TOP500', 'label': 'TOP500'}]}
result = {k: [item['value'] for item in v] for k, v in data.items()}
print(result)