이 전략은 최적의 거래 기회를 결정하기 위해 상대적 강도 지수 (RSI), 이동 평균 컨버전스 디버전스 (MACD), 볼링거 밴드 및 볼륨) 를 포함한 여러 기술적 지표를 결합합니다. 이 전략은 트렌드와 변동성을 식별하기 위해 가격 및 볼륨 데이터를 분석하고 모멘텀 및 변동성 지표를 사용하여 거래 신호를 생성합니다. 또한 전략은 거래 신호를 더 최적화하기 위해 유동성 구역의 개념을 도입합니다.
이 전략은 RSI, MACD, 볼링거 밴드 및 볼륨을 포함한 여러 기술적 지표를 결합하여 포괄적인 거래 시스템을 형성합니다. 이 전략은 가격, 트렌드, 변동성 및 시장 정서와 같은 다양한 측면을 고려하고 거래 신호를 최적화하기 위해 유동성 구역의 개념을 도입합니다. 이 전략은 특정 장점이 있지만 여전히 매개 변수 최적화 및 시장 위험과 같은 과제에 직면하고 있습니다. 미래에 전략은 동적 매개 변수 최적화, 위험 관리 및 기계 학습 방법을 통해 더욱 향상 될 수 있습니다.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Optimize Edilmiş Kapsamlı Ticaret Stratejisi - Likidite Bölgeleri ile 30 Dakika", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Optimize edilebilir parametreler rsiPeriod = input.int(14, minval=5, maxval=30, title="RSI Periyodu") macdShortPeriod = input.int(12, minval=5, maxval=30, title="MACD Kısa Periyodu") macdLongPeriod = input.int(26, minval=20, maxval=50, title="MACD Uzun Periyodu") macdSignalPeriod = input.int(9, minval=5, maxval=20, title="MACD Sinyal Periyodu") smaPeriod = input.int(20, minval=10, maxval=50, title="SMA Periyodu") bollingerMultiplier = input.float(2.0, minval=1.0, maxval=3.0, title="Bollinger Bantları Çarpanı") volumeSpikeMultiplier = input.float(1.5, minval=1.0, maxval=3.0, title="Hacim Artış Çarpanı") shortTermMAPeriod = input.int(50, minval=20, maxval=100, title="Kısa Dönem MA Periyodu") longTermMAPeriod = input.int(200, minval=100, maxval=300, title="Uzun Dönem MA Periyodu") liquidityZonePeriod = input.int(50, minval=10, maxval=100, title="Likidite Bölgesi Periyodu") // İndikatörleri Tanımla rsi = ta.rsi(close, rsiPeriod) [macdLine, signalLine, _] = ta.macd(close, macdShortPeriod, macdLongPeriod, macdSignalPeriod) macdHist = macdLine - signalLine basis = ta.sma(close, smaPeriod) dev = bollingerMultiplier * ta.stdev(close, smaPeriod) upperBand = basis + dev lowerBand = basis - dev volumeSpike = volume > ta.sma(volume, 20) * volumeSpikeMultiplier // Hareketli Ortalamaları Kullanarak Trend Takibi shortTermMA = ta.sma(close, shortTermMAPeriod) longTermMA = ta.sma(close, longTermMAPeriod) trendUp = shortTermMA > longTermMA trendDown = shortTermMA < longTermMA // Likidite Bölgelerini Belirleme liquidityZoneHigh = ta.highest(high, liquidityZonePeriod) liquidityZoneLow = ta.lowest(low, liquidityZonePeriod) // Likidite Bölgelerini Çiz plot(liquidityZoneHigh, color=color.red, title="Likidite Bölgesi Üst") plot(liquidityZoneLow, color=color.green, title="Likidite Bölgesi Alt") // Sinyal Durumlarını Saklamak İçin Değişkenler var bool inPosition = false var bool isBuy = false // Al ve Sat Sinyali Bayrakları var bool buyFlag = false var bool sellFlag = false // Bayrakları Sıfırla buyFlag := false sellFlag := false // Al ve Sat Sinyallerini Tanımla var bool buySignal = false var bool sellSignal = false if (barstate.isconfirmed) buySignal := ((rsi < 30 and close < lowerBand and close > liquidityZoneLow) or (macdHist > 0 and trendUp and close > ta.highest(high, 10)[1] and close > liquidityZoneLow) or (volumeSpike and close > upperBand and close > liquidityZoneLow)) sellSignal := ((rsi > 70 and close > upperBand and close < liquidityZoneHigh) or (macdHist < 0 and trendDown and close < ta.lowest(low, 10)[1] and close < liquidityZoneHigh) or (volumeSpike and close < lowerBand and close < liquidityZoneHigh)) // Aynı Sinyali Tekrarlamamak İçin Kontroller if (buySignal and (not inPosition or not isBuy)) inPosition := true isBuy := true buyFlag := true sellFlag := false strategy.entry("Buy", strategy.long) if (sellSignal and inPosition and isBuy) inPosition := false isBuy := false sellFlag := true buyFlag := false strategy.close("Buy") // Sinyalleri Grafiğe Çiz plotshape(series=buyFlag, location=location.belowbar, color=color.green, style=shape.labelup, text="AL") plotshape(series=sellFlag, location=location.abovebar, color=color.red, style=shape.labeldown, text="SAT") // Hareketli Ortalamaları ve Bollinger Bantlarını Çiz plot(shortTermMA, color=color.blue, title="50 MA") plot(longTermMA, color=color.orange, title="200 MA") plot(upperBand, color=color.red, title="Üst Bant") plot(lowerBand, color=color.green, title="Alt Bant")