该策略是一个结合了多个技术指标的综合交易系统,主要包括一目均衡图(Ichimoku)、相对强弱指标(RSI)、移动平均线趋同背离指标(MACD)、高时间周期(HTF)背离以及指数移动平均线(EMA)交叉等多个维度的分析方法。策略通过多重信号确认来提高交易的准确性,同时利用不同时间周期的市场信息来捕捉更可靠的交易机会。
策略的核心原理是通过多层技术指标的综合分析来确认交易信号。首先使用一目均衡图的云图组件来确定整体市场趋势,结合RSI指标判断市场的超买超卖状态,通过MACD指标识别趋势的动能变化,并通过高时间周期的RSI和MACD背离来捕捉潜在的趋势反转信号。此外,策略还引入了EMA50和EMA100的交叉确认,以及EMA200作为主要趋势过滤器,从而构建了一个多层次的交易确认体系。
该策略通过多个技术指标的协同配合,构建了一个较为完善的交易系统。策略的优势在于其多维度的信号确认机制,但同时也面临着参数优化和市场适应性的挑战。通过提出的优化方向,策略有望在保持其稳健性的同时,进一步提升其在不同市场环境下的表现。
/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-16 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("Ichimoku + RSI + MACD + HTF Divergence + EMA Cross Strategy", overlay=true)
// تنظیمات تایمفریم بالاتر
htf_timeframe = input.timeframe("D", title="تایمفریم بالاتر")
// تنظیمات پارامترهای ایچیموکو
tenkan_period = input(9, title="Tenkan Sen Period")
kijun_period = input(26, title="Kijun Sen Period")
senkou_span_b_period = input(52, title="Senkou Span B Period")
displacement = input(26, title="Displacement")
// محاسبه خطوط ایچیموکو
tenkan_sen = (ta.highest(high, tenkan_period) + ta.lowest(low, tenkan_period)) / 2
kijun_sen = (ta.highest(high, kijun_period) + ta.lowest(low, kijun_period)) / 2
senkou_span_a = (tenkan_sen + kijun_sen) / 2
senkou_span_b = (ta.highest(high, senkou_span_b_period) + ta.lowest(low, senkou_span_b_period)) / 2
chikou_span = close // قیمت بسته شدن فعلی
// رسم خطوط ایچیموکو
plot(tenkan_sen, color=color.blue, title="Tenkan Sen")
plot(kijun_sen, color=color.red, title="Kijun Sen")
plot(senkou_span_a, offset=displacement, color=color.green, title="Senkou Span A")
plot(senkou_span_b, offset=displacement, color=color.orange, title="Senkou Span B")
plot(chikou_span, offset=-displacement, color=color.purple, title="Chikou Span")
// رنگآمیزی ابر ایچیموکو
fill(plot(senkou_span_a, offset=displacement, color=color.green, title="Senkou Span A"), plot(senkou_span_b, offset=displacement, color=color.orange, title="Senkou Span B"), color=senkou_span_a > senkou_span_b ? color.new(color.green, 90) : color.new(color.red, 90), title="Cloud")
// تنظیمات RSI
rsi_length = input(14, title="RSI Length")
rsi_overbought = input(70, title="RSI Overbought Level")
rsi_oversold = input(30, title="RSI Oversold Level")
// محاسبه RSI
rsi_value = ta.rsi(close, rsi_length)
// تنظیمات MACD
fast_length = input(12, title="MACD Fast Length")
slow_length = input(26, title="MACD Slow Length")
signal_smoothing = input(9, title="MACD Signal Smoothing")
// محاسبه MACD
[macd_line, signal_line, hist_line] = ta.macd(close, fast_length, slow_length, signal_smoothing)
// شناسایی واگراییها در تایمفریم بالاتر
f_find_divergence(src, lower, upper) =>
var int divergence = na // تعریف نوع متغیر بهصورت صریح
if (src >= upper and src[1] < upper)
divergence := 1 // واگرایی نزولی
else if (src <= lower and src[1] > lower)
divergence := -1 // واگرایی صعودی
divergence
// محاسبه RSI و MACD در تایمفریم بالاتر
htf_rsi_value = request.security(syminfo.tickerid, htf_timeframe, rsi_value)
htf_macd_line = request.security(syminfo.tickerid, htf_timeframe, macd_line)
// شناسایی واگراییها در تایمفریم بالاتر
htf_rsi_divergence = f_find_divergence(htf_rsi_value, rsi_oversold, rsi_overbought)
htf_macd_divergence = f_find_divergence(htf_macd_line, 0, 0)
// فیلتر روند با EMA 200
ema_200 = ta.ema(close, 200)
// اضافه کردن EMA 50 و 100
ema_50 = ta.ema(close, 50)
ema_100 = ta.ema(close, 100)
// کراسهای EMA
ema_cross_up = ta.crossover(ema_50, ema_100) // کراس صعودی EMA 50 و 100
ema_cross_down = ta.crossunder(ema_50, ema_100) // کراس نزولی EMA 50 و 100
// شرایط ورود و خروج
long_condition = (close > senkou_span_a and close > senkou_span_b) and // قیمت بالای ابر
(rsi_value > 50) and // RSI بالای 50
(macd_line > signal_line) and // MACD خط سیگنال را قطع کرده
(htf_rsi_divergence == -1 or htf_macd_divergence == -1) and // واگرایی صعودی در تایمفریم بالاتر
(close > ema_200) and // قیمت بالای EMA 200
(ema_cross_up) // کراس صعودی EMA 50 و 100
short_condition = (close < senkou_span_a and close < senkou_span_b) and // قیمت زیر ابر
(rsi_value < 50) and // RSI زیر 50
(macd_line < signal_line) and // MACD خط سیگنال را قطع کرده
(htf_rsi_divergence == 1 or htf_macd_divergence == 1) and // واگرایی نزولی در تایمفریم بالاتر
(close < ema_200) and // قیمت زیر EMA 200
(ema_cross_down) // کراس نزولی EMA 50 و 100
// نمایش نقاط ورود در چارت
plotshape(series=long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
// اجرای استراتژی
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)