一、前言趋势跟踪是量化交易中最经典的策略类型。通过识别和跟踪市场趋势可以在趋势行情中获得稳定收益。本文将介绍各种趋势跟踪策略的实现方法。本文将介绍趋势跟踪基本原理移动平均策略突破策略动量策略趋势确认方法二、为什么选择天勤量化TqSdkTqSdk趋势跟踪支持功能说明技术指标内置多种趋势指标实时数据支持实时行情数据回测框架支持策略回测灵活扩展支持自定义策略安装方法pipinstalltqsdk pandas numpy三、趋势跟踪基础3.1 趋势类型类型说明特点上升趋势价格持续上涨高点更高低点更高下降趋势价格持续下跌高点更低低点更低横盘整理价格震荡无明显趋势3.2 趋势识别方法方法说明移动平均均线方向判断趋势趋势线连接高低点动量指标价格变化速度ADX趋势强度指标四、移动平均策略4.1 双均线策略#!/usr/bin/env python# -*- coding: utf-8 -*- 功能双均线趋势跟踪 说明本代码仅供学习参考 fromtqsdkimportTqApi,TqAuthfromtqsdk.tafuncimportmaimportpandasaspddefdual_ma_strategy(api,symbol,fast_period5,slow_period20):双均线策略klinesapi.get_kline_serial(symbol,3600,200)api.wait_update()ma_fastma(klines[close],fast_period)ma_slowma(klines[close],slow_period)# 金叉买入死叉卖出ifma_fast.iloc[-1]ma_slow.iloc[-1]andma_fast.iloc[-2]ma_slow.iloc[-2]:return1# 买入elifma_fast.iloc[-1]ma_slow.iloc[-1]andma_fast.iloc[-2]ma_slow.iloc[-2]:return-1# 卖出return0# 持有# 使用示例apiTqApi(authTqAuth(快期账户,快期密码))signaldual_ma_strategy(api,SHFE.rb2510)print(f交易信号:{signal})api.close()4.2 多均线策略defmulti_ma_strategy(api,symbol):多均线策略klinesapi.get_kline_serial(symbol,3600,200)api.wait_update()ma5ma(klines[close],5)ma10ma(klines[close],10)ma20ma(klines[close],20)ma60ma(klines[close],60)# 均线多头排列ifma5.iloc[-1]ma10.iloc[-1]ma20.iloc[-1]ma60.iloc[-1]:return1# 买入# 均线空头排列elifma5.iloc[-1]ma10.iloc[-1]ma20.iloc[-1]ma60.iloc[-1]:return-1# 卖出return0五、突破策略5.1 通道突破defchannel_breakout_strategy(api,symbol,window20):通道突破策略klinesapi.get_kline_serial(symbol,3600,200)api.wait_update()high_maxklines[high].rolling(window).max()low_minklines[low].rolling(window).min()current_priceklines[close].iloc[-1]# 突破上轨买入ifcurrent_pricehigh_max.iloc[-2]:return1# 突破下轨卖出elifcurrent_pricelow_min.iloc[-2]:return-1return05.2 布林带突破fromtqsdk.tafuncimportbolldefbollinger_breakout_strategy(api,symbol):布林带突破策略klinesapi.get_kline_serial(symbol,3600,200)api.wait_update()boll_databoll(klines[close],20,2)upperboll_data[upper]lowerboll_data[lower]middleboll_data[middle]current_priceklines[close].iloc[-1]# 突破上轨买入ifcurrent_priceupper.iloc[-1]:return1# 突破下轨卖出elifcurrent_pricelower.iloc[-1]:return-1return0六、动量策略6.1 RSI动量策略fromtqsdk.tafuncimportrsidefrsi_momentum_strategy(api,symbol,period14,overbought70,oversold30):RSI动量策略klinesapi.get_kline_serial(symbol,3600,200)api.wait_update()rsi_valuersi(klines[close],period)current_rsirsi_value.iloc[-1]prev_rsirsi_value.iloc[-2]# RSI从超卖区向上突破ifprev_rsioversoldandcurrent_rsioversold:return1# RSI从超买区向下突破elifprev_rsioverboughtandcurrent_rsioverbought:return-1return06.2 MACD动量策略fromtqsdk.tafuncimportmacddefmacd_momentum_strategy(api,symbol):MACD动量策略klinesapi.get_kline_serial(symbol,3600,200)api.wait_update()macd_datamacd(klines[close],12,26,9)macd_linemacd_data[macd]signal_linemacd_data[signal]histmacd_data[hist]# MACD金叉ifmacd_line.iloc[-1]signal_line.iloc[-1]andmacd_line.iloc[-2]signal_line.iloc[-2]:return1# MACD死叉elifmacd_line.iloc[-1]signal_line.iloc[-1]andmacd_line.iloc[-2]signal_line.iloc[-2]:return-1return0七、趋势确认7.1 ADX趋势确认defadx_trend_confirmation(api,symbol,min_adx25):ADX趋势确认klinesapi.get_kline_serial(symbol,3600,200)api.wait_update()# 计算ADX简化版# 实际应用中需要使用完整的ADX计算# 如果ADX 25趋势明确# 结合其他指标判断趋势方向returnTrue7.2 多指标确认defmulti_indicator_confirmation(api,symbol):多指标趋势确认# 获取多个指标信号ma_signaldual_ma_strategy(api,symbol)macd_signalmacd_momentum_strategy(api,symbol)# 多个信号一致才交易ifma_signal1andmacd_signal1:return1elifma_signal-1andmacd_signal-1:return-1return0八、总结8.1 趋势跟踪要点要点说明趋势识别准确识别趋势趋势确认确认趋势有效性止损止盈设置止损止盈趋势转换及时识别趋势转换8.2 注意事项假突破- 注意假突破风险震荡市场- 震荡市场可能亏损止损设置- 必须设置止损趋势转换- 及时识别趋势转换免责声明本文仅供学习交流使用不构成任何投资建议。期货交易有风险入市需谨慎。更多资源天勤量化官网https://www.shinnytech.comGitHub开源地址https://github.com/shinnytech/tqsdk-python官方文档https://doc.shinnytech.com/tqsdk/latest