该指标是通过将标准周期RSI指标与超卖限额32、超买限额70和期限14(这些值可以从指标设置的条目和静止选项卡中选择更改)以及布林带相结合而创建的。标准偏差为2且周期为20的指示器。此外,RSI超卖是一个向上的绿色三角形,其中价格同时低于BB和下限(低)(即低于32),其中RSI超买(即高于70),同时价格高于BB,上限(上限)是向下的红色三角形。由三角形表示。根据这些条件建立报警条件。源代码以直观的方式发布,并以清晰的语言编写。
回测测试
/*backtest start: 2021-12-01 09:00:00 end: 2022-03-25 15:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}] args: [["ContractType","rb2210",360008]] */ //@version=4 study(title="RSI & BB'de aynı anda Oversold Yakalama", shorttitle="RSI&BB OS", overlay=true) //RSI hesabı ile kaynak ve period seçimi için seçki kutusu ve değer giriş kutuları burada yapıldı rsiKaynagi = input(title="RSI 数据源", type=input.source, defval=close) rsiPeriodu = input(title="RSI 周期", type=input.integer, defval=14) rsiDegeri = rsi(rsiKaynagi, rsiPeriodu) rsiTabanDegeri = input(title="RSI 超卖", type=input.integer, defval=32) // defval: default value yani varsayılan değer rsiTavanDegeri = input(title="RSI 超买", type=input.integer, defval=70) // Bollinger Bandı hesabı ve kaynak ve period seçimi için seçki kutusu ve değer giriş kutuları burada yapıldı bbPeriodu = input(20, title="周期", minval=1) bbKaynagi = input(close, title="数据源") standartSapmaDegeri = input(2.0, minval=0.001, maxval=50, title="标准差系数") bandOrtasi = sma(bbKaynagi, bbPeriodu) sapmaHesabi = standartSapmaDegeri * stdev(bbKaynagi, bbPeriodu) bbUstSiniri = bandOrtasi + sapmaHesabi bbAltsiniri = bandOrtasi - sapmaHesabi bandOrtaCizgisi = plot(bandOrtasi, "Orta Çizgi", color=color.black) ustSinirCizgisi = plot(bbUstSiniri, "Üst Sınır Çizgisi", color=color.black) altSinirCizgisi = plot(bbAltsiniri, "Alt Sınır Çizgisi", color=color.black) fill(ustSinirCizgisi, altSinirCizgisi, title = "Arka Plan", color=color.rgb(33, 150, 243, 95)) // arka plan renkleri RGB cinsinden // RSI'nin değerinin 20 altındayken aynı anda fiyatın Bollinger Bandının altı sınırının altında olduğu durum için şart oluşturma bullishkosulu = rsiDegeri<rsiTabanDegeri and low<bbAltsiniri bearishkosulu = rsiDegeri>rsiTavanDegeri and high>bbUstSiniri // bu kosulun sağlandığı yerleri belirtilen yazı ve / veya şekille gösterme plotshape((bullishkosulu)? 1 : 0, style=shape.triangleup, text="Bullish", color=color.green, location=location.belowbar, size=size.small) plotshape((bearishkosulu)? 1 : 0, style=shape.triangledown, text="Bearish", color=color.red, location=location.abovebar, size=size.small) //triangleup: yukarı yönlü üçgen //text: görünmesi istenen yazı //color: yazı ve şekil rengi //location: mumun altında mı üstünde mi görünsün //belowbar: mumun yani barın altında görünsün //size : büyüklük küçüklük ölçüsü (burada small ile küçük olsun istendi) alertcondition(bullishkosulu, title="Bullish koşulu üzerine alarm kur", message="{{interval}} - RSI<33 ve Fiyat<BB Lower - {{ticker}} - En düşük fiyat:{{low}} - {{timenow}}") alertcondition(bearishkosulu, title="Bearish koşulu üzerine alarm kur", message="{{interval}} - RSI>70 ve Fiyat>BB Upper - {{ticker}} - En yüksek fiyat:{{high}} - {{timenow}}") if bearishkosulu strategy.entry("Enter Long", strategy.long) else if bullishkosulu strategy.entry("Enter Short", strategy.short)template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6