该策略基于三条不同周期的EMA均线进行交易信号判断,采用8周期、50周期和200周期三条EMA均线进行金叉、死叉判断,以发挥不同EMA均线的优势,达到更好的交易效果。
该策略通过计算8周期、50周期和200周期三条EMA均线,并设置布林带通道进行突破判断。具体逻辑是:
通过快速周期EMA的运算判断底部,中周期EMA确保趋势,慢周期EMA过滤震荡,三者相辅相成,判断格局转换的同时兼顾交易频率。
三EMA均线合理判断趋势,充分发挥不同周期EMA的优势。8周期EMA判断短期底部反弹机会,50周期EMA判断中期趋势方向,200周期EMA过滤震荡确保大趋势。
可选择仅在价格高于200周期EMA时做多,避免震荡行情产生错误信号。
可选止盈EMA均线设定合理止盈位置。
可视化设置如皮带颜色、EMA线显示等,提高策略的可调整性。
包含金叉死叉判断逻辑,简洁易懂。
EMA均线具有滞后性,可能错过仓位建立的最佳时机。可以适当缩短EMA周期、或结合其他指标如MACD判断时机。
震荡行情中EMA均线可能产生错误信号。可以采用长周期EMA滤除震荡,或增加其他过滤条件。
止盈位置固定,无法根据市场波动调整。可以改为动态止盈,根据ATR等指标确定止盈位置。
未考虑止损 exiting criteria, 存在亏损风险。可以设置移动止损或固定点值止损来控制风险。
EMA周期可进行优化,找到最佳参数组合。
可以加入MACD等指标判断做多做空时机。
增加动态止盈条件,根据市场波动程度调整止盈位置。
加入止损逻辑,设置移动止损或固定点值止损。
优化入场条件,如增加量能指标等过滤器。
该策略基于EMA均线的稳定过滤判断趋势方向,结合不同周期EMA的优势实现交易机会捕捉。优化止盈止损策略、加入更多指标判断可以提高策略胜率。整体来说该策略较为简单实用,适用于EMA均线判断的趋势跟踪交易。
/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-20 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Long only EMA CROSS 8/50/200 Backtest", shorttitle="Golden Cross Tri EMA", overlay=true)
// EMA 8/50/200 Cross TEST
// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Show 8 EMA")
switch3=input(true, title="Show 50 EMA")
switch4=input(true, title="Show 200 EMA")
switch5=input(false, title="Show profit level EMA")
bool_Long_EMA200=input(false, title="Long only above EMA200")
movingaverage_8 = ema(close, input(8))
movingaverage_50 = ema(close, input(50))
movingaverage_market_signal = ema(close, input(200))
movingaverage_profitlvl = ema(close, input(50))
// Calculation
bullish_cross = if bool_Long_EMA200 == true
crossover(movingaverage_8, movingaverage_50) and movingaverage_8 > movingaverage_market_signal
else
bullish_cross = crossover(movingaverage_8, movingaverage_50)
bearish_cross = crossunder(close, movingaverage_profitlvl)
// Strategy
if bullish_cross
strategy.entry("long", strategy.long)
strategy.close("long", when = bearish_cross )
// Colors
bartrendcolor = close > movingaverage_8 and close > movingaverage_50 and change(movingaverage_50) > 0 ? green : close < movingaverage_8 and close < movingaverage_50 and change(movingaverage_50) < 0 ? red : blue
barcolor(switch1?bartrendcolor:na)
// Output
plot(switch2?movingaverage_8:na,color = change(movingaverage_8) > 0 ? green : red,linewidth=2, title="EMA8")
plot(switch3?movingaverage_50:na,color = change(movingaverage_50) > 0 ? green : red,linewidth=2,title="EMA50")
plot(switch4?movingaverage_market_signal:na,color = change(movingaverage_market_signal) > 0 ? green : red,linewidth=3,title="EMA200")
plot(switch5?movingaverage_profitlvl:na,color = change(movingaverage_profitlvl) > 0 ? green : red,linewidth=3, title="EMA Profit LVL")
//
alertcondition(bullish_cross, title='Golden Cross (bullish)', message='Bullish')
alertcondition(bearish_cross, title='Death Cross (bearish)', message='Bearish')