MACD+波动率过滤+追踪止损 期货择时汇总

MACD 是常用的技术指标。广泛应用于股票期货等投资品类中。本文抱着实验的心态,通过 MACD 被使用最普遍的的方法对该指标在中国商品期货市场的择时效果进行验证。

我们还加入了波动率过滤,和追踪止损模块,希望以此验证指标的有效性,同时在验证过程中对传统方法进行调整,以期获得更好的绩效。

一、MACD 简介

MACD分为三根线,分别是快速线 DIF,慢速线 DEA,信号线 MACD

计算方法为:

DIF = EMA(〖Price〗_i) - EMA(〖Price〗_j)

DEA = EMA(〖DIF〗_n)

MACD = 2 * (DIF - DEA)

Price:资产价格

i:短周期参数

j:长周期参数

n:DEA 周期参数

EMA:指数平均

二、策略使用方法

使用的是最普遍,也是最简单的 MACD 方法。即金叉买入,死叉卖出。

对于金叉和死叉的判定,也是众说纷纭。

1、最传统保守的论点是:金叉,快速线 DIF,慢速线DEA同时大于 0,且DIF上穿 DEA,MACD 由负数变为正数;死叉:快速线 DIF,慢速线DEA同时小于 0,且DIF 下穿 DEA,MACD 由正数变为负数。

2、而另一种观点认为:并不需要限制DIF和DEA的符号,只需要 DIF 上下穿 DEA 就可以判定金叉和死叉。

3、还有一种观点:是我们最终放出来的这个代码,就是 DIF 和 DEA 都大于 0 时候做多,反之都小于 0

``` {系统参数定义} PE_RATIO := IF(FINANCE(33) > 0, FINANCE(30)/FINANCE(4), 1000); // 动态市盈率 PB_RATIO := IF(FINANCE(5) > 0, FINANCE(30)/FINANCE(5), 1000); // 市净率 {优化参数系统} VOLAT := STD(CLOSE,20)/MA(CLOSE,20); // 20日波动率 VAR_PERIOD := IF(VOLAT < 0.06, 60, IF(VOLAT < 0.12, 34, 18)); // 自适应周期参数 MACD_FAST := MAX(8, CEIL(VAR_PERIOD*0.382)); // 动态快线周期 MACD_SLOW := MIN(55, FLOOR(VAR_PERIOD*1.618)); // 动态慢线周期 MACD_SGNL := 9; // 信号线固定周期 {核心指标模块} DIF := EMA(CLOSE, MACD_FAST) - EMA(CLOSE, MACD_SLOW); // MACD差值 DEA := EMA(DIF, MACD_SGNL); // 信号线 MACD := 2*(DIF - DEA); // 柱状图增强 MA5 := MA(CLOSE,5); // 5日均线 MA10 := MA(CLOSE,10); // 10日均线 MA20 := EMA(CLOSE,20); // 20日指数均线 MA60 := EMA(CLOSE,60); // 60日指数均线 {动量验证系统} MOM := EMA(CLOSE,5)/REF(EMA(CLOSE,21),5) - 1; // 5日动量指标 WEEK_CHG := (CLOSE - REF(CLOSE,5))/REF(CLOSE,5)*100; // 周涨幅 MOM_CFM := EMA(CLOSE,5) > EMA(EMA(CLOSE,5),13) AND CLOSE > HHV(CLOSE*0.7,40); // 动量确认 {因子复合条件} COND_TREND := MA5 > MA10 AND MA10 > MA20 AND CLOSE > MA60; // 头排列 COND_BREAK := CROSS(DIF,DEA) AND MACD > REF(MACD,1) AND DIF > 0; // MACD金叉 COND_FLOW := VOL > EMA(VOL,20)*1.8 AND SUM(IF(CLOSE>REF(CLOSE,1),VOL*C,-VOL*C),5)/CAPITAL*100 > 3; // 资金流 COND_VALUE := PE_RATIO < 30 AND PB_RATIO < 4.5; // 价值条件 COND_VOL := ((UPPER - LOWER)/MID*100) BETWEEN 10 AND 18; // 波动率过滤 {信号合成引擎} ROC21 := (CLOSE - REF(CLOSE,21))/REF(CLOSE,21)*100; // 21日收益率 RANK_ROC := (ROC21 - LLV(ROC21,120))/(HHV(ROC21,120)-LLV(ROC21,120)+1E-4)*100; // 收益百分位 FINALSIGNAL:FILTER( COND_TREND AND COND_BREAK AND COND_FLOW AND (COND_VALUE + COND_VOL + (FINANCE(42)/FINANCE(1)<1.2) >= 2) AND MOM_CFM AND RANK_ROC > 80 AND CROSS(MA5, MA10) AND VOL > REF(VOL,1)*1.5 AND CLOSE > OPEN AND (1 + (SLOPE(CLOSE/INDEXC,60)*STD(CLOSE,60)/STD(INDEXC,60) - 1)*0.3) < 1.2 AND FINANCE(30) > 2E10, // 市值过滤 5); // 信号过滤周期 {风控模块} STOPLOSS := MAX(MA10*0.93, LLV(LOW,8)*0.95); // 动态止损 TAKEPROFIT := IF(VOLAT < 0.1, MA20*1.25, MA20*1.35) * (1 + (SLOPE(CLOSE,60)/100)); // 趋势止盈```你的身份是高级编程技术专家,精通各类编程语言,能对编程过程中的各类问题进行分析和解答。我的问题是【我正在编辑【通达信量化择时选股】代码,请帮我检查并改正错误点补全正确代码,原有选股逻辑完整保留,所有参数计算关系和信号触发条件优化计算,生成修正后完整代码。
03-23
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值