这是一个基于多重技术指标的趋势跟踪和背离交易策略。该策略综合运用布林带(Bollinger Bands)、相对强弱指标(RSI)、随机指标(Stochastic)和资金流量指标(MFI)来捕捉市场的超买超卖机会,通过多指标交叉确认来增强交易信号的可靠性。
策略采用了多层过滤机制来确认交易信号: 1. 使用布林带(20,2)作为价格波动区间的参考,当价格突破布林带下轨时触发买入信号预选。 2. RSI(3)设置为超买超卖区间(85,15),当RSI向上突破15时确认超卖。 3. 随机指标(10,3)的设置为(85,15),当K线向上突破15时进一步确认超卖。 4. MFI的10周期EMA走势用于确认资金流向,上升趋势支持买入。 买入条件需要同时满足:价格突破布林带下轨、RSI突破超卖、随机指标突破超卖以及MFI趋势向上。 卖出条件则相反:价格突破布林带上轨、RSI突破超买、随机指标突破超买。
该策略通过多指标协同配合,构建了一个相对完整的交易系统。策略的核心优势在于通过不同类型指标的交叉验证来提高信号可靠性,同时考虑了趋势、动量和资金流向等多个市场特征。虽然存在一定的滞后性风险,但通过合理的参数优化和风险管理措施,策略具有良好的应用潜力。未来可以通过动态参数调整和市场环境过滤来进一步提升策略的稳定性和盈利能力。
/*backtest
start: 2022-02-09 00:00:00
end: 2025-02-06 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ahmetkaratas4238
//@version=5
strategy("İzmir Stratejisi", overlay=true)
// **Bollinger Bantları Hesaplamaları**
bbLength = 20
bbMult = 2.0
basis = ta.sma(close, bbLength)
dev = bbMult * ta.stdev(close, bbLength)
upperBand = basis + dev
lowerBand = basis - dev
// **RSI (3,85,15) Hesaplaması**
rsiLength = 3
rsiUpper = 85
rsiLower = 15
rsi = ta.rsi(close, rsiLength)
// **Stochastic (10,3,85,15) Hesaplaması**
stochLength = 10
smoothK = 3
smoothD = 3
stochUpper = 85
stochLower = 15
k = ta.sma(ta.stoch(close, high, low, stochLength), smoothK)
d = ta.sma(k, smoothD)
// **Money Flow Index (MFI) Hesaplaması**
mfiLength = 14
mfi = ta.mfi(close, mfiLength) // Hata düzeltildi: Artık yalnızca periyot alıyor
mfiTrendUp = ta.ema(mfi, 10) > ta.ema(mfi[1], 10) // MFI yükseliş trendi
mfiTrendDown = ta.ema(mfi, 10) < ta.ema(mfi[1], 10) // MFI düşüş trendi
// **ALIM ŞARTLARI**
var bbBreakdown=false
var rsiBreakout=false
var stochBreakout=false
bbBreakdown := ta.crossunder(close,lowerBand)?true:bbBreakdown // Fiyat BB altına sarktı mı?
rsiBreakout := ta.crossover(rsi, rsiLower)?true:rsiBreakout // RSI 15 seviyesini yukarı kırdı mı?
stochBreakout := ta.crossover(k, stochLower)?true:stochBreakout // Stochastic alt bandı yukarı kırdı mı?
buyCondition = bbBreakdown and rsiBreakout and stochBreakout and mfiTrendUp
// **SATIM ŞARTLARI**
var bbBreakup=false
var rsiBreakdown=false
var stochBreakdown=false
bbBreakup := ta.crossunder(close, upperBand)?true:bbBreakup // Fiyat BB üst bandından aşağı kırdı mı?
rsiBreakdown := ta.crossunder(rsi, rsiUpper)?true:rsiBreakdown // RSI 85 seviyesini aşağı kırdı mı?
stochBreakdown := ta.crossunder(k, stochUpper)?true:stochBreakdown // Stochastic üst bandı aşağı kırdı mı?
sellCondition = bbBreakup and rsiBreakdown// and stochBreakdown and mfiTrendDown
if ta.crossunder(close,lowerBand)
bbBreakup:=false
if ta.crossover(rsi, rsiLower)
rsiBreakdown:=false
if ta.crossover(k, stochLower)
stochBreakdown:=false
if ta.crossunder(close, upperBand)
bbBreakdown:=false
if ta.crossunder(rsi, rsiUpper)
rsiBreakout:=false
if ta.crossunder(k, stochUpper)
stochBreakout:=false
// **Alım İşlemi Aç**
if buyCondition
strategy.entry("Long", strategy.long)
// **Satım İşlemi Yap (Pozisyon Kapat)**
if sellCondition
strategy.close("Long")
// **Bollinger Bantlarını Göster**
plot(upperBand, title="Üst BB", color=color.red)
plot(lowerBand, title="Alt BB", color=color.green)
plot(basis, title="Orta BB", color=color.blue)
// **Alım ve Satım Sinyallerini İşaretle**
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="AL")
plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="SAT")