本策略运用双移动平均线的黄金交叉原理,结合RSI指标来判断买卖点。策略主要判断26周期EMA与12周期EMA的交叉情况,及100周期SMA与200周期SMA的交叉情况,在交叉发生时结合RSI指标判断是否发出交易信号。
该策略主要基于双移动平均线的交叉原理。双移动平均线中,26周期EMA代表短期趋势,12周期EMA代表更短期的价格波动。当短期EMA上穿较长期EMA时,代表价格由跌转涨,属于做多信号;当短期EMA下穿较长期EMA时,代表价格由涨转跌,属于做空信号。该策略增添100周期SMA和200周期SMA的判断,它们分别代表中长期趋势和长期趋势,其交叉情况也可用于判断价格走势转折。
在判断EMA和SMA的交叉的同时,策略还会结合RSI指标来发出交易信号。RSI可判断价格是处于超买还是超卖状态。RSI高于70时为超买信号,低于30时为超卖信号。所以策略会在EMA或SMA发生交叉时,同时检查RSI指标来避免在价格超买超卖时发出错误的交易信号。
使用双EMA判断短期价格走势,使用双SMA判断中长期价格走势,可有效发现价格turning point。
结合RSI指标可避免在价格超买超卖时错误发出交易信号。
通过调整EMA、SMA的参数可适应不同周期及不同交易品种。
策略思路简单清晰,容易理解和优化。
双移动平均线都有滞后性,无法提前判断价格转折点。
如果不适当设置EMA、SMA参数,可能产生大量错误信号。
RSI指标也可能出现失效的情况,无法有效判断价格的超买超卖状态。
交易品种不同,需要调整参数,不具有普适性。
结合其他先导指标判断价格走势和可能的转折点。
测试参数的稳定性,选取参数组合的胜率最高者。
结合其他指标如KD、BOLL来避免RSI失效的情况。
根据不同交易品种分别测试参数,保存参数组合模板。
测试不同EMA和SMA周期参数的组合,找到最优参数。
增加其他指标判断,形成指标组合策略。常见的有KD,MACD等。
增加止损止盈策略,设置合理的止损止盈比例。
优化入场时机,避免在价格波动过大时入场。可设置价格波动阈值。
区分多空行情,设置不同的交易信号条件。
本策略主要运用双移动平均线交叉原理发出交易信号,简单实用,容易优化。但存在一定滞后性无法判断价格转折点,也可能在特定市场中失效。可通过参数优化与指标组合来提高策略的稳定性与胜率。总体来说,该策略适合中长期趋势交易,也可作为其它策略的组成部分,具有一定的实用价值。
/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(shorttitle = "Gamma pips EMA Cross", title="MA Cross", overlay=true)
s100sma = sma(close, 100)
s200sma = sma(close, 200)
s26ema = ema(close,26)
s12ema = ema(close,12)
plot(s100sma, color = green, linewidth = 5)
plot(s200sma, color = blue, linewidth = 5)
plot(s26ema, color = yellow, linewidth = 3)
plot(s12ema, color = red, linewidth = 3)
EMACross = plot(cross(s26ema, s12ema) ? s26ema : na, style = cross, linewidth = 5, color = red)
SMACross = plot(cross(s100sma, s200sma) ? s200sma : na, style = cross, linewidth = 5, color = white)
Alert = cross(s26ema, s12ema)
alertcondition(Alert, title="EMA Crossing")
//============ signal Generator ==================================//
EMACrossover = crossover(s26ema, s12ema) //if yellow cross and is above red ->SELL
EMACrossunder = crossunder(s26ema, s12ema) //if yellow cross and is below red ->BUY
SMACrossover = crossover(s100sma, s200sma) //green crosses above blue ->Buy
SMACrossunder = crossunder (s100sma, s200sma) //green crosses below below ->Sell
price = close
BuyCondition = (EMACrossunder) and (price >= s100sma)
SellCondition = (EMACrossover) and (price <= s100sma)
///---------Buy Signal-------------///
if (BuyCondition)
strategy.order("BUY ema crossunder", strategy.long)
///Short signal------//
if(SellCondition)
strategy.order("SELL ema crossover", strategy.short)