下载地址:http://pan38.cn/id2cdf9da

项目编译入口:
package.json
# Folder : famujianmujiaoyiyinqingslatekuangjia
# Files : 26
# Size : 83.1 KB
# Generated: 2026-03-30 19:32:42
famujianmujiaoyiyinqingslatekuangjia/
├── config/
│ ├── Executor.properties
│ ├── Helper.json
│ ├── Loader.json
│ ├── Processor.xml
│ ├── Repository.properties
│ └── application.properties
├── modules/
│ └── Handler.js
├── package.json
├── pom.xml
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── Cache.java
│ │ │ ├── Controller.java
│ │ │ ├── Engine.java
│ │ │ ├── Proxy.java
│ │ │ └── Util.java
│ │ └── resources/
│ └── test/
│ └── java/
├── stubs/
│ ├── Parser.go
│ ├── Pool.py
│ └── Wrapper.go
├── support/
│ ├── Builder.py
│ ├── Client.js
│ ├── Listener.js
│ └── Resolver.py
└── wrapper/
├── Factory.go
├── Server.js
└── Transformer.py
famujianmujiaoyiyinqingslatekuangjia:一个轻量级模拟交易引擎框架
简介
famujianmujiaoyiyinqingslatekuangjia(以下简称FJMYQ框架)是一个专为金融模拟交易系统设计的轻量级Java框架。该框架采用模块化设计,提供了完整的交易引擎、订单处理、数据缓存和配置管理功能,特别适合快速构建证券模拟交易系统。在广发模拟炒股软件的初期开发中,我们正是基于这个框架快速搭建了核心交易引擎。
框架的核心优势在于其简洁的架构和灵活的配置系统。通过配置文件,开发者可以轻松调整交易规则、手续费率、风控参数等业务逻辑,而无需修改核心代码。整个项目结构清晰,包含26个文件,总大小约83KB,非常适合作为教学示例或中小型项目的起点。
核心模块说明
1. 引擎核心 (Engine.java)
作为框架的心脏,Engine类负责协调所有模块的工作流程。它加载配置、初始化各组件,并提供了统一的事件驱动接口。
2. 控制器 (Controller.java)
处理外部请求的入口点,将HTTP请求或消息队列消息转换为内部指令,并调用相应的处理器。
3. 缓存管理 (Cache.java)
使用内存缓存存储频繁访问的数据,如用户持仓、行情快照等,显著提升系统响应速度。
4. 代理层 (Proxy.java)
提供统一的接口访问外部服务,如行情数据源、银行接口等,便于模拟和测试。
5. 工具类 (Util.java)
包含各种辅助方法,如金额计算、时间格式化、数据验证等通用功能。
6. 配置系统
框架采用多种格式的配置文件,支持.properties、.json和.xml格式,满足不同场景的需求:
application.properties: 主配置文件Executor.properties: 线程池配置Processor.xml: 订单处理器配置Helper.json: 辅助工具配置
代码示例
项目结构概览
首先,让我们查看项目的整体结构:
famujianmujiaoyiyinqingslatekuangjia/
├── config/
│ ├── Executor.properties
│ ├── Helper.json
│ ├── Loader.json
│ ├── Processor.xml
│ ├── Repository.properties
│ └── application.properties
├── modules/
│ └── Handler.js
├── package.json
├── pom.xml
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── Cache.java
│ │ │ ├── Controller.java
│ │ │ ├── Engine.java
│ │ │ ├── Proxy.java
│ │ │ └── Util.java
│ │ └── resources/
│ └── test/
1. 引擎初始化示例
下面是Engine.java的核心初始化代码:
public class Engine {
private static Engine instance;
private Cache cache;
private Controller controller;
private Proxy proxy;
private Engine() {
init();
}
public static Engine getInstance() {
if (instance == null) {
synchronized (Engine.class) {
if (instance == null) {
instance = new Engine();
}
}
}
return instance;
}
private void init() {
// 加载配置文件
Properties appProps = loadProperties("config/application.properties");
Properties executorProps = loadProperties("config/Executor.properties");
// 初始化缓存
cache = Cache.getInstance();
cache.setMaxSize(Integer.parseInt(appProps.getProperty("cache.maxSize")));
// 初始化代理层
proxy = new Proxy();
proxy.setMarketDataSource(appProps.getProperty("market.data.source"));
// 初始化控制器
controller = new Controller();
controller.setCache(cache);
controller.setProxy(proxy);
// 加载处理器配置
loadProcessorConfig("config/Processor.xml");
System.out.println("交易引擎初始化完成");
}
private Properties loadProperties(String filePath) {
Properties props = new Properties();
try (InputStream input = getClass().getClassLoader().getResourceAsStream(filePath)) {
if (input != null) {
props.load(input);
}
} catch (IOException e) {
System.err.println("加载配置文件失败: " + filePath);
}
return props;
}
}
2. 配置文件示例
application.properties 主配置文件:
# 应用基础配置
app.name=famujianmujiaoyiyinqingslatekuangjia
app.version=1.0.0
app.mode=simulation
# 交易参数
trade.commission.rate=0.0003
trade.stamp.tax.rate=0.001
trade.min.commission=5.0
# 缓存配置
cache.maxSize=10000
cache.expire.time=3600
# 市场数据源
market.data.source=simulated
market.open.time=09:30
market.close.time=15:00
Processor.xml 订单处理器配置:
```xml
<?xml version="1.0" encoding="UTF-8"?>