量化交易代码拆解:从文华 WT8 策略到实战信号全解析
在 CSDN 技术社区分享量化交易代码,就像打开一个藏满市场密码的工具箱~今天带大家拆解两段文华 WT8 代码,看看如何用代码构建「趋势捕捉 + 量价共振」的交易体系,文末附完整代码块 + 实战技巧!
更多指标和策略请+v了解

🔍 第一段代码:波段交易的「信号加工厂」
📊 核心指标构建:RSI 的「平滑进化版」
先看这段灵魂代码:
VAR0:=SMA((CLOSE-LLV(LOW,19))/(HHV(HIGH,19)-LLV(LOW,19))*100,5,1);
这相当于给价格波动装了个「标准化滤镜」:把 19 天内的价格压缩到 0-100 区间,再用 5 日 SMA 平滑,比传统 RSI 更抗噪音~就像给市场数据「美颜磨皮」,过滤掉短期毛刺。
⚙️ 信号过滤系统:三重 EMA 的「趋势探测器」
波段线:EMA(VAR0,3),NODRAW;
VAR1:=EMA(波段线,2);
VAR2:=EMA(VAR1,2);
VAR3:=CROSS(VAR1,VAR2); // 金叉买入信号
这里用了「EMA 套娃」策略:先给 VAR0 做 3 日 EMA 得到「波段线」,再连续两次 2 日 EMA 生成 VAR1 和 VAR2。当短期 EMA 上穿长期 EMA 时,就像给趋势打了个✅,大大减少假信号!
🎯 可视化信号:彩色区域 + 图标标记
STICKLINE(波段线<20,波段线-2,波段线+2,5,0),COLORBLUE; // 蓝色超卖区
DRAWICON(抄底>1,抄底,4); // 出现抄底信号时画图标
这段代码给指标加了「视觉特效」:
- 波段线 < 20 时画蓝色柱子,像给市场贴了「甩卖标签」📉
- 抄底信号触发时显示 4 号图标,相当于弹出「🛒 捡漏提醒」

💻 第二段代码:量价 + MACD 的「组合拳」
🔋 成交量分析:多周期均线的「能量检测仪」
MAVOL5:=MA(VOLUME,5);
MAVOL21:=MA(VOLUME,21);
STICKLINE(CROSS(MAVOL5,MAVOL21),5,8,2,0),COLORWHITE;
这是给成交量装了「放大镜」:5 日均量上穿 21 日均量时,白色柱线亮起,就像看到市场「放量加油」的信号🚀,确认趋势启动的量能基础。
🌀 MACD 策略升级:日线周线「双重雷达」
DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);
周DIF:=EMA(CLOSE,12)-EMA(CLOSE,26); // 周线MACD
代码同时计算日线和周线 MACD,当两者同时变红时,就像「海陆空三军会师」🛫,信号可靠性暴增!配合不同颜色的柱线:
- 红色柱:动能增强
- 蓝色柱:动能减弱
一眼看清市场「脉搏强弱」。
⏩ 提前预警:KDJ 的「预判模式」
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
KDJ提前金叉:(CROSS(上涨分界,低买)),COLORFF00FF,NODRAW;
这段把传统 KDJ 改造成了「预言家」:通过计算 RSV 与超卖阈值的差值,提前发现金叉信号,比传统 KDJ 快半拍📈,就像提前拿到了市场剧本!

📝 实战技巧:代码背后的「交易心法」
📌 多指标共振原则
- 买入信号:VAR3 金叉 + VAR1>20 + 周 MACD 红柱(三重确认)
- 抄底时机:波段线 < 20 + 抄底信号 + 成交量金叉(胜率更高)
就像开车时同时看速度表、油表、导航📊,缺一不可。
⚠️ 风险控制关键点
STICKLINE(波段线>80,...COLORRED); // 红色超买区
当波段线 > 80 时,代码用红色标记,相当于弹出「🔥 高温警告」,这时候追涨就像接飞刀,一定要谨慎!
📦 完整代码块(复制即用)
第一段:波段交易与抄底信号
// 计算VAR0:对收盘价在19日内最低价的比例进行平滑处理
VAR0:=SMA((CLOSE-LLV(LOW,19))/(HHV(HIGH,19)-LLV(LOW,19))*100,5,1);
// 定义波段线:对VAR0进行3日指数平均,不绘制线
波段线:EMA(VAR0,3),NODRAW;
// 计算VAR1:对波段线进行2日指数平均
VAR1:=EMA(波段线,2);
// 计算VAR2:对VAR1进行2日指数平均
VAR2:=EMA(VAR1,2);
// 计算VAR3:当VAR1上穿VAR2时成立
VAR3:=CROSS(VAR1,VAR2);
// 计算VAR4:当VAR2上穿VAR1时成立
VAR4:=CROSS(VAR2,VAR1);
// 绘制柱线:当波段线在20-50之间时,绘制黄色柱状区域
STICKLINE(波段线>20 AND 波段线<50,波段线-2,波段线+2,5,0),COLORYELLOW;
// 定义抄底信号:当波段线上穿8或15时,显示3倍波段线值
抄底:IF(CROSS(波段线,8) OR CROSS(波段线,15),波段线*3.0,0),COLORMAGENTA,LINETHICK2;
// 定义卖信号:当VAR4成立时显示波段线值
卖:IF(VAR4,波段线,0),COLORYELLOW,NODRAW;
// 定义买信号:当VAR3成立且VAR1>20时显示波段线值
买:IF(VAR3 AND VAR1>20 ,波段线,0),COLORRED,NODRAW;
// 绘制文字:当VAR3成立且VAR1>20时,在波段线下方12单位处显示”买”
DRAWTEXT(VAR3 AND VAR1>20,波段线-12,'买'),COLORRED;
// 绘制柱线:当VAR3成立且VAR1>20时,绘制红色柱状线
STICKLINE(VAR3 AND VAR1>20,波段线,0,1,0),COLORRED;
// 绘制柱线:当波段线>80时,绘制红色柱状区域
STICKLINE(波段线>80,波段线-2,波段线+2,5,0),COLORRED;
// 绘制柱线:当波段线<20时,绘制蓝色柱状区域
STICKLINE(波段线<20,波段线-2,波段线+2,5,0),COLORBLUE;
// 绘制柱线:当波段线在50-80之间时,绘制洋红色柱状区域
STICKLINE(波段线>50 AND 波段线<80,波段线-2,波段线+2,5,0),COLORMAGENTA;
// 绘制文字:当抄底信号>1时,在信号上方5单位处显示”抄底”
DRAWTEXT(抄底>1,抄底+5,'底'),COLORYELLOW;
// 绘制图标:当抄底信号>1时,在信号位置显示4号图标
DRAWICON(抄底>1,抄底,4);
// 绘制文字:当VAR4成立时,在波段线上方18单位处显示”卖”
DRAWTEXT(VAR4,波段线+18,'卖'),COLORYELLOW;
// 绘制柱线:当VAR4成立时,绘制绿色柱状线
STICKLINE(VAR4,波段线,波段线+20,1,0),COLORGREEN;
第二段:量价 + MACD 策略
DRAWGBK(CLOSE>0,RGB(0,108,108),RGB(88,0,0),1);
VOLUME:=VOL,VOLSTICK;
MAVOL5:=MA(VOLUME,5);
MAVOL21:=MA(VOLUME,21);
MAVOL65:=MA(VOLUME,65);
STICKLINE(CROSS(MAVOL5,MAVOL21),5,8,2,0),COLORWHITE;
DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIFF,9),COLORCYAN;
MACD:=(DIFF-DEA)*2;
周DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
周DEA:=EMA(DIFF,9),COLORCYAN;
周MACD:=2*(周DIF-周DEA);
A1:BARSLAST(DIFF< REF(DIFF,1)),COLORYELLOW,LINETHICK1,NOTEXT;
A11:A1*-1,COLORYELLOW,LINETHICK1,NOTEXT;
A2:BARSLAST(DEA< REF(DEA,1)),COLORRED,LINETHICK1,NOTEXT;
A22:A2*-1,COLORRED,LINETHICK1,NOTEXT;
//DRAWBAND(A2,RGB(150,50,20),A1,RGB(150,100,150));
FILLRGN(A2>A1,A2,A1,RGB(150,50,20));
FILLRGN(A2<A1,A2,A1,RGB(150,100,150));
//DRAWBAND(A22,RGB(150,100,150),A11,RGB(150,50,20));
FILLRGN(A22>A1,A22,A11,RGB(150,100,150));
FILLRGN(A22<A1,A22,A11,RGB(150,50,20));
STICKLINE(周MACD>REF(周MACD,1) AND 周MACD>0,-5,5,18,0),COLORRED;
STICKLINE(周MACD< REF(周MACD,1) AND 周MACD>0,-5,5,18,0),COLORYELLOW;
STICKLINE(周MACD>REF(周MACD,1) AND 周MACD< 0,-5,5,18,0),COLORRED;
STICKLINE(周MACD< REF(周MACD,1) AND 周MACD< 0,-5,5,18,0),COLORBLUE;
STICKLINE(MACD>REF(MACD,1) AND MACD>0,-3,3,3.5,1),COLORRED;
STICKLINE(MACD>REF(MACD,1) AND MACD< 0,-3,3,3.5,1),COLORRED;
STICKLINE(MACD< REF(MACD,1) AND MACD>0,-3,3,3.5,1),COLORYELLOW;
STICKLINE(MACD< REF(MACD,1) AND MACD< 0,-3,3,3.5,1),COLORBLUE;
DIIFF:=(EMA(A1,5) - EMA(A1,10));
DEAA:=EMA(DIIFF,3);
K线动能:=(DIIFF-DEAA),COLORYELLOW;
STICKLINE((K线动能 > 0),-1,1,1.5,0),COLOR0000FF;
STICKLINE((K线动能 < 0),-1,1,1.5,0),COLOR00FF00;
STICKLINE(CROSS(DIFF,DEA),0,0.04,5,1),COLORYELLOW;
STICKLINE(CROSS(DIFF,DEA),0.04,0.08,5,0),COLORRED;
STICKLINE(CROSS(DIFF,DEA),0.08,0.12,5,1),COLORYELLOW;
STICKLINE(CROSS(DIFF,DEA),0.12,0.16,4,1),COLORRED;
STICKLINE(CROSS(DIFF,DEA),0.16,0.2,3,1),COLORRED;
STICKLINE(CROSS(DIFF,DEA),0.2,0.24,2,0),COLORWHITE;
STICKLINE(CROSS(DIFF,DEA) AND DIFF< 0,A11,0,2,0),COLORRED;
STICKLINE(CROSS(DIFF,DEA) AND DIFF>0,0,A1,2,0),COLORRED;
STICKLINE(CROSS(DEA,DIFF) AND DIFF< 0,A11,0,2,0),COLORBLUE;
STICKLINE(CROSS(DEA,DIFF) AND DIFF>0,0,A1,2,0),COLORBLUE;
STICKLINE(REF(CLOSE,A1+1)>CLOSE AND DIFF>REF(DIFF,A1+1) AND CROSS(DIFF,DEA),-25,25,0.00001,0),COLORYELLOW;
STICKLINE(A1>0 AND A2>0,A2,A1,0.00001,0),COLORFFFFFF;
STICKLINE(A1>0 AND A2>0,A22,A11,0.00001,0),COLORFFFFFF;
STICKLINE(A1>0 AND A2>0,0,A1,0.000001,0),COLORFF00FF;
STICKLINE(A1>0 AND A2>0,0,A11,0.000001,0),COLORGREEN;
DRAWTEXT(CROSS(DIFF,DEA) AND DIFF< 0,-5,'〇'),COLORCYAN;
DRAWTEXT(CROSS(DIFF,DEA) AND DIFF< 0,-12,'〇'),COLORCYAN;
DRAWTEXT(CROSS(DIFF,DEA) AND DIFF>0,5,'〇'),COLORGREEN;
DRAWTEXT(CROSS(DIFF,DEA) AND DIFF>0,12,'〇'),COLORGREEN;
DRAWTEXT(A2>A1 AND A22< A11 AND A1=0 AND A11=0,A2,'∈'),COLORGREEN;
DRAWTEXT(A2>A1 AND A22< A11 AND A1=0 AND A11=0,0,'∈'),COLORGREEN;
DRAWTEXT(A2>A1 AND A22< A11 AND A1=0 AND A11=0,A22,'∈'),COLORGREEN;
STICKLINE(CROSS(DIFF,DEA) AND DIFF< 0,A11,0,2,0),COLORRED;
STICKLINE(CROSS(DIFF,DEA) AND DIFF>0,0,A1,2,0),COLORRED;
STICKLINE(CROSS(DEA,DIFF) AND DIFF< 0,A11,0,2,0),COLORBLUE;
STICKLINE(CROSS(DEA,DIFF) AND DIFF>0,0,A1,2,0),COLORBLUE;
N:=5;
M1:=5;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,5,1);
D:=SMA(K,M1,5);
J:=3*K-2*D;
VARB2:=(RSV/2+22)*1;
量:=EMA(VOL,13);
AMOUNT:=AVPRICE*V;
资金:=EMA(AMOUNT,13);
过滤:=((资金 /量) / 100);
提纯:=(((CLOSE -过滤) / 过滤) * 100);
黄金:=((提纯 < (0)));
低买:=IF(黄金 AND RSV< VARB2-2,50,0);
高卖:=IF(黄金 AND RSV>VARB2,80,120);
上涨分界:=25;
KDJ提前金叉:(CROSS(上涨分界,低买)),COLORFF00FF,NODRAW;
DRAWTEXT(KDJ提前金叉,0,'⊙'),COLORFFFFFF;
🌟 结语:代码是市场的「翻译器」
量化交易的本质,是用代码把市场语言翻译成可执行的信号。这两段代码就像两台精密仪器:
- 第一段用波段 + EMA 过滤捕捉中期趋势
- 第二段用量价 + MACD+KDJ 构建多维度确认体系
在 CSDN 分享代码,不仅是技术交流,更是交易思维的碰撞~建议大家把代码导入文华 WT8,结合历史行情回测,看看这些「数字侦察兵」如何在 K 线丛林中找到交易机会吧!
💬 互动话题:你觉得哪段代码的信号最实用?或者想让我拆解哪种交易策略的代码?评论区聊聊~
更多推荐



所有评论(0)