策略
均线交叉和MACD过滤的海因阿修蜡烛策略V3Heiken-Ashi-Moving-Average-Crossover-Strategy-with-MACD-Filter-V3
ChaoZhang · PineScript · 趋势跟踪 · 2023-10-25 11:26:17
概述
本策略通过计算海因阿修蜡烛的移动均线交叉来产生交易信号,并结合MACD作为过滤条件,实现了一个较为稳定的交易系统。
策略原理
- 计算海因阿修蜡烛的开盘价和收盘价
- 计算快速移动均线(EMA)和慢速移动均线(SMA)
- 当快速移动均线上穿慢速移动均线时,产生买入信号
- 当快速移动均线下穿慢速移动均线时,产生卖出信号
- 如果启用MACD过滤,只有当MACD柱上穿0轴时才产生买入信号,MACD柱下穿0轴时才产生卖出信号
优势
展开全文(699 字)
- 海因阿修蜡烛能有效滤除市场噪音,使得移动均线交叉信号更可靠
- 结合不同周期的均线,可以采用多重确认,避免假突破
- MACD过滤有助于进一步避免假信号,提高信号质量
- 采用海因阿修蜡烛计算均线,可以降低 Scientistå1⁄4 è ́±è ̄ã2022å1 ́11æ10æ¥10:33
本V3版本的海因阿修蜡烛策略,通过计算海因阿修蜡烛的移动均线交叉来产生交易信号,并结合MACD作为过滤条件,相比V1和V2版本有了很大的改进。 总体来说,该策略具有以下优势:
- 海因阿修蜡烛能有效滤除市场噪音,使得移动均线交叉信号更清晰可靠。
- 采用快慢均线组合,可以避免被单一均线的假突破欺骗。
- 加入MACD过滤机制,可以进一步避免假信号,提高入场的准确率。
- 采用不同周期的均线,实现多时间框架的确认,这也提高了信号的可靠性。
- 使用海因阿修蜡烛计算均线,可以减少由普通K线带来的回撤。
- 该策略参数设置合理,操作频率适中,无需高频交易也可以获得稳定收益。
但是该策略也存在一些风险需要注意:
- 在震荡行情中,可能会出现多次调整仓位的反复交易。
- MACD作为过滤指标也可能出现失效的情况,导致假信号的产生。
- 均线系统对参数设置比较敏感,需要谨慎测试最佳参数组合。
- 长期持有仓位时,需要关注突发事件带来的重大行情变化。
- 仍需人工判断大级别趋势,避免逆势交易带来的损失。
总的来说,该策略作为一个较成熟的均线策略,在参数调整合理的前提下,可以获得稳定的投资收益。但交易者仍需关注风险,适时调整仓位,并结合趋势判断来运用该策略。
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| v_input_1 | 60 | Heikin Ashi Candle Time Frame |
| v_input_2 | true | Heikin Ashi Candle Time Frame Shift |
| v_input_3 | 180 | Heikin Ashi EMA Time Frame |
| v_input_4 | false | Heikin Ashi EMA Time Frame Shift |
| v_input_5 | true | Heikin Ashi EMA Period |
| v_input_6 | true | Heikin Ashi EMA Shift |
| v_input_7 | 30 | Slow EMA Period |
| v_input_8 | true | Slow EMA Shift |
| v_input_9 | false | With MACD filter |
| v_input_10 | 15 | MACD Time Frame |
| v_input_11 | true | MACD Shift |
源码(51 行)
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Heiken-Ashi Strategy V3 by wziel
// strategy("Heiken-Ashi Strategy V3",shorttitle="WZIV3",overlay=true,default_qty_value=10000,initial_capital=10000,currency=currency.USD)
res = input(title="Heikin Ashi Candle Time Frame", defval="60")
hshift = input(1,title="Heikin Ashi Candle Time Frame Shift")
res1 = input(title="Heikin Ashi EMA Time Frame", defval="180")
mhshift = input(0,title="Heikin Ashi EMA Time Frame Shift")
fama = input(1,"Heikin Ashi EMA Period")
test = input(1,"Heikin Ashi EMA Shift")
sloma = input(30,"Slow EMA Period")
slomas = input(1,"Slow EMA Shift")
macdf = input(false,title="With MACD filter")
res2 = input(title="MACD Time Frame", defval="15")
macds = input(1,title="MACD Shift")
//Heikin Ashi Open/Close Price
ha_t = heikinashi(syminfo.tickerid)
ha_open = security(ha_t, res, open[hshift])
ha_close = security(ha_t, res, close[hshift])
mha_close = security(ha_t, res1, close[mhshift])
//macd
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
macdl = security(ha_t,res2,macdLine[macds])
macdsl= security(ha_t,res2,signalLine[macds])
//Moving Average
fma = ema(mha_close[test],fama)
sma = ema(ha_close[slomas],sloma)
plot(fma,title="MA",color=lime,linewidth=2,style=line)
plot(sma,title="SMA",color=red,linewidth=2,style=line)
//Strategy
golong = crossover(fma,sma) and (macdl > macdsl or macdf == false )
goshort = crossunder(fma,sma) and (macdl < macdsl or macdf == false )
strategy.entry("Buy",strategy.long,when = golong)
strategy.entry("Sell",strategy.short,when = goshort)