策略实战 进阶

量化交易策略怎么写?从构想到代码的实战范例(2026完整教学)

Sentinel Team · 2026-03-06
量化交易策略怎么写?从构想到代码的实战范例(2026完整教学)

量化交易策略怎么写?从构想到代码的实战范例(2026完整教学)

最后更新:2026年2月 | 阅读时间:16分钟 | 难度:中级

!量化交易策略撰写教学 - RSI均值回归策略代码范例

核心关键词:量化策略、策略撰写、代码范例、技术指标、交易逻辑、RSI策略、策略优化、量化交易教学


目录

  1. 好策略 vs 烂策略:关键差别分析
  2. 完整交易策略的 4 大要素
  3. 实战范例:RSI 超买超卖均值回归策略
  4. 量化交易策略优化方法
  5. Sentinel 策略市集介绍与变现
  6. 量化策略常见问题 FAQ

好策略 vs 烂策略

你花了三个月写出一个「完美」的策略,回测报酬率 300%,兴奋地投入实盘——结果一个月亏掉 20%。问题出在哪?

烂策略的特征:

好策略的特征:

关键洞察: 好的量化策略不是预测未来,而是管理风险与期望值。


策略的 4 大要素

一个完整的交易策略必须包含以下四个核心组件:

1. 进场条件(Entry Signal)

决定何时开仓。常见的进场逻辑包括:

2. 出场条件(Exit Signal)

决定何时平仓。包含两种类型:

3. 滤网条件(Filter)

用于过滤低品质讯号,避免在不利环境交易:

4. 仓位管理(Position Sizing)

决定每笔交易投入多少资金:


实战范例:RSI 超买超卖策略

以下是一个完整的 RSI 均值回归策略,使用 Python 与 Sentinel 框架撰写:

from sentinel import Strategy, Order
import pandas as pd
import numpy as np

class RSIMeanReversion(Strategy):
    """
    RSI 超买超卖均值回归策略
    逻辑:当 RSI 超买(>70)做空,超卖(<30)做多
    """
    
    def __init__(self):
        super().__init__()
        # 策略参数
        self.rsi_period = 14
        self.overbought = 70
        self.oversold = 30
        self.stop_loss_pct = 0.02  # 2% 止损
        self.take_profit_pct = 0.04  # 4% 止盈
        self.position_size = 0.1  # 每次投入 10% 资金
        
    def calculate_rsi(self, prices, period=14):
        """计算 RSI 指标"""
        deltas = np.diff(prices)
        gains = np.where(deltas > 0, deltas, 0)
        losses = np.where(deltas < 0, -deltas, 0)
        
        avg_gain = np.mean(gains[:period])
        avg_loss = np.mean(losses[:period])
        
        for i in range(period, len(gains)):
            avg_gain = (avg_gain * (period - 1) + gains[i]) / period
            avg_loss = (avg_loss * (period - 1) + losses[i]) / period
        
        rs = avg_gain / avg_loss if avg_loss != 0 else 0
        rsi = 100 - (100 / (1 + rs))
        return rsi
    
    def on_bar(self, data):
        """每根 K 线触发的逻辑"""
        # 取得历史价格
        closes = data['close'].values
        if len(closes) < self.rsi_period + 1:
            return
        
        # 计算 RSI
        rsi = self.calculate_rsi(closes, self.rsi_period)
        current_price = closes[-1]
        
        # 趋势滤网:只在有明确趋势时交易
        sma_50 = np.mean(closes[-50:])
        sma_200 = np.mean(closes[-200:]) if len(closes) >= 200 else sma_50
        
        # 检查持仓
        position = self.get_position()
        
        # 进场逻辑
        if position == 0:
            # 超卖 + 多头趋势 → 做多
            if rsi < self.oversold and sma_50 > sma_200:
                stop_price = current_price * (1 - self.stop_loss_pct)
                target_price = current_price * (1 + self.take_profit_pct)
                
                self.buy(
                    size=self.position_size,
                    stop_loss=stop_price,
                    take_profit=target_price
                )
            
            # 超买 + 空头趋势 → 做空
            elif rsi > self.overbought and sma_50 < sma_200:
                stop_price = current_price * (1 + self.stop_loss_pct)
                target_price = current_price * (1 - self.take_profit_pct)
                
                self.sell(
                    size=self.position_size,
                    stop_loss=stop_price,
                    take_profit=target_price
                )
        
        # 出场逻辑(若未触及止损止盈,RSI 回归中线时出场)
        elif position != 0:
            if (position > 0 and rsi > 50) or (position < 0 and rsi < 50):
                self.close_position()

# 策略配置
config = {
    'strategy': RSIMeanReversion,
    'symbols': ['BTCUSDT', 'ETHUSDT'],
    'timeframe': '1h',
    'start_date': '2023-01-01',
    'end_date': '2024-01-01',
    'initial_capital': 10000,
    'commission': 0.001  # 0.1% 手续费
}

RSI 策略解析

| 策略要素 | 实现方式 | 作用 |

|------|----------|------|

| 进场条件 | RSI < 30 且多头趋势做多;RSI > 70 且空头趋势做空 | 捕捉均值回归机会 |

| 出场条件 | 固定 2% 止损 / 4% 止盈,或 RSI 回归 50 | 控制风险和锁定利润 |

| 滤网条件 | 50/200 均线趋势确认,避免逆势交易 | 提高胜率 |

| 仓位管理 | 固定 10% 资金比例,控制单笔风险 | 风险管理 |


如何优化策略

1. 参数优化(Walk-Forward Analysis)

避免过度拟合的最佳方法是使用滚动样本外测试:

# 将数据分为多个时段,每个时段独立优化与验证
for train_start, train_end, test_start, test_end in walk_forward_splits:
    best_params = optimize_on_train(train_start, train_end)
    results = test_on_out_of_sample(test_start, test_end, best_params)

2. 加入更多滤网条件

3. 动态仓位调整

# 根据波动率调整仓位
atr = calculate_atr(data, 14)
volatility_factor = base_atr / atr  # 波动率越高,仓位越小
adjusted_size = base_position_size * volatility_factor

4. 多策略组合

将多个低相关性策略组合,降低整体回撤:

portfolio = StrategyPortfolio([
    ('rsi_mean_reversion', 0.3),
    ('trend_following', 0.4),
    ('breakout', 0.3)
])

Sentinel 策略市集

写好策略只是第一步,Sentinel 策略市集帮你将策略变现:

策略市集功能

| 功能 | 说明 | 收益模式 |

|------|------|------|

| 策略上架 | 一键部署策略到云端,24/7 自动运行 | 订阅费 |

| 订阅制变现 | 设定月费/季费,让其他用户跟单你的策略 | 月费分成 |

| 绩效展示 | 自动生成专业级回测报告与实盘曲线 | 提升信任 |

| 风险评级 | 系统自动评估策略风险等级,帮助用户选择 | 自动分类 |

| 分润机制 | 跟单获利时自动分润给策略作者 | 盈利分成 |

为什么选择 Sentinel 策略市集?


常见问题

Q: 策略优化到什么程度算过度拟合?

A: 如果策略在训练集上表现完美(胜率 > 70%、回撤 < 5%),但在测试集上表现差很多,就是过度拟合。建议保持简单,参数不超过 5 个。

Q: 如何测试策略的稳健性?

A: 使用以下方法:

  1. 样本外测试(Out-of-Sample)
  2. Walk-Forward Analysis
  3. 蒙特卡洛模拟
  4. 多市场验证

Q: 一个策略应该包含多少指标?

A: 建议 2-4 个指标。过多指标会导致曲线拟合,降低策略的泛化能力。

Q: Sentinel 支持哪些编程语言?

A: 主要支持 Python。我们也提供可视化策略编辑器,无需写程序即可建立策略。

Q: 策略上架市集需要什么条件?

A: 需要满足:

Q: 如何开始学习撰写量化策略?

A: 建议路径:1) 学习 Python 基础;2) 理解技术指标原理;3) 从简单策略开始(如均线交叉);4) 使用 Sentinel 回测验证;5) 逐步优化和扩展。


结论与行动呼吁

量化交易的本质不是追求完美的预测,而是建立一套可重复、可验证、可执行的交易系统。

下一步行动清单:

  1. 立即下载 Sentinel:注册免费帐号,取得完整策略模板
  2. 复制 RSI 策略:从本文范例开始,在模拟环境测试
  3. 加入 Discord 社群:与 5,000+ 量化交易者交流优化心得
  4. 上架你的策略:当策略通过回测验证,考虑在市集分享变现

🚀 限时优惠:新用户注册即送 30 天 Pro 会员,解锁进阶回测与即时数据!

👉 免费注册 Sentinel


相关文章推荐:

本文范例仅供教育用途,投资有风险,交易需谨慎。


相關閱讀

延伸閱讀