58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
import sys; sys.path.insert(0, '/home/hmo/MoFin')
|
|
from mo_data import *
|
|
|
|
pf = read_portfolio()
|
|
ta = pf.get('total_assets',0)
|
|
ca = pf.get('cash',0)
|
|
pp = pf.get('position_pct',0)
|
|
print(f'TA:{ta:.0f} CASH:{ca:.0f} POS:{pp:.1f}%')
|
|
|
|
for h in pf.get('holdings', []):
|
|
c = h.get('currency','CNY')
|
|
p = h.get('price')
|
|
pos = h.get('position_pct')
|
|
if pos is None:
|
|
pos = 0
|
|
if p is None:
|
|
print(f' {h["code"]} {h["name"]} 价? 仓{pos:.1f}%')
|
|
continue
|
|
tag = ' HKD' if c == 'HKD' else ''
|
|
print(f' {h["code"]} {h["name"]} 价{p:.2f}{tag} 仓{pos:.1f}%')
|
|
|
|
wl = read_watchlist()
|
|
if wl and 'stocks' in wl:
|
|
for s in wl['stocks']:
|
|
nm = s.get('name','')
|
|
p = s.get('price')
|
|
if p is None:
|
|
print(f' WATCH {s["code"]} {nm} 价?')
|
|
else:
|
|
print(f' WATCH {s["code"]} {nm} 价{p:.2f}')
|
|
|
|
# sector data
|
|
import json, sqlite3, os
|
|
db = os.path.join('/home/hmo/MoFin', 'data', 'mofin.db')
|
|
conn = sqlite3.connect(db)
|
|
c = conn.cursor()
|
|
try:
|
|
c.execute("SELECT id, market_trend, data FROM sector_snapshots ORDER BY id DESC LIMIT 1")
|
|
row = c.fetchone()
|
|
if row:
|
|
print(f' TREND:{row[1]}')
|
|
d = json.loads(row[2]) if isinstance(row[2], str) else row[2]
|
|
if d:
|
|
for k,v in list(d.items())[:5]:
|
|
print(f' {k}: {v}')
|
|
except Exception as e:
|
|
print(f' DB err:{e}')
|
|
conn.close()
|
|
|
|
# decisions
|
|
dec = read_decisions()
|
|
if isinstance(dec, dict):
|
|
ds = dec.get('decisions',[])
|
|
print(f' DECISIONS:{len(ds)}')
|
|
for d in ds[:5]:
|
|
print(f' {d}')
|