
本策略通过计算海因阿修蜡烛的移动均线交叉来产生交易信号,并结合MACD作为过滤条件,实现了一个较为稳定的交易系统。
本V3版本的海因阿修蜡烛策略,通过计算海因阿修蜡烛的移动均线交叉来产生交易信号,并结合MACD作为过滤条件,相比V1和V2版本有了很大的改进。
总体来说,该策略具有以下优势:
海因阿修蜡烛能有效滤除市场噪音,使得移动均线交叉信号更清晰可靠。
采用快慢均线组合,可以避免被单一均线的假突破欺骗。
加入MACD过滤机制,可以进一步避免假信号,提高入场的准确率。
采用不同周期的均线,实现多时间框架的确认,这也提高了信号的可靠性。
使用海因阿修蜡烛计算均线,可以减少由普通K线带来的回撤。
该策略参数设置合理,操作频率适中,无需高频交易也可以获得稳定收益。
但是该策略也存在一些风险需要注意:
在震荡行情中,可能会出现多次调整仓位的反复交易。
MACD作为过滤指标也可能出现失效的情况,导致假信号的产生。
均线系统对参数设置比较敏感,需要谨慎测试最佳参数组合。
长期持有仓位时,需要关注突发事件带来的重大行情变化。
仍需人工判断大级别趋势,避免逆势交易带来的损失。
总的来说,该策略作为一个较成熟的均线策略,在参数调整合理的前提下,可以获得稳定的投资收益。但交易者仍需关注风险,适时调整仓位,并结合趋势判断来运用该策略。
/*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)