main
parent
22ef11dfcc
commit
eb28ea72b1
@ -0,0 +1,5 @@ |
||||
module alpha-fetcher-gui |
||||
|
||||
go 1.25.1 |
||||
|
||||
require fyne.io/fyne/v2 v2.7.3 // indirect |
||||
@ -0,0 +1,2 @@ |
||||
fyne.io/fyne/v2 v2.7.3 h1:xBT/iYbdnNHONWO38fZMBrVBiJG8rV/Jypmy4tVfRWE= |
||||
fyne.io/fyne/v2 v2.7.3/go.mod h1:gu+dlIcZWSzKZmnrY8Fbnj2Hirabv2ek+AKsfQ2bBlw= |
||||
@ -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() |
||||
@ -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) |
||||
Loading…
Reference in new issue