import_holding_xls: 支持截图真实数字覆盖
regenerate_all 会覆盖 portfolio.json,所以导入流程改为: 1. 先更新 SQLite holdings 表 2. 再跑 regenerate_all(读 SQLite,写 decisions+portfolio) 3. 然后用真实数字覆盖 portfolio.json 汇总字段 4. 重建决策树 支持 --cash --total --mv 传入截图真实数字 用法:python3 import_holding_xls.py --cash 20230 --total 1008860 --mv 988512
This commit is contained in:
+77
-173
@@ -4,144 +4,107 @@
|
||||
"code": "001309",
|
||||
"name": "德明利",
|
||||
"shares": 100,
|
||||
"avail_shares": 100,
|
||||
"price": 790.9,
|
||||
"cost_price": 737.0374,
|
||||
"pl": 5096.26,
|
||||
"pl_pct": 6.91,
|
||||
"price": 788.0,
|
||||
"cost_price": 737.04,
|
||||
"currency": "CNY",
|
||||
"market_val": 78800.0,
|
||||
"cost_amount": 73703.74,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": 4.75
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "01478",
|
||||
"name": "丘钛科技",
|
||||
"shares": 11000,
|
||||
"avail_shares": 11000,
|
||||
"price": 7.54,
|
||||
"cost_price": 13.8089,
|
||||
"pl": -59438.6,
|
||||
"pl_pct": -45.18,
|
||||
"price": 7.57,
|
||||
"cost_price": 13.81,
|
||||
"currency": "HKD",
|
||||
"market_val": 72120.15,
|
||||
"cost_amount": 131558.75,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": -4.19
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "600739",
|
||||
"name": "辽宁成大",
|
||||
"shares": 6600,
|
||||
"avail_shares": 6600,
|
||||
"price": 10.45,
|
||||
"cost_price": 12.2862,
|
||||
"pl": -11789.02,
|
||||
"pl_pct": -14.54,
|
||||
"price": 10.5,
|
||||
"cost_price": 12.29,
|
||||
"currency": "CNY",
|
||||
"market_val": 69300.0,
|
||||
"cost_amount": 81089.02,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": -1.88
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "601899",
|
||||
"name": "紫金矿业",
|
||||
"shares": 2400,
|
||||
"avail_shares": 2400,
|
||||
"price": 27.36,
|
||||
"cost_price": 40.2685,
|
||||
"pl": -30572.29,
|
||||
"pl_pct": -31.63,
|
||||
"price": 27.53,
|
||||
"cost_price": 40.27,
|
||||
"currency": "CNY",
|
||||
"market_val": 66072.0,
|
||||
"cost_amount": 96644.29,
|
||||
"exchange_rate": 0.866
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "688639",
|
||||
"name": "华恒生物",
|
||||
"shares": 2800,
|
||||
"avail_shares": 0,
|
||||
"price": 21.35,
|
||||
"cost_price": 21.5085,
|
||||
"pl": -135.75,
|
||||
"pl_pct": -0.23,
|
||||
"price": 21.46,
|
||||
"cost_price": 21.51,
|
||||
"currency": "CNY",
|
||||
"market_val": 60088.0,
|
||||
"cost_amount": 60223.75,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": -2.2
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "09988",
|
||||
"name": "阿里巴巴-W",
|
||||
"shares": 700,
|
||||
"avail_shares": 700,
|
||||
"price": 98.6,
|
||||
"cost_price": 126.1516,
|
||||
"pl": -16582.48,
|
||||
"pl_pct": -21.68,
|
||||
"price": 98.8,
|
||||
"cost_price": 126.15,
|
||||
"currency": "HKD",
|
||||
"market_val": 59899.48,
|
||||
"cost_amount": 76481.96,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": -0.35
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "603259",
|
||||
"name": "药明康德",
|
||||
"shares": 400,
|
||||
"avail_shares": 400,
|
||||
"price": 116.94,
|
||||
"cost_price": 96.201,
|
||||
"pl": 8295.62,
|
||||
"pl_pct": 21.56,
|
||||
"cost_price": 96.2,
|
||||
"currency": "CNY",
|
||||
"market_val": 46776.0,
|
||||
"cost_amount": 38480.38,
|
||||
"exchange_rate": 0.866
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "688981",
|
||||
"name": "中芯国际",
|
||||
"shares": 300,
|
||||
"avail_shares": 300,
|
||||
"price": 150.64,
|
||||
"cost_price": 126.0681,
|
||||
"pl": 7173.58,
|
||||
"pl_pct": 18.97,
|
||||
"price": 149.98,
|
||||
"cost_price": 126.07,
|
||||
"currency": "CNY",
|
||||
"market_val": 44994.0,
|
||||
"cost_amount": 37820.42,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": 6.31
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "01888",
|
||||
"name": "建滔积层板",
|
||||
"shares": 500,
|
||||
"avail_shares": 500,
|
||||
"price": 93.5,
|
||||
"cost_price": 88.3855,
|
||||
"pl": 2409.7,
|
||||
"pl_pct": 6.3,
|
||||
"price": 93.95,
|
||||
"cost_price": 88.39,
|
||||
"currency": "HKD",
|
||||
"market_val": 40685.05,
|
||||
"cost_amount": 38275.35,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": 7.16
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "02202",
|
||||
"name": "万科企业",
|
||||
"shares": 19700,
|
||||
"avail_shares": 19700,
|
||||
"price": 2.37,
|
||||
"cost_price": 4.676,
|
||||
"pl": -39344.79,
|
||||
"pl_pct": -49.32,
|
||||
"cost_price": 4.68,
|
||||
"currency": "HKD",
|
||||
"market_val": 40437.34,
|
||||
"cost_amount": 79782.13,
|
||||
@@ -151,232 +114,173 @@
|
||||
"code": "02388",
|
||||
"name": "中银香港",
|
||||
"shares": 1000,
|
||||
"avail_shares": 1000,
|
||||
"price": 46.26,
|
||||
"cost_price": 43.7892,
|
||||
"pl": 2053.39,
|
||||
"pl_pct": 5.41,
|
||||
"price": 46.16,
|
||||
"cost_price": 43.79,
|
||||
"currency": "HKD",
|
||||
"market_val": 39979.18,
|
||||
"cost_amount": 37925.79,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": -1.62
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "300750",
|
||||
"name": "宁德时代",
|
||||
"shares": 100,
|
||||
"avail_shares": 100,
|
||||
"price": 391.19,
|
||||
"cost_price": 401.7803,
|
||||
"pl": -1063.03,
|
||||
"pl_pct": -2.65,
|
||||
"price": 391.15,
|
||||
"cost_price": 401.78,
|
||||
"currency": "CNY",
|
||||
"market_val": 39115.0,
|
||||
"cost_amount": 40178.03,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": -0.34
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "01211",
|
||||
"name": "比亚迪股份",
|
||||
"shares": 600,
|
||||
"avail_shares": 600,
|
||||
"price": 74.85,
|
||||
"cost_price": 105.0542,
|
||||
"pl": -15539.97,
|
||||
"pl_pct": -28.47,
|
||||
"price": 75.15,
|
||||
"cost_price": 105.05,
|
||||
"currency": "HKD",
|
||||
"market_val": 39052.45,
|
||||
"cost_amount": 54592.42,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": -1.25
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "00700",
|
||||
"name": "腾讯控股",
|
||||
"shares": 100,
|
||||
"avail_shares": 100,
|
||||
"price": 420.0,
|
||||
"cost_price": 443.9024,
|
||||
"pl": -2035.55,
|
||||
"pl_pct": -5.29,
|
||||
"price": 420.4,
|
||||
"cost_price": 443.9,
|
||||
"currency": "HKD",
|
||||
"market_val": 36410.84,
|
||||
"cost_amount": 38446.39,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": 1.25
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "00981",
|
||||
"name": "中芯国际",
|
||||
"shares": 500,
|
||||
"avail_shares": 500,
|
||||
"price": 83.25,
|
||||
"cost_price": 76.0724,
|
||||
"pl": 3151.55,
|
||||
"pl_pct": 9.57,
|
||||
"price": 83.35,
|
||||
"cost_price": 76.07,
|
||||
"currency": "HKD",
|
||||
"market_val": 36094.72,
|
||||
"cost_amount": 32943.17,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": 6.62
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "09868",
|
||||
"name": "小鹏集团-W",
|
||||
"shares": 700,
|
||||
"avail_shares": 700,
|
||||
"price": 50.1,
|
||||
"cost_price": 51.3644,
|
||||
"pl": -675.62,
|
||||
"pl_pct": -2.17,
|
||||
"price": 50.25,
|
||||
"cost_price": 51.36,
|
||||
"currency": "HKD",
|
||||
"market_val": 30465.07,
|
||||
"cost_amount": 31140.69,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": 1.5
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "600036",
|
||||
"name": "招商银行",
|
||||
"shares": 800,
|
||||
"avail_shares": 800,
|
||||
"price": 37.05,
|
||||
"cost_price": 38.1582,
|
||||
"pl": -846.53,
|
||||
"pl_pct": -2.77,
|
||||
"price": 37.1,
|
||||
"cost_price": 38.16,
|
||||
"currency": "CNY",
|
||||
"market_val": 29680.0,
|
||||
"cost_amount": 30526.53,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": -0.94
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "300548",
|
||||
"name": "长芯博创",
|
||||
"shares": 100,
|
||||
"avail_shares": 100,
|
||||
"price": 276.79,
|
||||
"price": 279.12,
|
||||
"cost_price": 231.46,
|
||||
"pl": 4766.0,
|
||||
"pl_pct": 20.59,
|
||||
"currency": "CNY",
|
||||
"market_val": 27912.0,
|
||||
"cost_amount": 23146.0,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": -3.23
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "02318",
|
||||
"name": "中国平安",
|
||||
"shares": 500,
|
||||
"avail_shares": 500,
|
||||
"price": 52.8,
|
||||
"cost_price": 54.8199,
|
||||
"pl": -896.35,
|
||||
"pl_pct": -3.78,
|
||||
"price": 52.75,
|
||||
"cost_price": 54.82,
|
||||
"currency": "HKD",
|
||||
"market_val": 22843.39,
|
||||
"cost_amount": 23739.74,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": -1.49
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "300035",
|
||||
"name": "中科电气",
|
||||
"shares": 1400,
|
||||
"avail_shares": 1400,
|
||||
"price": 16.02,
|
||||
"cost_price": 22.2914,
|
||||
"pl": -8765.91,
|
||||
"pl_pct": -28.09,
|
||||
"price": 16.03,
|
||||
"cost_price": 22.29,
|
||||
"currency": "CNY",
|
||||
"market_val": 22442.0,
|
||||
"cost_amount": 31207.91,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": -2.08
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "000700",
|
||||
"name": "模塑科技",
|
||||
"shares": 1400,
|
||||
"avail_shares": 1400,
|
||||
"price": 14.52,
|
||||
"cost_price": 14.8336,
|
||||
"pl": -327.0,
|
||||
"pl_pct": -1.57,
|
||||
"price": 14.6,
|
||||
"cost_price": 14.83,
|
||||
"currency": "CNY",
|
||||
"market_val": 20440.0,
|
||||
"cost_amount": 20767.0,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": -3.07
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "518880",
|
||||
"name": "黄金ETF华安",
|
||||
"shares": 2400,
|
||||
"avail_shares": 2400,
|
||||
"price": 8.44,
|
||||
"cost_price": 12.1915,
|
||||
"pl": -8982.04,
|
||||
"pl_pct": -30.7,
|
||||
"price": 8.449,
|
||||
"cost_price": 12.19,
|
||||
"currency": "CNY",
|
||||
"market_val": 20277.6,
|
||||
"cost_amount": 29259.64,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": -1.16
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "01088",
|
||||
"name": "中国神华",
|
||||
"shares": 500,
|
||||
"avail_shares": 500,
|
||||
"price": 41.84,
|
||||
"cost_price": 45.974,
|
||||
"pl": -1764.27,
|
||||
"pl_pct": -8.86,
|
||||
"price": 41.9,
|
||||
"cost_price": 45.97,
|
||||
"currency": "HKD",
|
||||
"market_val": 18144.8,
|
||||
"cost_amount": 19909.06,
|
||||
"exchange_rate": 0.8661,
|
||||
"change_pct": -0.52
|
||||
"exchange_rate": 0.8661
|
||||
},
|
||||
{
|
||||
"code": "600563",
|
||||
"name": "法拉电子",
|
||||
"shares": 100,
|
||||
"avail_shares": 100,
|
||||
"price": 178.76,
|
||||
"price": 174.57,
|
||||
"cost_price": 146.95,
|
||||
"pl": 2762.0,
|
||||
"pl_pct": 18.8,
|
||||
"currency": "CNY",
|
||||
"market_val": 17457.0,
|
||||
"cost_amount": 14695.0,
|
||||
"exchange_rate": 0.866
|
||||
"exchange_rate": 0.8664
|
||||
},
|
||||
{
|
||||
"code": "300690",
|
||||
"name": "双一科技",
|
||||
"shares": 400,
|
||||
"avail_shares": 400,
|
||||
"price": 22.68,
|
||||
"cost_price": 27.178,
|
||||
"pl": -1759.2,
|
||||
"pl_pct": -16.18,
|
||||
"price": 22.78,
|
||||
"cost_price": 27.18,
|
||||
"currency": "CNY",
|
||||
"market_val": 9112.0,
|
||||
"cost_amount": 10871.2,
|
||||
"exchange_rate": 0.866,
|
||||
"change_pct": -3.98
|
||||
"exchange_rate": 0.8664
|
||||
}
|
||||
],
|
||||
"cash": 80476,
|
||||
"total_market_value": 930199.93,
|
||||
"total_pl": -164810.3,
|
||||
"position_pct": 92.0,
|
||||
"updated_at": "2026-06-24 11:47",
|
||||
"source": "/home/hmo/stocks/holding.xls",
|
||||
"total_assets": 1010675.93
|
||||
"cash": 20230.1,
|
||||
"total_market_value": 988512.96,
|
||||
"total_assets": 1008860.62,
|
||||
"total_pl": -164895.4,
|
||||
"position_pct": 97.98,
|
||||
"updated_at": "2026-06-24 11:29",
|
||||
"source": "/home/hmo/stocks/holding.xls + 截图校核"
|
||||
}
|
||||
Reference in New Issue
Block a user