QMT量化技术指标编写:MACD与KDJ公式示例
还有疑问,立即追问>

QMT量化 qmt 技术指标

QMT量化技术指标编写:MACD与KDJ公式示例

叩富问财 浏览:323 人 分享分享

共2个回答
+微信
从业认证| 从业8年

首发回答
您好,我来为您提供QMT量化交易系统中MACD与KDJ的指标编写示例,帮您掌握这两类常用技术指标的代码实现逻辑与基础应用方法。

(1)MACD指标编写示例
MACD是判断趋势强弱的经典指标,核心看DIF、DEA两条均线和红绿柱变化。在QMT里用Python编写的示例如下:
```python
def calc_macd(close, short=12, long=26, m=9):
ema_short = close.ewm(span=short, adjust=False).mean()
ema_long = close.ewm(span=long, adjust=False).mean()
dif = ema_short - ema_long
dea = dif.ewm(span=m, adjust=False).mean()
macd = 2 * (dif - dea)
return dif, dea, macd
```
简单来说,close是股票每日收盘价数据,12、26、9是行业常用的周期参数,您也可以根据交易习惯调整,输出的dif和dea是核心均线,macd对应红绿柱的数值。

(2)KDJ指标编写示例
KDJ用于判断价格超买超卖状态,核心是K、D、J三条线的走势。QMT中的Python编写示例如下:
```python
def calc_kdj(high, low, close, n=9, m1=3, m2=3):
low_min = low.rolling(window=n).min()
high_max = high.rolling(window=n).max()
rsv = (close - low_min) / (high_max - low_min) * 100
k = rsv.ewm(span=m1, adjust=False).mean()
d = k.ewm(span=m2, adjust=False).mean()
j = 3 * k - 2 * d
return k, d, j
```
这里的high、low是每日最高价和最低价,9、3、3是常用周期参数,rsv反映当前价格在近期区间的相对位置,K、D是平滑后的数值,J是辅助判断线。

需要注意的是,技术指标仅作为交易参考工具,不能保证交易盈利,实际决策需结合自身风险承受能力。

如果您想搭建更完善的量化交易策略,或是需要适配量化交易的证券账户,可点击头像添加微信进一步沟通。我司开户可申请成本佣金!可转债、ETF万0.5,期权1.7元/张,两融专项利率低至3.5%以下,国债逆回购手续费一折!支持同花顺/通达信交易软件。
发布于2026-9-8 19:19 广州
当前我在线 直接联系我
赞 关注 分享 追问
踩
举报
+微信
从业认证| 从业10年+

在 QMT 里写 MACD、KDJ,主要有三种方式:Python 原生 pandas 计算、myTT 库、QMT VBA 公式。下面按“可直接复制使用”的方式整理。


1. Python 原生写法:MACD

默认参数:12, 26, 9。

import pandas as pd

def calc_macd(close, fast=12, slow=26, signal=9):
close = pd.Series(close)
ema_fast = close.ewm(span=fast, adjust=False).mean()
ema_slow = close.ewm(span=slow, adjust=False).mean()
dif = ema_fast - ema_slow
dea = dif.ewm(span=signal, adjust=False).mean()
macd = (dif - dea) * 2
return dif, dea, macd

注意:adjust=False 是为了对齐通达信、同花顺等国内常见软件的 EMA 算法。




2. Python 原生写法:KDJ

默认参数:9, 3, 3。

def calc_kdj(high, low, close, n=9, m1=3, m2=3):
high = pd.Series(high)
low = pd.Series(low)
close = pd.Series(close)

llv = low.rolling(window=n).min()
hhv = high.rolling(window=n).max()

rsv = (close - llv) / (hhv - llv) * 100
rsv = rsv.fillna(50)

k = rsv.ewm(alpha=1 / m1, adjust=False).mean()
d = k.ewm(alpha=1 / m2, adjust=False).mean()
j = 3 * k - 2 * d

return k, d, j

这里用 ewm(alpha=1/m) 近似国内常见软件里的 SMA 平滑方式。




3. QMT 策略框架中调用

def handlebar(ContextInfo):
df = ContextInfo.get_market_data_ex(
['high', 'low', 'close'],
ContextInfo.stock_code,
period='1d',
count=120,
dividend_type='front'
)

close = df['close']
high = df['high']
low = df['low']

dif, dea, macd = calc_macd(close)
k, d, j = calc_kdj(high, low, close)

# 示例:MACD 金叉
macd_golden = (dif.iloc[-1] > dea.iloc[-1]) and (dif.iloc[-2] <= dea.iloc[-2])

# 示例:KDJ 金叉
kdj_golden = (k.iloc[-1] > d.iloc[-1]) and (k.iloc[-2] <= d.iloc[-2])


4. 使用 myTT 简化写法

如果 QMT 环境里已有 myTT,可以直接这样写:

import myTT as mt

DIF, DEA, MACD = mt.MACD(CLOSE, 12, 26, 9)
K, D, J = mt.KDJ(CLOSE, HIGH, LOW, 9, 3, 3)

信号可以写成:

buy_signal = mt.CROSS(DIF, DEA) & mt.CROSS(K, D)
sell_signal = mt.CROSS(DEA, DIF) & mt.CROSS(D, K)





5. QMT VBA 公式写法

在 QMT 公式管理器里,MACD 可写成:

s:=12;
p:=26;
m:=9;

DIF:EMA(C,s)-EMA(C,p);
DEA:EMA(DIF,m);
MACD:DIF-DEA;

KDJ 可写成:

input:n(9,1,100,10),p1(3,2,40,4),p2(3,2,40,4);

RSV:(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,P1,1);
D:SMA(K,P2,1);
J:3*K-2*D;





常用参数对照



指标
默认参数
常见含义



MACD
12, 26, 9
快线EMA、慢线EMA、DEA平滑周期


KDJ
9, 3, 3
RSV周期、K平滑、D平滑


如果你是在 QMT 策略回测里用,建议用 count 至少取 100 根以上 K 线,否则 EMA 初期数据容易不稳。



需要我帮你把MACD和KDJ组合成一个完整的买入卖出信号逻辑,直接套进QMT策略框架里吗?

发布于2026-9-30 14:41 增城
当前我在线 直接联系我
赞 关注 分享 追问
踩
举报
其他类似问题
技术指标中的MACD、KDJ、RSI等,哪个指标的准确率更高呢?
在技术指标MACD、KDJ、RSI中,很难明确判断哪个指标的准确率更高,因为它们各有特点且受市场多种因素影响。以下是对这三个指标的简要分析:1.MACD(MovingAverageCo...
小鹿经理 11191
通达信软件的 “自编指标” 功能如何编写简单的技术指标公式?​
在通达信软件中编写简单技术指标公式,可按以下步骤进行:​打开公式编辑器:在通达信软件界面中,点击“功能”菜单,在下拉菜单中选择“公式系统”,然后点击“公式管理器”,打开公式管理器窗口。...
资深杨经理 11409
同花顺条件选股公式:常用技术指标编写示例
您好,我这就给您分享几个同花顺常用技术指标的条件选股公式编写示例,涵盖均线、MACD、KDJ这些基础指标,新手也能跟着步骤轻松上手。我把常用的几个公式拆解给您,步骤清晰好操作:(1)均...
张经理 499
技术指标中的MACD、KDJ、RSI等,它们之间有什么区别和联系呢?
MACD指标主要用于判断股票价格的长期趋势,当快线DIF上穿慢线DEA形成金叉时,为买入信号;当快线DIF下穿慢线DEA形成死叉时,为卖出信号。KDJ指标主要用于判断股票价格的短期波动...
大道至简 4711
常用的技术指标如 MACD、KDJ 等在创业板股票分析中有什么特点?
创业板开户现可通过各大券商的手机应用程序自助完成,一般佣金默认为万三。创业板开户要求具备两年交易经验和连续20个交易日日均资产10万元。如今打算在手机APP创业板开户,只要选择正规的券...
黄经理 1720
“MACD”、“KDJ”、“RSI”这些常见技术指标是什么?如何简单运用?
你好,MACD柱状图(红绿柱)表示DIF与DEA的差值,反映多空力量变化,DIF和DEA在零轴上方为多头市场,下方为空头市场。KDJ反映超买超卖情况,K线上穿D线为买入信号,下穿为卖出...
量化张经理 3861
同城推荐
  • 咨询

    从业认证| 从业10年+

  • 咨询

    从业认证| 从业2年

  • 咨询

    从业认证| 从业10年+

相关文章
回到顶部