// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © algoji //@version=4 strategy("Bollinger + RSI, Double Strategy (by ChartArt) v1.1", shorttitle="RSI_Bol_Strategy", overlay=true) ///////////// RSI RSIlength = input(6,title="RSI Period Length") RSIoverSold = 50 RSIoverBought = 50 price = close vrsi = rsi(price, RSIlength) ///////////// Bollinger Bands BBlength = input(200, minval=1,title="Bollinger Period Length") BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation") BBbasis = sma(price, BBlength) BBdev = BBmult * stdev(price, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev source = close buyEntry = crossover(source, BBlower) sellEntry = crossunder(source, BBupper) //time conditions //INTRADAY s=input(title="INTRA DAY TRADE SESSION",type=input.session,defval="0915-1450") st=time(timeframe.period,s) e=input(title="END SESSION",type=input.session,defval="1515-1520") et=time(timeframe.period,e) symbol=syminfo.ticker //trading custom quantities quant=input(title="Trade Quantity",defval=1) lxse="TYPE: LX"+" :SYMBOL: "+syminfo.ticker+" :PRICE: "+tostring(close)+" :QTY: "+tostring(quant)+" :TYPE:SE "+" :SYMBOL: "+syminfo.ticker +" :PRICE: "+tostring(close)+" :QTY: "+tostring(quant) sxle="TYPE: SX"+" :SYMBOL: "+syminfo.ticker+" :PRICE: "+tostring(close)+" :QTY: "+tostring(quant)+" :TYPE:LE "+" :SYMBOL: "+syminfo.ticker +" :PRICE: "+tostring(close)+" :QTY: "+tostring(quant) le="TYPE:LE "+" :SYMBOL: "+syminfo.ticker +" :PRICE: "+tostring(close)+" :QTY: "+tostring(quant) lx="TYPE:LX "+" :SYMBOL: "+syminfo.ticker +" :PRICE: "+tostring(close)+" :QTY: "+tostring(quant) se="TYPE:SE "+" :SYMBOL: "+syminfo.ticker +" :PRICE: "+tostring(close)+" :QTY: "+tostring(quant) sx="TYPE:SX "+" :SYMBOL: "+syminfo.ticker +" :PRICE: "+tostring(close)+" :QTY: "+tostring(quant) plot(BBbasis, color=color.aqua,title="Bollinger Bands SMA Basis Line") p1 = plot(BBupper, color=color.silver,title="Bollinger Bands Upper Line") p2 = plot(BBlower, color=color.red,title="Bollinger Bands Lower Line") fill(p1, p2) if (not na(vrsi)) if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower)) strategy.entry("LE", strategy.long, stop=BBlower + syminfo.mintick,comment=le,when=st) if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper)) strategy.entry("SE", strategy.short, stop=BBupper - syminfo.mintick,comment=se,when=st) if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower)) strategy.entry("LE", strategy.long, stop=BBlower + syminfo.mintick,comment=sxle,when=st) if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper)) strategy.entry("SE", strategy.short, stop=BBupper - syminfo.mintick,comment=lxse,when=st) //adding stoploss and target option ut=input(defval=false,title="USE TARGET") us=input(defval=false,title="USE STOPLOSS") tar=input(defval=10.0,title="TARGET IN RS") stop=input(defval=7.0,title="STOP LOSS IN RS") tar:=tar/syminfo.mintick stop:=stop/syminfo.mintick if(ut==true and us==false) strategy.exit(id="LX",from_entry="LE",profit=tar,comment=lx) strategy.exit(id="SX",from_entry="SE",profit=tar,comment=sx) if(us==true and ut==false) strategy.exit(id="LX",from_entry="LE",loss=stop,comment=lx) strategy.exit(id="SX",from_entry="SE",loss=stop,comment=sx) if(ut==true and us==true) strategy.exit(id="LX",from_entry="LE",profit=tar,loss=stop,comment=lx) strategy.exit(id="SX",from_entry="SE",profit=tar,loss=stop,comment=sx) //ADDING SQUAREOFF TIME strategy.close(id="LE",when=et,comment=lx) strategy.close(id="SE",when=et,comment=sx)