交易信号

Python 中的金融交易

Chelsea Yang

Data Science Instructor

什么是交易信号?

  • 基于预设条件触发做多或做空
  • 可由以下构建:

    • 单一技术指标
    • 多个技术指标
    • 市场数据与指标的组合
  • 算法交易中常用

Python 中的金融交易

信号示例

  • 信号:价格 > SMA(当价格上穿 SMA 时做多)

指示入场信号的图。

Python 中的金融交易

在 bt 中实现信号的步骤

  1. 获取数据并计算指标
  2. 定义基于信号的策略
    • bt.algos.SelectWhere()
    • bt.algos.WeighTarget()
  3. 创建并运行回测
  4. 查看回测结果
Python 中的金融交易

构建信号

# Get price data by the stock ticker
price_data = bt.get('aapl', start='2019-11-1', end='2020-12-1')
# Calculate SMA
sma = price_data.rolling(20).mean()

或者使用 talib 计算指标:

# Calculate SMA
import talib
sma =  talib.SMA(price_data['Close'], timeperiod=20)
Python 中的金融交易

定义基于信号的策略

# Define the signal-based strategy
bt_strategy = bt.Strategy('AboveEMA',
                          [bt.algos.SelectWhere(price_data > sma),
                           bt.algos.WeighEqually(),
                           bt.algos.Rebalance()])
  • 为简化,假设:
    • 一次只交易一个资产
    • 无滑点与佣金
      • 滑点:预期成交价与实际成交价的差异
      • 佣金:经纪商执行交易时收取的费用
Python 中的金融交易

回测基于信号的策略

# Create the backtest and run it
bt_backtest = bt.Backtest(bt_strategy, price_data)
bt_result = bt.run(bt_backtest)
Python 中的金融交易

绘制回测结果

# Plot the backtest result
bt_result.plot(title='Backtest result')

回测结果图

Python 中的金融交易

Passons à la pratique !

Python 中的金融交易

Preparing Video For Download...