欢迎光临
我们一直在努力

通达信 TN6 指标转 Python+QMT/PTrade 量化交易实战(KDJ 金叉死叉)

前言

在量化交易中,很多交易者习惯使用通达信的TN6 指标进行技术分析,但手动交易效率低、执行力差。本文以最常用的KDJ 金叉死叉策略为例,手把手教你把通达信 TN6 公式翻译成 Python 代码,并部署到迅投 QMT、恒生 PTrade等量化平台,实现全自动交易。

一、什么是 TN6 指标?

TN6 是通达信专用的公式编程语言,本文以最经典的KDJ 指标为演示案例,核心逻辑:

  • 金叉:K 线上穿 D 线 → 买入信号
  • 死叉:K 线下穿 D 线 → 卖出信号

通达信原生 TN6 代码(KDJ):

N:=9;//KDJ周期
M1:=3;//K的平滑参数
M2:=3;//D的平滑参数
RSV:=(CLOSE – LLV(LOW, N))/(HHV(HIGH,N)- LLV(LOW, N))*100;
K:=SMA(RSV, M1,1);
D:=SMA(K,M2,1);
J:=3*K-2*D;
金叉:=CROSS(K,D);//K上穿D,金叉信号
死叉:=CROSS(D,K);//K下穿D,死叉信号
买入信号:IF(金叉,1,0);//金叉时标记为1
卖出信号:IF(死叉,1,0);//死叉时标记为1


二、TN6 转 Python 核心逻辑

量化平台(QMT/PTrade)支持 Python,我们用pandas复现 KDJ 计算逻辑。

1. 计算 KDJ 指标函数

import pandas as pd
import numpy as np

def calculate_kdj(data, n=9, m1=3, m2=3):
"""
计算KDJ指标
:param data: 包含high, low, close的DataFrame
:param n: KDJ周期
:param m1: K平滑参数
:param m2: D平滑参数
:return: 带K/D/J列的DataFrame
"""
# 计算RSV
low_list = data['low'].rolling(window=n).min()
high_list = data['high'].rolling(window=n).max()
rsv = (data['close'] – low_list) / (high_list – low_list) * 100

# 计算K/D/J
data['K'] = rsv.rolling(window=m1).mean() # SMA简化实现
data['D'] = data['K'].rolling(window=m2).mean()
data['J'] = 3 * data['K'] – 2 * data['D']

return data

2. 生成金叉死叉交易信号

def kdj_cross_strategy(data):
"""
KDJ金叉死叉策略
signal=1 买入;signal=-1 卖出;0 无信号
"""
data['signal'] = 0
# 金叉:K上穿D
data.loc[(data['K'] > data['D']) & (data['K'].shift(1) <= data['D'].shift(1)), 'signal'] = 1
# 死叉:K下穿D
data.loc[(data['K'] < data['D']) & (data['K'].shift(1) >= data['D'].shift(1)), 'signal'] = -1
return data

3. 策略调用与结果查看

# 模拟行情数据(替换为真实行情)
data = pd.DataFrame({
'date': pd.date_range('20250101', periods=50),
'high': np.random.uniform(10, 20, 50),
'low': np.random.uniform(5, 15, 50),
'close': np.random.uniform(8, 18, 50)
})

# 计算KDJ
data = calculate_kdj(data)
# 生成交易信号
data = kdj_cross_strategy(data)
# 查看最后10行结果
print(data[['date', 'close', 'K', 'D', 'J', 'signal']].tail(10))


三、部署到 QMT/PTrade 量化平台步骤

  • 获取实时行情通过平台 API 获取股票 / 期货的high、low、close数据。
  • 计算 KDJ 指标调用calculate_kdj函数计算 K/D/J 值。
  • 生成交易信号调用kdj_cross_strategy得到买入 / 卖出信号。
  • 自动执行交易信号 = 1 → 买入;信号 =-1 → 卖出,调用平台交易 API 下单。

  • 四、总结

    本文完成通达信 TN6 → Python → QMT/PTrade全流程转化,基于 KDJ 金叉死叉实现自动化交易。

    • 优点:逻辑简单、易上手、适配主流量化平台
    • 优化方向:可加入止盈止损、仓位管理、多周期共振提升策略效果

    风险提示

    • 本文所有代码、策略、案例仅用于量化编程学习与技术交流,不构成任何投资建议、交易指导或开户推荐。
    • 股市、期货等投资品种风险极高,任何人依据本文代码进行实盘交易所产生的盈亏与本文作者无关,作者不承担任何法律责任。
    • 量化策略需经过充分回测、模拟盘验证、小资金实盘测试后方可使用,请勿直接满仓、重仓运行。
    • 本文不保证代码无 BUG、不保证策略盈利,投资者应自主判断、自担风险。
    • 市场有风险,投资需谨慎。

    文末说明

    本文代码可直接复制到 QMT/PTrade 中运行,适合量化新手入门。如需实盘完整策略、风控模块、多品种适配版,可在评论区留言。

    赞(0)
    未经允许不得转载:171主机测评 » 通达信 TN6 指标转 Python+QMT/PTrade 量化交易实战(KDJ 金叉死叉)
    分享到: 更多 (0)

    评论 抢沙发

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