欢迎光临
我们一直在努力

【期货量化策略】期货量化交易策略趋势跟踪(Python量化)

一、前言

趋势跟踪是量化交易中最经典的策略类型。通过识别和跟踪市场趋势,可以在趋势行情中获得稳定收益。本文将介绍各种趋势跟踪策略的实现方法。

本文将介绍:

  • 趋势跟踪基本原理
  • 移动平均策略
  • 突破策略
  • 动量策略
  • 趋势确认方法

二、为什么选择天勤量化(TqSdk)

TqSdk趋势跟踪支持:

功能说明
技术指标 内置多种趋势指标
实时数据 支持实时行情数据
回测框架 支持策略回测
灵活扩展 支持自定义策略

安装方法:

pip install tqsdk pandas numpy

三、趋势跟踪基础

3.1 趋势类型

类型说明特点
上升趋势 价格持续上涨 高点更高,低点更高
下降趋势 价格持续下跌 高点更低,低点更低
横盘整理 价格震荡 无明显趋势

3.2 趋势识别方法

方法说明
移动平均 均线方向判断趋势
趋势线 连接高低点
动量指标 价格变化速度
ADX 趋势强度指标

四、移动平均策略

4.1 双均线策略

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
功能:双均线趋势跟踪
说明:本代码仅供学习参考
"""

from tqsdk import TqApi, TqAuth
from tqsdk.tafunc import ma
import pandas as pd

def dual_ma_strategy(api, symbol, fast_period=5, slow_period=20):
"""双均线策略"""
klines = api.get_kline_serial(symbol, 3600, 200)
api.wait_update()

ma_fast = ma(klines['close'], fast_period)
ma_slow = ma(klines['close'], slow_period)

# 金叉买入,死叉卖出
if ma_fast.iloc[1] > ma_slow.iloc[1] and ma_fast.iloc[2] <= ma_slow.iloc[2]:
return 1 # 买入
elif ma_fast.iloc[1] < ma_slow.iloc[1] and ma_fast.iloc[2] >= ma_slow.iloc[2]:
return 1 # 卖出

return 0 # 持有

# 使用示例
api = TqApi(auth=TqAuth("快期账户", "快期密码"))
signal = dual_ma_strategy(api, "SHFE.rb2510")
print(f"交易信号: {signal}")

api.close()

4.2 多均线策略

def multi_ma_strategy(api, symbol):
"""多均线策略"""
klines = api.get_kline_serial(symbol, 3600, 200)
api.wait_update()

ma5 = ma(klines['close'], 5)
ma10 = ma(klines['close'], 10)
ma20 = ma(klines['close'], 20)
ma60 = ma(klines['close'], 60)

# 均线多头排列
if ma5.iloc[1] > ma10.iloc[1] > ma20.iloc[1] > ma60.iloc[1]:
return 1 # 买入

# 均线空头排列
elif ma5.iloc[1] < ma10.iloc[1] < ma20.iloc[1] < ma60.iloc[1]:
return 1 # 卖出

return 0

五、突破策略

5.1 通道突破

def channel_breakout_strategy(api, symbol, window=20):
"""通道突破策略"""
klines = api.get_kline_serial(symbol, 3600, 200)
api.wait_update()

high_max = klines['high'].rolling(window).max()
low_min = klines['low'].rolling(window).min()

current_price = klines['close'].iloc[1]

# 突破上轨买入
if current_price > high_max.iloc[2]:
return 1

# 突破下轨卖出
elif current_price < low_min.iloc[2]:
return 1

return 0

5.2 布林带突破

from tqsdk.tafunc import boll

def bollinger_breakout_strategy(api, symbol):
"""布林带突破策略"""
klines = api.get_kline_serial(symbol, 3600, 200)
api.wait_update()

boll_data = boll(klines['close'], 20, 2)
upper = boll_data['upper']
lower = boll_data['lower']
middle = boll_data['middle']

current_price = klines['close'].iloc[1]

# 突破上轨买入
if current_price > upper.iloc[1]:
return 1

# 突破下轨卖出
elif current_price < lower.iloc[1]:
return 1

return 0

六、动量策略

6.1 RSI动量策略

from tqsdk.tafunc import rsi

def rsi_momentum_strategy(api, symbol, period=14, overbought=70, oversold=30):
"""RSI动量策略"""
klines = api.get_kline_serial(symbol, 3600, 200)
api.wait_update()

rsi_value = rsi(klines['close'], period)
current_rsi = rsi_value.iloc[1]
prev_rsi = rsi_value.iloc[2]

# RSI从超卖区向上突破
if prev_rsi < oversold and current_rsi > oversold:
return 1

# RSI从超买区向下突破
elif prev_rsi > overbought and current_rsi < overbought:
return 1

return 0

6.2 MACD动量策略

from tqsdk.tafunc import macd

def macd_momentum_strategy(api, symbol):
"""MACD动量策略"""
klines = api.get_kline_serial(symbol, 3600, 200)
api.wait_update()

macd_data = macd(klines['close'], 12, 26, 9)
macd_line = macd_data['macd']
signal_line = macd_data['signal']
hist = macd_data['hist']

# MACD金叉
if macd_line.iloc[1] > signal_line.iloc[1] and macd_line.iloc[2] <= signal_line.iloc[2]:
return 1

# MACD死叉
elif macd_line.iloc[1] < signal_line.iloc[1] and macd_line.iloc[2] >= signal_line.iloc[2]:
return 1

return 0

七、趋势确认

7.1 ADX趋势确认

def adx_trend_confirmation(api, symbol, min_adx=25):
"""ADX趋势确认"""
klines = api.get_kline_serial(symbol, 3600, 200)
api.wait_update()

# 计算ADX(简化版)
# 实际应用中需要使用完整的ADX计算

# 如果ADX > 25,趋势明确
# 结合其他指标判断趋势方向

return True

7.2 多指标确认

def multi_indicator_confirmation(api, symbol):
"""多指标趋势确认"""
# 获取多个指标信号
ma_signal = dual_ma_strategy(api, symbol)
macd_signal = macd_momentum_strategy(api, symbol)

# 多个信号一致才交易
if ma_signal == 1 and macd_signal == 1:
return 1
elif ma_signal == 1 and macd_signal == 1:
return 1

return 0

八、总结

8.1 趋势跟踪要点

要点说明
趋势识别 准确识别趋势
趋势确认 确认趋势有效性
止损止盈 设置止损止盈
趋势转换 及时识别趋势转换

8.2 注意事项

  • 假突破 – 注意假突破风险
  • 震荡市场 – 震荡市场可能亏损
  • 止损设置 – 必须设置止损
  • 趋势转换 – 及时识别趋势转换

  • 免责声明:本文仅供学习交流使用,不构成任何投资建议。期货交易有风险,入市需谨慎。

    更多资源:

    • 天勤量化官网:https://www.shinnytech.com
    • GitHub开源地址:https://github.com/shinnytech/tqsdk-python
    • 官方文档:https://doc.shinnytech.com/tqsdk/latest
    赞(0)
    未经允许不得转载:171主机测评 » 【期货量化策略】期货量化交易策略趋势跟踪(Python量化)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址