// Algomojo Trading Strategy //@version=4 strategy("SuperTrend Algomojo Trading Strategy", overlay=true) //inputs Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true) //Block 1 : API Controls + Algomojo Input Controls //Enter Your Algomojo API Key and API Secret Key api_key = "86cbef19e7e61ccee91e497690d5814e" api_secret = "e2d51c1ea698fdff1b2b2223889612e9" strg_name = input(title="Strategy Name",type=input.string,defval="Tradingview Strategy") s_prdt_ali = "BO:BO||CNC:CNC||CO:CO||MIS:MIS||NRML:NRML" Tsym = input(title="Trading Symbol",type=input.string,defval="RELIANCE-EQ") exch = input(title="Exchange",type=input.string,defval="NSE",options=["NSE","NFO","MCX","BSE"]) Ret = "DAY" qty = input(title="Quantity", type=input.integer, defval=1) prctyp =input(title="Order Type",type=input.string,defval="MKT",options=["MKT","LMT","SL","SL-M"]) discqty = "0" MktPro ="NA" Price = "0" TrigPrice = "0" Pcode = input(title="PCode",type=input.string,defval="NRML",options=["CNC","NRML","MIS","CO"]) AMO = "NO" ////////////////////////////////////////Block 1 Module Ends//////////////////////////////////////////////////////////////////////// //Block 2 : Autotrading API data configuration //BE - Buy Entry (1x qty), SX - Short Exit (1x qty), BSR - Buy Stop and Reverse (2x qty) BE = "{ \"api_key\":\""+api_key+"\", \"api_secret\":\""+api_secret+"\", \"data\": { \"strg_name\":\""+strg_name+"\", \"s_prdt_ali\":\"BO:BO||CNC:CNC||CO:CO||MIS:MIS||NRML:NRML\", \"Tsym\":\""+Tsym+"\", \"exch\":\""+exch+"\", \"Ttranstype\":\"B\", \"Ret\":\"DAY\", \"prctyp\":\"MKT\", \"qty\":\""+tostring(qty)+"\", \"discqty\":\"0\", \"MktPro\":\"NA\", \"Price\":\"0\", \"TrigPrice\":\"0\", \"Pcode\":\"NRML\", \"AMO\":\"NO\" } }" SX = "{ \"api_key\":\""+api_key+"\", \"api_secret\":\""+api_secret+"\", \"data\": { \"strg_name\":\""+strg_name+"\", \"s_prdt_ali\":\"BO:BO||CNC:CNC||CO:CO||MIS:MIS||NRML:NRML\", \"Tsym\":\""+Tsym+"\", \"exch\":\""+exch+"\", \"Ttranstype\":\"B\", \"Ret\":\"DAY\", \"prctyp\":\"MKT\", \"qty\":\""+tostring(qty)+"\", \"discqty\":\"0\", \"MktPro\":\"NA\", \"Price\":\"0\", \"TrigPrice\":\"0\", \"Pcode\":\"NRML\", \"AMO\":\"NO\" } }" BSR = "{ \"api_key\":\""+api_key+"\", \"api_secret\":\""+api_secret+"\", \"data\": { \"strg_name\":\""+strg_name+"\", \"s_prdt_ali\":\"BO:BO||CNC:CNC||CO:CO||MIS:MIS||NRML:NRML\", \"Tsym\":\""+Tsym+"\", \"exch\":\""+exch+"\", \"Ttranstype\":\"B\", \"Ret\":\"DAY\", \"prctyp\":\"MKT\", \"qty\":\""+tostring(qty*2)+"\", \"discqty\":\"0\", \"MktPro\":\"NA\", \"Price\":\"0\", \"TrigPrice\":\"0\", \"Pcode\":\"NRML\", \"AMO\":\"NO\" } }" //SE - Short Entry (1x qty), Buy Exit - Short Exit (1x qty), SXR - Short Stop and Reveverse (2x qty) SE = "{ \"api_key\":\""+api_key+"\", \"api_secret\":\""+api_secret+"\", \"data\": { \"strg_name\":\""+strg_name+"\", \"s_prdt_ali\":\"BO:BO||CNC:CNC||CO:CO||MIS:MIS||NRML:NRML\", \"Tsym\":\""+Tsym+"\", \"exch\":\""+exch+"\", \"Ttranstype\":\"S\", \"Ret\":\"DAY\", \"prctyp\":\"MKT\", \"qty\":\""+tostring(qty)+"\", \"discqty\":\"0\", \"MktPro\":\"NA\", \"Price\":\"0\", \"TrigPrice\":\"0\", \"Pcode\":\"NRML\", \"AMO\":\"NO\" } }" BX = "{ \"api_key\":\""+api_key+"\", \"api_secret\":\""+api_secret+"\", \"data\": { \"strg_name\":\""+strg_name+"\", \"s_prdt_ali\":\"BO:BO||CNC:CNC||CO:CO||MIS:MIS||NRML:NRML\", \"Tsym\":\""+Tsym+"\", \"exch\":\""+exch+"\", \"Ttranstype\":\"S\", \"Ret\":\"DAY\", \"prctyp\":\"MKT\", \"qty\":\""+tostring(qty)+"\", \"discqty\":\"0\", \"MktPro\":\"NA\", \"Price\":\"0\", \"TrigPrice\":\"0\", \"Pcode\":\"NRML\", \"AMO\":\"NO\" } }" SSR = "{ \"api_key\":\""+api_key+"\", \"api_secret\":\""+api_secret+"\", \"data\": { \"strg_name\":\""+strg_name+"\", \"s_prdt_ali\":\"BO:BO||CNC:CNC||CO:CO||MIS:MIS||NRML:NRML\", \"Tsym\":\""+Tsym+"\", \"exch\":\""+exch+"\", \"Ttranstype\":\"S\", \"Ret\":\"DAY\", \"prctyp\":\"MKT\", \"qty\":\""+tostring(qty*2)+"\", \"discqty\":\"0\", \"MktPro\":\"NA\", \"Price\":\"0\", \"TrigPrice\":\"0\", \"Pcode\":\"NRML\", \"AMO\":\"NO\" } }" ////////////////////////////////////////Block 2 Module Ends//////////////////////////////////////////////////////////////////////// atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend //Plots upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0) plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0) plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor) fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor) //Backtesting Controls FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 999) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 999) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false //Alerts alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!") alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!") longCondition = buySignal shortCondition = sellSignal //Block 3 : Execution Controls if (longCondition and strategy.position_size==0) strategy.entry("BUY", strategy.long,qty=1, when = window(),alert_message=BE) if (longCondition and strategy.position_size<0) strategy.entry("BUY", strategy.long,qty=1, when = window(),alert_message=BSR) if (shortCondition and strategy.position_size==0) strategy.entry("SELL", strategy.short,qty=1, when = window(),alert_message=SE) if (shortCondition and strategy.position_size>0) strategy.entry("SELL", strategy.short,qty=1, when = window(),alert_message=SSR) ////////////////////////////////////////Block 3 Module Ends//////////////////////////////////////////////////////////////////////// buy1= barssince(buySignal) sell1 = barssince(sellSignal) color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na barcolor(barcoloring ? color1 : na)