# findata
**Repository Path**: s010m00n/findata
## Basic Information
- **Project Name**: findata
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-06-20
- **Last Updated**: 2025-10-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 数据下载, 策略回测, 用户论坛, 策略隐私
## README
# FinData - A股数据下载与量化策略回测平台
## 项目概述
FinData是一个基于C#开发的A股数据下载与量化策略回测平台,旨在为量化交易爱好者和专业人士提供便捷的数据获取和策略测试环境。项目包含用户前台系统(findata-user)和管理后台系统(findata-admin)两个主要组件。
## 系统架构
### 用户前台系统 (findata-user)
用户前台系统提供A股数据下载、量化策略回测、实时行情查看等核心功能,是普通用户使用的主要界面。
### 管理后台系统 (findata-admin)
管理后台系统用于管理用户、内容和系统运行状态,为平台安全和内容合规提供保障,仅供管理员使用。
## 技术栈
- 后端:ASP.NET Core 7.0
- 前端:HTML, CSS, JavaScript, Bootstrap 5, Vue.js(渐进式改造)
- 数据库:MariaDB
- 回测引擎:PandaFactor
- 部署:Nginx反向代理
## 主要功能
### 用户前台功能
- A股市场数据下载与管理
- 量化策略编写与回测
- 可视化分析工具
- 策略优化与评估
- 自选股票实时行情
- 用户交流论坛
### 管理后台功能
- 用户账户管理
- 论坛内容审核与管理
- 举报处理与用户惩罚
- 系统运行状态监控
- 数据统计与分析
## 前端Vue渐进式改造
为了提升用户体验和代码可维护性,我们正在对FinData前端进行Vue.js的渐进式改造。
### 改造策略
1. **渐进式集成**
- 保留现有功能的同时逐步引入Vue.js
- 页面级别的独立改造,避免全站大规模重构风险
- 新功能优先使用Vue.js开发
2. **技术实现**
- 通过CDN方式引入Vue 3.x
- 使用Vue的组合式API (Composition API)
- 自定义分隔符避免与服务端模板冲突
- 与Bootstrap 5组件库集成(管理后台)
3. **文件结构**
- `/wwwroot/js/vue-config.js`: Vue全局配置和辅助函数
- 各页面内的Vue组件配置
4. **改造进度**
- [x] 欢迎页面 (dark-welcome.html)
- [ ] 仪表盘页面
- [ ] 自选股票页面
- [ ] 数据下载页面
- [ ] 论坛页面
- [ ] 回测页面
### 使用方法
在需要使用Vue的页面中:
1. 引入Vue依赖和配置文件
```html
```
2. 创建Vue应用容器
```html
```
3. 定义Vue组件配置
```javascript
window.vueConfigs = window.vueConfigs || {};
window.vueConfigs.appName = {
setup() {
const { ref, computed, onMounted } = Vue;
// 组件逻辑...
return {
// 返回模板中使用的数据
};
}
};
```
### 渐进式改造案例:欢迎页面
我们已经完成了欢迎页面(dark-welcome.html)的Vue改造,这是一个典型的渐进式改造案例:
1. **保留原有视觉效果和功能**
- 维持原有的动画、过渡和交互体验
- 确保用户感知一致性
2. **从命令式到声明式**
- 原代码:手动创建DOM元素并设置属性
```javascript
text.split('').forEach((char, index) => {
const span = document.createElement('span');
span.className = 'char';
span.style.animationDelay = `${index * 0.1}s`;
span.textContent = char;
welcomeText.appendChild(span);
});
```
- Vue改造:使用声明式渲染
```html
{{ char }}
```
3. **状态管理**
- 使用Vue的响应式系统管理状态
```javascript
const welcomeText = ref('Welcome To Quant World!');
const particles = reactive([]);
```
4. **生命周期管理**
- 使用Vue的生命周期钩子替代原生事件
```javascript
onMounted(() => {
// 初始化逻辑
// ...
// 页面跳转逻辑
setTimeout(() => {
// ...
}, 4000);
});
```
### 渐进式改造的优势
1. **风险可控**
- 逐页改造,不影响其他功能
- 可随时回滚单个页面的改动
2. **学习曲线平缓**
- 团队成员可以逐步适应Vue开发模式
- 不需要一次性掌握所有Vue概念
3. **投资回报比高**
- 优先改造交互复杂的页面,获得最大收益
- 简单页面可以暂时保持原样
4. **兼容性好**
- 可以与jQuery等传统库共存
- 不需要重写所有功能
### 未来规划
我们计划在未来6个月内完成所有核心页面的Vue改造,并逐步引入更多现代前端开发实践:
1. **组件库建设**
- 提取常用UI组件,建立组件库
- 统一设计语言和交互模式
2. **状态管理优化**
- 引入Pinia或Vuex进行全局状态管理
- 处理复杂的跨组件通信
3. **构建工具升级**
- 从CDN引入升级到使用Vite构建
- 优化资源加载和打包策略
## 快速开始
### 环境要求
- .NET 7.0 SDK或更高版本
- Visual Studio 2022或其他C#开发环境
- MariaDB 10.x
### 环境设置
1. 安装.NET 7.0 SDK
- 运行`download_dotnet.bat`或访问[.NET下载页面](https://dotnet.microsoft.com/download/dotnet/7.0)
- 安装适用于Windows x64的.NET SDK 7.0
- 详细说明请参考`DOTNET_SETUP.md`
2. 数据库设置
- 确保MariaDB服务已启动
- 导入初始数据(如有需要)
### 启动用户前台系统
1. 进入findata-user目录
2. 执行以下命令启动项目:
```
dotnet run
```
或者使用批处理脚本:
```
start_all.bat
```
3. 在浏览器中访问 `http://localhost:8000`
### 启动管理后台系统
1. 进入findata-admin目录
2. 执行以下命令启动项目:
```
dotnet run
```
或者使用批处理脚本:
```
start_findata_admin.bat
```
3. 在浏览器中访问 `http://localhost:8002`
## 数据下载模块
FinData平台提供丰富的金融数据下载功能,支持多种数据类型和格式。
### 数据类型
1. 股票历史日线数据
- 提供A股市场全部股票的历史日线交易数据
- 包含开盘价、收盘价、最高价、最低价、成交量等关键指标
- 数据更新至最近交易日
2. 主要指数历史日线数据
- 提供上证指数、深证成指、创业板指、沪深300等主要指数的历史日线数据
- 包含指数点位、涨跌幅、成交量等关键指标
3. 财务数据
- 提供A股上市公司的季度财务报表数据
- 包括资产负债表、利润表、现金流量表等核心财务指标
- 数据覆盖最近20个财务季度
## 回测平台集成
本项目集成了PandaFactor回测平台,提供量化策略的回测功能。
### 集成方式
- 通过Nginx反向代理将FinData和PandaFactor部署在同一个域名下
- 使用localStorage共享用户信息
- 实现无缝的用户体验和数据交互
### 路由守卫
为确保系统的安全性和用户体验,我们实现了基于Cookie的路由守卫机制:
1. 访问控制策略
- 主页(`/`)可以直接访问,无需授权
- 静态资源(`/static/`)可以直接访问,无需授权
- 其他路径(如`/factor/`、`/backtesting/`、`/api/panda/`)需要通过主页访问获取授权
## 安全机制
### 用户认证
- 密码加密:SHA256哈希 + 随机盐值
- 会话保护:HttpOnly和SameSite属性
- 防暴力破解:登录失败次数限制
### 管理员认证
- 基于Session的认证机制
- 密码使用SHA256哈希加盐存储
- 安全的会话管理
### 监管者访问控制
- 监管者接口隐藏:使用非常规路由和特殊认证机制
- 监管者账户安全:
- 监管者账户不存储在数据库中,避免常规数据库攻击
- 账户信息以加密形式存储在本地配置文件中
- 使用强加密算法保护账户信息,即使获取文件也无法轻易解密
- 定期更新密钥,增强系统防御能力
## 部署指南
### 独立部署
1. 编译项目:`dotnet build`
2. 发布项目:`dotnet publish -c Release`
3. 运行发布版本:`dotnet findata-user.dll` / `dotnet findata-admin.dll`
### 集成部署
1. 使用Nginx反向代理将两个系统部署在不同子路径下
2. 配置共享数据库连接
3. 设置适当的访问控制策略
## 许可证
仅供学习和研究使用,不得用于商业目的。