Install
openclaw skills install stock-simulator模拟炒股技能。当用户想要模拟炒股、学习投资、记录股票交易、查看股票收益时使用此技能。支持A股、港股、美股市场,提供股票推荐、购买记录、收益计算等功能。
openclaw skills install stock-simulator这是一个模拟炒股的技能,帮助用户在不投入真实资金的情况下体验股票投资。用户可以:
技能会自动在以下位置创建数据目录:
workspace/stock_data/{用户ID}/
├── config.json # 账户配置(自动创建)
├── holdings.json # 持仓数据(自动创建)
├── transactions.json # 交易记录(自动创建)
└── profits.json # 收益数据(自动创建)
用户无需手动创建这些目录。
在你的工作区内创建以下目录结构:
workspace/skills/stock-simulator/scripts/
在上述目录创建文件 get_market_data.py,复制以下代码:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""股票数据获取脚本"""
import json
import urllib.request
import sys
import os
# ====== 代理配置 ======
# 如果需要代理,取消注释以下两行并修改为你的代理地址
# PROXY = {'http': 'http://代理地址:端口', 'https': 'http://代理地址:端口'}
# ======================
def get_stock_data(stock_code, market='cn'):
url = ""
if market == 'cn':
url = f"https://push2.eastmoney.com/api/qt/stock/get?secid=1.{stock_code}&fields=f2,f3,f4,f43,f44,f45,f57,f58"
elif market == 'hk':
url = f"https://qt.gtimg.cn/q=r_hk{stock_code}"
elif market == 'us':
url = f"https://query1.finance.yahoo.com/v8/finance/chart/{stock_code}"
try:
req = urllib.request.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0')
# 只有配置了代理时才使用
if 'PROXY' in dir():
proxy_handler = urllib.request.ProxyHandler(PROXY)
opener = urllib.request.build_opener(proxy_handler)
response = opener.open(req, timeout=10)
else:
response = urllib.request.urlopen(req, timeout=10)
data = json.loads(response.read().decode('utf-8'))
# 解析返回数据(根据市场类型)
if market == 'cn':
data_obj = data.get('data', {})
if data_obj:
return {
'code': data_obj.get('f57'),
'name': data_obj.get('f58'),
'price': (data_obj.get('f43') or 0) / 100,
'change': (data_obj.get('f44') or 0) / 10000,
'change_percent': (data_obj.get('f45') or 0) / 10000,
'market': 'cn',
'source': 'eastmoney'
}
elif market == 'hk':
import re
text = str(data)
match = re.search(r'="([^"]+)"', text)
if match:
parts = match.group(1).split('~')
if len(parts) > 4:
return {
'code': parts[2],
'name': parts[1],
'price': float(parts[3]) if parts[3] else 0,
'change': float(parts[4]) - float(parts[3]) if parts[3] and parts[4] else 0,
'change_percent': 0,
'currency': 'HKD',
'market': 'hk',
'source': 'tencent'
}
elif market == 'us':
result = data.get('chart', {}).get('result', [])
if result:
meta = result[0].get('meta', {})
price = meta.get('regularMarketPrice', 0)
prev = meta.get('previousClose', price)
return {
'code': stock_code,
'name': meta.get('shortName', stock_code),
'price': price,
'change': price - prev if price and prev else 0,
'change_percent': ((price - prev) / prev * 100) if prev and price else 0,
'currency': 'USD',
'market': 'us',
'source': 'yahoo'
}
except Exception as e:
return {'error': str(e), 'code': stock_code, 'market': market}
return {'error': 'No data', 'code': stock_code}
if __name__ == '__main__':
if len(sys.argv) > 1:
code = sys.argv[1]
market = sys.argv[2] if len(sys.argv) > 2 else 'cn'
print(json.dumps(get_stock_data(code, market), ensure_ascii=False, indent=2))
关键点:
if 'PROXY' in dir() 判断是否配置了代理python workspace/skills/stock-simulator/scripts/get_market_data.py 600519 cn
python workspace/skills/stock-simulator/scripts/get_market_data.py 00700 hk
python workspace/skills/stock-simulator/scripts/get_market_data.py AAPL us
对AI说:
模拟炒股,买入腾讯控股 10000元
模拟炒股,推荐股票
模拟炒股,我的收益
| 市场 | 代码格式 | 示例 |
|---|---|---|
| A股 | 6位数字 | 600519, 000001 |
| 港股 | 5位数字 | 00700, 09988 |
| 美股 | 字母 | AAPL, GOOGL, NVDA |
版本: 1.0.0