Files
sanguo_quant_live/jiangwei-platform/research/joinquant_articles/article_05.txt
T
cfdaily affcfa0c72 按照工作流规则进行目录整理
**主要调整:**
1. 重命名将军工作区目录:
   - data-engineering → zhaoyun-data (赵云数据工程)
   - risk-management → guanyu-risk (关羽风控管理)
   - platform → jiangwei-platform (姜维平台)
   - technical-strategy → zhangfei-technical (张飞技术策略)

2. 创建新目录:
   - archive/ (归档目录)
   - simayi-quality/ (司马懿质量保证)
   - pangtong-value/ (庞统价值投资)

3. 移动内容:
   - value-investing → pangtong-value/research (庞统价值投资)
   - running_data → zhaoyun-data/data (运行数据)
   - 文件任务管理系统文档 → archive/file-task-system

4. 清理文件:
   - 删除所有日志文件
   - 删除agent脚本
   - 删除knowledge-base (使用统一知识库)

5. 创建标准结构:
   - 各将军目录下创建research/, scripts/, reports/, references/子目录

6. 更新.gitignore:
   - 排除日志文件和临时文件

**依据:** management/workflow-rules.md
**制定:** 庞统(凤雏)
**审核:** 诸葛亮
2026-03-25 17:27:35 +08:00

248 lines
6.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
标题: 聚宽实盘交易中的常见问题与解决方案
链接: https://www.joinquant.com/view/community/detail/5
分类: 实盘
================================================================================
# 聚宽实盘交易中的常见问题与解决方案
## 一、订单执行问题
### 1.1 常见问题
**问题1:订单不成交或部分成交**
原因:
- 价格设置不合理
- 下单时机不好
- 股票流动性不足
解决方案:
```python
# 方案1:使用市价单(注意风险)
order_value(stock, value, style=MarketOrder())
# 方案2:使用限价单,但价格更主动
current_price = data[stock].close
order(stock, amount, style=LimitOrder(current_price * 1.001)) # 买一价上浮0.1%
# 方案3:分批下单
def split_order(stock, total_amount, batch_size=100):
remaining = total_amount
while remaining > 0:
order_amount = min(batch_size, remaining)
order(stock, order_amount)
remaining -= order_amount
time.sleep(1) # 等待一段时间
```
**问题2:滑点过大**
原因:
- 大单直接扫单
- 流动性差的股票
- 下单时机不对
解决方案:
1. 分批下单,减少单笔订单规模
2. 选择流动性好的交易标的
3. 避开开盘和收盘时段
4. 使用TWAP/VWAP等算法交易
**问题3:订单重复发送**
原因:
- 网络超时导致重发
- 系统故障
- 逻辑错误
解决方案:
```python
# 订单去重机制
def initialize(context):
g.sent_orders = set() # 记录已发送的订单
def send_order_safe(stock, amount):
# 生成订单唯一标识
order_key = f"{context.current_dt}_{stock}_{amount}"
if order_key in g.sent_orders:
print(f"订单已发送,跳过: {order_key}")
return None
# 发送订单
o = order(stock, amount)
if o:
g.sent_orders.add(order_key)
return o
def after_trading_end(context, data):
# 清空订单记录
g.sent_orders.clear()
```
## 二、系统稳定性问题
### 2.1 常见问题
**问题1:网络连接中断**
解决方案:
1. 使用多网络冗余(有线+4G/5G)
2. 部署在云服务器上(稳定网络)
3. 设置心跳检测和自动重连
**问题2:系统崩溃**
解决方案:
```python
# 方案1:进程守护
# 使用supervisor等工具监控和自动重启进程
# 方案2:定期保存状态
def save_state(context):
state = {
'portfolio': context.portfolio,
'positions': context.portfolio.positions,
'g': g.__dict__
}
with open('state.json', 'w') as f:
json.dump(state, f)
def load_state():
if os.path.exists('state.json'):
with open('state.json', 'r') as f:
return json.load(f)
return None
```
**问题3:券商系统异常**
解决方案:
1. 选择稳定的券商
2. 准备备用券商通道
3. 建立人工应急交易机制
## 三、市场冲击成本
### 3.1 评估策略容量
**方法1:回测分析**
```python
# 不同资金规模下的回测
for capital in [100000, 500000, 1000000, 5000000]:
result = backtest(strategy, initial_capital=capital)
print(f"资金规模{capital}: 收益率{result['return']}, 换手率{result['turnover']}")
```
**方法2:实盘测试**
从小资金开始,逐步增加资金,观察收益变化。
### 3.2 降低冲击成本的方法
1. **优化持仓周期**:减少交易频率
2. **分散持仓**:增加股票数量,降低单只股票权重
3. **分批下单**:将大单拆分成小单
4. **选择流动性好的股票**:优先交易大盘股、流动性好的股票
5. **使用算法交易**TWAP、VWAP等
## 四、监控与复核机制
### 4.1 实盘初期人工复核
**每日检查清单**
- [ ] 订单执行情况:是否全部成交,滑点是否正常
- [ ] 持仓情况:是否与预期一致
- [ ] 资金情况:资金变化是否合理
- [ ] 策略信号:是否与回测一致
- [ ] 系统日志:是否有异常错误
- [ ] 风控指标:是否在安全范围内
**检查时间**
- 开盘前:检查系统状态、持仓、资金
- 盘中:监控策略运行、订单执行
- 收盘后:详细检查当日交易,记录问题
### 4.2 多级熔断机制
```python
# 熔断规则配置
circuit_breakers = {
# 策略级熔断
'strategy_daily_loss': 0.02, # 单日亏损2%
'strategy_consecutive_loss': 3, # 连续亏损3天
'strategy_drawdown': 0.10, # 最大回撤10%
# 组合级熔断
'portfolio_drawdown': 0.15, # 组合回撤15%
'portfolio_leverage': 1.5, # 杠杆超过1.5倍
# 市场级熔断
'market_index_drop': 0.05, # 大盘单日下跌5%
}
def check_circuit_breakers(context):
"""检查熔断条件"""
# 检查策略级熔断
if get_daily_loss() > circuit_breakers['strategy_daily_loss']:
return 'strategy_daily_loss'
if get_consecutive_loss_days() >= circuit_breakers['strategy_consecutive_loss']:
return 'strategy_consecutive_loss'
if get_drawdown() > circuit_breakers['strategy_drawdown']:
return 'strategy_drawdown'
# ... 检查其他熔断条件
return None
def handle_circuit_breaker(context, reason):
"""处理熔断"""
print(f"触发熔断: {reason}")
# 平仓所有持仓
for stock in context.portfolio.positions:
order_target(stock, 0)
# 停止策略
stop_strategy()
# 发送告警
send_alert(f"策略熔断: {reason}")
```
## 五、实践案例
**案例1:订单执行问题**
问题:某股票订单总是部分成交
原因:股票流动性差,单笔订单过大
解决:将订单拆分成小单,每笔100手,间隔5秒
结果:成交率从40%提升到90%
**案例2:系统稳定性问题**
问题:网络偶尔中断,导致订单无法发送
解决:
1. 部署到云服务器,使用稳定网络
2. 实现订单队列和重试机制
3. 设置短信告警,及时通知
结果:系统稳定性大幅提升
**案例3:市场冲击成本**
问题:资金增加到500万后,收益率明显下降
原因:大单导致滑点增大
解决:
1. 将持仓从20只增加到50只
2. 分批下单,每笔不超过50手
3. 避开开盘和收盘时段
结果:收益率恢复到接近小资金时的水平
---
**总结**:实盘交易中会遇到各种问题,关键是建立完善的监控机制、应急方案和问题处理流程。通过不断积累经验,持续优化,可以逐步提高实盘交易的稳定性和收益率。