
双移动均线黄金交叉策略是一种基于移动平均线的量化交易策略。该策略通过计算不同周期的移动平均线,判断市场趋势和买卖时机。当短期移动平均线上穿长期移动平均线时,产生黄金交叉,作为买入信号;当短期移动平均线下穿长期移动平均线时,产生死亡交叉,作为卖出信号。
双移动均线黄金交叉策略的核心逻辑基于移动平均线的平滑特性。移动平均线能够有效过滤市场噪音,指示大致趋势方向。短期移动平均线对价格变化更加敏感,能够捕捉到最近一段时间内的价格波动信息;而长期移动平均线对最近价格变化的响应较慢,能反映市场长期趋势。当短期移动平均线上穿长期移动平均线时,说明市场正在形成新的上涨趋势;当短期移动均线下穿长期移动均线时,说明涨势可能结束,需要考虑离场。
双移动均线策略的另一个关键点是 RSI 指标。RSI 能够有效判断市场是否处于超买超卖状态。结合 RSI 可以避免在市场转折点附近产生错误交易。这套策略只有在 RSI 指标符合条件的情况下,才会产生买入和卖出信号。
具体来说,该策略的交易决策逻辑如下:
通过多参数组合,该策略能够有效过滤假信号,提高交易决策的准确性。
双移动均线黄金交叉策略具有以下几个优势:
双移动均线黄金交叉策略也存在以下风险:
为降低风险,可以从以下几个方面进行优化:
双移动均线黄金交叉策略还有进一步优化的空间:
双移动均线黄金交叉策略是一个非常经典的规则型量化交易策略。它简单易于实现,参数优化灵活,收益表现也较为优秀,是初学者入门量化交易的不错选择。但该策略也存在一定限制,通过进一步的研究和优化,可以使其向更高的智能化和稳定性迈进,真正做到持续盈利。
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//Based on Larry Connors RSI-2 Strategy - Lower RSI
strategy(title="EA_3Minute_MagnetStrat", shorttitle="EA_3Minute_MagnetStrat", overlay=false)
src = close,
//RSI CODE
up = rma(max(change(src), 0), 30)
down = rma(-min(change(src), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//Criteria for Moving Avg rules
ma20= vwma(close,20)
ma50 = vwma(close,50)
ma100= vwma(close,100)
//Rule for RSI Color
//col = ma30 > ma50 > ma200 and rsi <=53?lime: ma50 < ma200 and rsi >= 60?red : silver
long1 = ma20 > ma50 and ma50 > ma100 and rsi < 50
short1 = ma20 < ma50 and ma50 < ma100 and rsi > 48.5
//plot(rsi, title="RSI", style=line, linewidth=1,color=col)
//plot(100, title="Upper Line 100",style=line, linewidth=3, color=aqua)
//plot(0, title="Lower Line 0",style=line, linewidth=3, color=aqua)
//band1 = plot(60, title="Upper Line 60",style=line, linewidth=1, color=aqua)
//band0 = plot(44, title="Lower Line 40",style=line, linewidth=1, color=aqua)
//fill(band1, band0, color=silver, transp=90)
//strategy.entry ("buy", strategy.long, when=long)
//strategy.entry ("sell", strategy.short, when=short)
//plot(long,"long",color=green,linewidth=1)
//plot(short,"short",color=red,linewidth=1)
//
long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[3] == 1
shortclose = short[3] == 1
//Alert
strategy.entry("short", strategy.short,qty = 1, when=short)
strategy.entry("long", strategy.long,qty=1, when=long)
plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)
//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)
//strategy.exit(id="Stop", profit = 20, loss = 100)