本策略是一个结合了双均线系统(50和100周期EMA)和RSI动量指标的交易系统。策略通过识别均线交叉和RSI超买区域来确定市场趋势和入场时机,同时使用动态止损来控制风险。该策略主要适用于趋势明显的市场环境,通过捕捉趋势的持续性来获取收益。
策略的核心逻辑包含以下几个关键要素: 1. 使用50周期和100周期的指数移动平均线(EMA)构建趋势判断系统 2. 通过RSI指标的超买区域(默认70)确认动量 3. 在均线金叉且RSI进入超买区域时进场做多 4. 当短期均线跌破长期均线时平仓出场 5. 使用均线交叉点设置动态止损位
这是一个基于经典技术分析理论构建的趋势跟踪策略,通过均线系统和RSI指标的配合使用,有效地平衡了盈利机会和风险控制。策略的主要优势在于逻辑清晰、风险可控,但也需要在实际应用中根据市场情况进行适当的参数优化和策略改进。对于寻求中长期趋势交易机会的投资者来说,这是一个值得参考的基础策略框架。
/*backtest
start: 2024-02-10 00:00:00
end: 2025-02-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("IME-Bands with RSI Strategy", overlay=true)
// === INPUTS ===
src = close
emaS_value = input.int(50, minval=1, title="EMA Small - Value") // 50 EMA
emaB_value = input.int(100, minval=1, title="EMA Big - Value") // 100 EMA
rsi_length = input.int(14, title="RSI Length")
rsi_source = input.source(close, title="RSI Source")
rsi_overbought = input.int(70, title="RSI Overbought Level")
rsi_oversold = input.int(30, title="RSI Oversold Level")
// === CALCULATIONS ===
// EMAs
emaS = ta.ema(close, emaS_value)
emaB = ta.ema(close, emaB_value)
// RSI
rsi = ta.rsi(rsi_source, rsi_length)
// IME-Band Cross Conditions
isGreenCrossover = emaS > emaB // Green band
isRedCrossover = emaS < emaB // Red band
// Track Green Cross Confirmation
var bool isGreenConfirmed = false
if (isGreenCrossover and not isGreenCrossover[1]) // First green crossover
isGreenConfirmed := true
if (not isGreenCrossover)
isGreenConfirmed := false
// Entry Condition: RSI above 70 on second green candle
entryCondition = isGreenConfirmed and rsi > rsi_overbought and isGreenCrossover
// Exit Condition: Red band confirmed
exitCondition = isRedCrossover
// === STRATEGY RULES ===
// Stop Loss: Lowest point of crossover
var float stopLoss = na
if (isGreenCrossover and not isGreenCrossover[1])
stopLoss := emaB // Set stop loss to EMA Big (crossover point)
// Entry and Exit Trades
if (entryCondition)
strategy.entry("Buy", strategy.long)
stopLoss := na // Reset stop loss after entry
if (exitCondition)
strategy.close("Buy")
// Stop Loss logic
if (strategy.position_size > 0 and not na(stopLoss))
strategy.exit("Stop Loss", from_entry="Buy", stop=stopLoss)
// Plotting
plot(emaS, color=color.green, title="EMA Small (50)", linewidth=1)
plot(emaB, color=color.red, title="EMA Big (100)", linewidth=1)
hline(rsi_overbought, "RSI Overbought", color=color.new(color.red, 70), linestyle=hline.style_dotted)
plot(rsi, color=color.blue, title="RSI")