平滑移动平均线与均线交易策略

Author: ChaoZhang, Date: 2023-10-17 16:11:19
Tags:

平滑移动平均线与均线交易策略

这里是一篇关于EMA和Heikin Ashi交易策略的文章:

概述

该策略运用平滑移动平均线和均线进行趋势判断,根据价格突破不同周期的移动平均线来产生交易信号。

策略原理

该策略使用15周期和50周期的指数移动平均线EMA。计算当前Heikin Ashi收盘价,并与EMA对比。如果收盘价高于两条EMA,且15EMA高于50EMA,产生买入信号;如果收闭价低于两条EMA,且15EMA低于50EMA,产生卖出信号。

当价格重新突破15EMA时,进行反向交易。

优势分析

  1. 使用EMA能有效过滤市场噪音,判断趋势方向。

  2. 结合不同周期EMA,可以同时捕捉短期和中期趋势。

  3. Heikin Ashi能过滤假突破,验证交易信号。

  4. 策略简单清晰,容易实施。

风险分析

  1. EMA有滞后性,可能错过趋势转折点。

  2. 固定参数不适应市场变化,需要动态优化。

  3. 交易频繁,交易成本可能较高。

  4. 突破交易易受假突破影响,应结合其他指标验证。

可以通过参数优化,整合其他指标等方式来降低风险。

优化方向

  1. 动态优化EMA参数,根据市场变化调整周期。

  2. 优化突破过滤,避免假突破。例如增加交易量验证。

  3. 结合MACD等其他指标,验证交易信号。

  4. 根据趋势采用滞后EMA,根据震荡采用先行EMA。

总结

该策略利用EMA判断趋势方向,以Heikin Ashi验证信号,简单直接。但EMA滞后性和假突破风险需要注意。可以通过参数优化、指标整合等方式进行改进,在降低风险的同时提高策略效果。


/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-12 02:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("EMA & Heikin Ashi", shorttitle="EMA & Heikin Ashi", overlay=true, initial_capital=1)


// squaa's Strategy
//
// Idea by Thw on March 10, 2018.
//
//
// The strategy should be used with high leverages,
// never stop running,
// and is always long or short.

// Input
price = input(close)
MA1_Length = input(15)
MA2_Length = input(50)


haclose = request.security(heikinashi(syminfo.tickerid), timeframe.period, close)

// === FUNCTION EXAMPLE ===
start     = timestamp(2018, 01, 01, 20, 00)  // backtest start window
window()  => time >= start ? true : false // create function "within window of time"


// Calculation
MA1 = ema(price, MA1_Length)
MA2 = ema(price, MA2_Length)

// Strategy
long = haclose > MA1 and haclose > MA2 and MA1 > MA2 and window()
short = haclose < MA1 and haclose < MA2 and MA1 < MA2 and window()

// MA trend output color
MA2_color = long?lime:short?red:blue

strategy.entry("Long", strategy.long, when=long)
strategy.entry("Short", strategy.short, when=short)
strategy.close("Long", when=haclose < MA1)
strategy.close("Short", when=haclose > MA1)


// MA output
EMA1 = plot(MA1, title="EMA 1", style=linebr, linewidth=1, color=MA2_color)
EMA2 = plot(MA2, title="EMA 2", style=linebr, linewidth=3, color=MA2_color)
fill(EMA1, EMA2, color=silver, transp=50)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

更多内容