宇宙鱼排交易所 (FishpiStock) - 插件介绍与更新历史
宇宙鱼排交易所 (FishpiStock) - 插件介绍与更新历史
📖 插件简介
宇宙鱼排交易所插件(FishpiStock)是一款专为 FishPi.cn 社区打造的虚拟炒股游戏 Tampermonkey 油猴插件。插件模拟真实的股票交易市场,提供高度自由的自定义股票发行、买卖交易、数据同步等功能,为社区成员带来沉浸式的经营体验和竞技乐趣。
✨ 核心特性
🎮 游戏机制
- 初始资金: 1 亿虚拟货币(成本锁定)
- 默认股票: 6 只预设股票(蓝筹股、ST 股、ETF、妖股)
- 价格波动: 每 10 秒自动更新,模拟真实市场
- 涨跌停限制: ±20% 触发涨跌停
- 交易冷却: 买入/卖出后需等待 5 分钟冷却时间
- 上市冷却: 每次新股票上市后需等待 10 分钟
💼 股票类型
| 类型 | 代码前缀 | 特点 | 风险等级 |
|---|---|---|---|
| 💎 蓝筹股 | FP-1xxx | 低波动、稳定趋势 | ⭐⭐ |
| 📉 ST 股 | FP-2xxx | 中波动、中等风险 | ⭐⭐⭐ |
| 📈 ETF | FP-5xxx | 极低波动、分散风险 | ⭐ |
| 👹 妖股 | FP-4xxx | 高波动、高风险高收益 | ⭐⭐⭐⭐⭐ |
🛠️ 功能亮点
- ✅ 自定义上市: 玩家可创建新股票(名称、价格>100、类型自选)
- ✅ 智能退市: 删除股票时自动强制清仓,资金返还
- ✅ 云端同步: 支持跨设备数据同步(基于 FishPi 云存储)
- ✅ 数据导出/导入: JSON 格式备份恢复
- ✅ 实时事件预警: 重大行情提前 15-40 秒预告(v4 开发中)
- ✅ 收益率排行: 实时显示各股票涨跌幅排名
- ✅ 一键操作: 支持一键满仓/一键清仓
- ✅ 聊天室集成: 交易记录自动发送到聊天室(暂时移除)
🎯 交易规则
- 买入限制: 必须有足够可用资金
- 卖出限制: 必须有足够持仓数量
- 冷却机制:
- 买入后 → 等待 5 分钟才能卖出
- 卖出后 → 等待 5 分钟才能买入
- 涨跌停: 单小时涨跌幅达±20% 触发停牌
- 重置限制: 收益率 < -90%(亏损超 90%)才可重置账户
📜 更新历史
🔮 未来版本 (v4.x - 开发中)
v4.1.1 (未发布)
- 📝 代码优化中
v4.1 (开发中)
- 🔧 多项功能改进
v4.0 (规划中)
-
🆕 实时事件预警系统
- 🚨 提前 15-40 秒预警重大行情
- 📺 滚动新闻条显示在排行榜上方
- 🎨 四级严重性配色(极端/高/中/低)
- 🔄 自动清理过期预警
-
事件类型示例:
- 🔴 妖股爆发:游资疯狂炒作!(提前 40 秒)
- ⚠️ ST 暴跌:退市风险,巨亏警告!(提前 30 秒)
- 📢 ETF 震荡:成交量萎缩(提前 15 秒)
🚀 v3.1.x 系列 - 完善与优化
v3.1.1 (2026-03-11) - 重置条件优化 + Emoji 优化
主要改进:
-
修改重置账户收益率条件
- 从"收益率 ≥ 90% 禁止重置"改为"收益率 < -90% 才允许重置"
- 只有严重亏损(亏损超过 90%)时才能重置账户
- 防止用户在盈利或小幅亏损时随意重置
-
优化 GM 菜单 Emoji 标识
- ♻️ 回收标志 - 重置账户(资金回收,重新开始)
- 🗑️ 垃圾桶 - 删除股票(丢弃、移除)
- 🧹 扫帚 - 清理数据(清扫、整理)
v3.1.0 (2026-03-11) - 菜单整合 + 重置限制
主要改进:
-
删除重复的 GM 菜单项
- 移除两个相同的"🧹 清理无效股票数据"命令
- 菜单按功能排序,更加清晰
-
添加重置账户收益率限制
- 收益率 ≥ 90% 时禁止重置
- 保护高收益账户不被误操作
收益率判断逻辑
if (Number(roi.value) >= 90) { msgbox.alert('⚠️ 当前收益率 ≥ 90%,不允许重置账户'); return; }
v3.0.9 (2026-03-11) - JSON 解析修复
严重 Bug 修复:
- 问题: TypeError: customStocks.push is not a function
- 原因: FishPi 的
cloudStorage.getItem()返回 JSON 字符串而非对象 - 修复: 添加
JSON.parse()解析和类型检查
修复代码:
let customStocks = await cloudStorage.getItem(STOCK_KEY);
if (typeof customStocks === 'string') {
customStocks = JSON.parse(customStocks);
}
if (!Array.isArray(customStocks)) {
customStocks = [];
}
customStocks.push(newStock);
v3.0.8 (2026-03-11) - 菜单优化 + 上市修复
主要改进:
- 脚本菜单合理化
- 重新组织 GM 菜单命令顺序
- 统一 emoji 使用
- 上市功能修复
- 增加详细的错误处理
- 添加调试日志输出
- 优化错误提示
- 代码优化
- 移除重复的 GM 菜单注册
- 统一清理工具逻辑
v3.0.7 (2026-03-11) - 云同步修复
主要改进:
- 修复
syncFromCloud()不再从fishpi_stock_data恢复股票数据 - 添加专用的云端残留数据清理工具
- 更改重置账户 emoji 为 '♻️'
技术细节:
syncFromCloud()只恢复 account、lastTradeType、tradeCooldownscustomStocks和stockPrices以独立键值为准
v3.0.6 (2026-03-11) - 批量删除优化
主要改进:
- "删除全部自定义股票"功能无需比对数量,直接清除
- 简化确认对话框内容
- 只删除自定义股票数据,保留默认 6 只股票
v3.0.5 (2026-03-11) - 强制清仓 + 上市冷却
新增功能:
-
退市强制清仓
- 删除自定义股票时自动按当前价格卖出所有持仓
- 清仓所得资金自动返还到可用账户
- 交易记录标注"退市强制清仓"
- 彻底清除该股票的云端数据
-
上市冷却时间机制
- 每次成功上市后需等待 10 分钟
- 实时提示剩余时间(分 + 秒)
- 云端记录上市时间,刷新页面/更换设备均有效
操作流程
1. 点击"退市"按钮 2. 勾选要删除的股票 3. 确认对话框显示: - 待删除的股票列表 - 需要强制清仓的股票及数量 - 预估回收资金 4. 确认后自动执行清仓和删除
新增常量
const LIST_COOLDOWN_PERIOD = 600000; // 10 分钟
const LAST_LIST_TIME_KEY = 'lastStockListTime';
v3.0.4 (2026-03-10) - 持仓列表显示修复
主要改进:
- 修复持仓列表显示问题
- 优化小时价格逻辑
- 增强数据兼容性
v3.0.3 (2026-03-10) - 添加退市管理功能
新增功能:
- 支持删除自定义股票
- 批量删除功能
- 数据清理工具
v3.0.2 (2026-03-10) - FishPi 适配版
主要改进:
- 修复 msgbox 组件
- 修复 modal 弹窗
- 适配 FishPi.cn 平台
v3.0.1 (2026-03-11) - AI 辅助修复版
严重 Bug 修复:
-
修复 loadCustomStocks 函数
- 问题:
localStorage.getItem错误地传递了两个参数 - 修复:删除无效的第二参数,添加 try-catch 错误处理
- 问题:
-
修复 syncToCloud 函数
- 问题:
localStorage.setItem返回 undefined,导致保存到云端的 customStocks 字段为空 - 修复:改为
JSON.stringify(STOCKS)
- 问题:
-
修复 syncFromCloud 函数
- 问题:
localStorage(STOCK_KEY,<span> </span>data.customStocks)缺少方法名.setItem - 修复:改为
localStorage.setItem(STOCK_KEY, data.customStocks)
一般问题修复:
- 问题:
-
修复 clearAccountData 函数 - 取消注释
await syncToCloud() -
优化 getAccount 函数 - 添加 try-catch 错误处理
-
优化 initAccount 函数 - 添加 try-catch 块
代码优化:
- 删除冗余代码 - 移除重复初始化 window.openTradeModal 和 window.openListStockModal
- 版本号确认 - 确认日志中的版本号已正确显示
🏗️ v3.0.0 系列 - 架构升级
v3.0.0 (2026-03-10) - 支持自定义上市 + 买卖冷却
新增功能:
-
自定义上市股票
- 支持玩家申请上市新股票
- 可设置股票名称、初始价格(>100)、股票类型
- 自动生成股票代码(FP-7xxx 起)
- 新股上市消息发送到聊天室
-
买卖冷却时间
- 买入后需等待 5 分钟才能卖出
- 卖出后需等待 5 分钟才能买入
- 实时倒计时显示冷却时间
- 冷却状态在按钮上禁用显示
-
1 小时前价格替代昨日收盘价
- 每小时更新一次一小时前价格
- 排行榜显示 1 小时前价 instead of 昨日收盘价
- 更符合实时交易场景
-
数据导出/导入增强
- 导出包含自定义股票、交易冷却时间等完整数据
- 导入时自动恢复所有状态
- JSON 格式便于备份
技术实现:
// 生成股票代码
function generateStockCode() {
const existingCodes = STOCKS.map(s => s.code);
let startNum = 7001;
while (true) {
const code = `FP-${startNum}`;
if (!existingCodes.includes(code)) {
return code;
}
startNum++;
}
}
// 检查冷却时间
function checkCooldown(stockCode, actionType) {
const cooldownKey = `${stockCode}_${actionType}`;
const lastTradeTime = globalState.tradeCooldowns[cooldownKey];
const now = Date.now();
const elapsed = now - lastTradeTime;
const cooldownPeriod = 5 * 60 * 1000; // 5 分钟
if (elapsed >= cooldownPeriod) {
return { canTrade: true, remaining: 0 };
}
return {
canTrade: false,
remaining: cooldownPeriod - elapsed
};
}
📦 v2.x 系列 - 基础构建
v2.1.0 (2026-03-09) - ChatRoom 深度集成
新增功能:
-
交易冷却时间
- 初步引入冷却机制概念
- 为 v3.0 的完整冷却系统奠定基础
-
10 秒价格波动周期
- 从 30 秒缩短到 10 秒
- 提高游戏节奏感
-
一小时前价格记录
- 引入
lastHourPrices状态 - 替代传统的昨日收盘价
代码优化:
- 引入
- 改进全局状态管理
- 增强 Logger 工具
- 优化 ChatRoom 环境检测
v2.0.0 (2026-03-08) - ChatRoom 深度集成版
核心功能:
-
聊天室通知
- 交易记录自动发送到聊天室编辑器
- 支持自动发送或手动编辑后发送
- 格式化交易信息(买入/卖出详情)
-
Toast 提示系统
- 四种类型:success/error/warning/info
- 自动淡入淡出动画
- 可配置显示时长
-
性能优化
- 优化定时器管理
- 减少不必要的 DOM 操作
- 改进数据持久化策略
技术实现:
// 发送到聊天室
function sendToChatRoom(message, autoSend = false) {
if (!globalState.chatRoomAvailable) {
return false;
}
if (autoSend && ChatRoom.send) {
ChatRoom.send();
Logger.log('消息已发送到聊天室');
return true;
} else if (ChatRoom.editor) {
const current = ChatRoom.editor.getValue();
const separator = current.trim() ? '\n\n---\n' : '';
ChatRoom.editor.setValue(current + separator + message);
Logger.log('消息已添加到聊天室编辑器');
return true;
}
}
// Toast 提示
function showToast(message, type = 'info', duration = 3000) {
let container = document.querySelector('.toast-container');
if (!container) {
container = document.createElement('div');
container.className = 'toast-container';
container.style.cssText = 'position:fixed;top:20px;left:50%;...';
document.body.appendChild(container);
}
const toast = document.createElement('div');
const colors = {
success: '#4CAF50',
error: '#f44336',
warning: '#ff9800',
info: '#2196F3'
};
toast.style.cssText = `padding:12px 24px;border-radius:8px;...`;
toast.textContent = message;
container.appendChild(toast);
setTimeout(() => {
toast.style.opacity = '0';
setTimeout(() => toast.remove(), 300);
}, duration);
}
🌱 早期版本
v1.0.0 (2026-03-01) - 初始版本
基础功能:
- 6 只默认股票
- 基本买卖操作
- 简单价格波动
- 本地数据存储
🎯 数据统计
版本演进
- v1.x: 1 个版本(基础功能)
- v2.x: 2 个版本(ChatRoom 集成)
- v3.0.x: 10+ 个版本(架构升级、功能完善)
- v3.1.x: 2 个版本(优化与修复)
- v4.x: 开发中(实时预警系统)
代码统计
- 最新版本: v3.1.1 (2417 行)
- 最大版本: v4.0 (135.6KB)
- 累计修改: 100+ 次提交
🛠️ 技术栈
核心技术
- Tampermonkey: 油猴脚本框架
- JavaScript ES6+: 异步编程、箭头函数
- Lightweight Charts: K 线图绘制库
- FishPi Cloud Storage: 云端数据同步
API 使用
// ==UserScript==
// @grant GM_addStyle
// @grant GM_registerMenuCommand
// @require https://unpkg.com/lightweight-charts/dist/lightweight-charts.standalone.production.js
// @run-at document-end
// ==/UserScript==
📊 游戏经济系统
资金流动
初始资金:100,000,000
↓
股票交易:买入/卖出
↓
资产变化:可用资金 + 持仓市值
↓
收益率计算:((总资产 - 初始资金) / 初始资金) × 100%
股票定价机制
// 价格波动公式
newPrice = currentPrice × (1 + trend + random + eventImpact)
// 限制条件
minSinglePrice ≤ newPrice ≤ maxSinglePrice
|hourlyChangeRate| ≤ 20%
🎮 玩法指南
新手入门
- 打开插件: 点击页面右上角图标
- 查看排行: 了解各股票涨跌幅
- 买入股票: 选择看好的股票,输入数量
- 等待波动: 价格每 10 秒自动更新
- 卖出获利: 价格上涨后卖出赚取差价
进阶技巧
- 分散投资: 不要全仓一只股票
- 关注事件: 留意实时预警信息
- 利用冷却: 合理安排买卖时机
- 自定义上市: 发行自己的股票测试市场
高手策略
- 妖股博弈: 高风险高收益,适合激进玩家
- 蓝筹稳健: 低波动稳定收益,适合保守玩家
- ETF 避险: 市场不明朗时的避风港
- ST 投机: 重组预期带来的暴利机会
🔧 常见问题
Q1: 如何重置账户?
A: 当收益率 < -90%(亏损超过 90%)时,通过【脚本菜单】选择"♻️ 重置虚拟炒股账户"。
Q2: 自定义股票如何删除?
A: 通过【脚本菜单】选择"🗑️ 删除全部自定义股票",会强制清仓并删除所有自定义股票。
Q3: 数据如何备份?
A: 使用"导出数据"功能生成 JSON 文件,或依赖云端自动同步。
Q4: 为什么无法卖出股票?
A: 检查是否在买入后 1 分钟冷却期内,或股票是否触发涨跌停停牌。
Q5: 如何跨设备使用?
A: 登录同一 FishPi 账号,云端数据会自动同步。
👥 开发团队
- 作者: 余念(AM178)
- 卓越贡献者: 沐里(muli)
- AI 助手:【Lingma】【TRAE】【Claude Code】
- 特别感谢: FishPi.cn 社区
📄 开源协议
MIT License
🔗 相关链接
- FishPi 官网: https://fishpi.cn/
- 讨论区: FishPi 聊天室,QQ群,评论区
-
摸鱼周报
424 引用
每周五的摸鱼派活动-摸鱼周报 发表你的每周总结
-
JavaScript
32 引用
膜拜大佬
😎 膜拜沐里!
听不懂 梭哈!!
梭哈是一种智慧!听懂掌声! 👏 👏👏👏👏
膜拜大佬
😭 越改bug越多
摸鱼天台(建设中......)