// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // @algomojo // Webhook Url : https://amapi.algomojo.com/v1/PlaceOrder //@version=5 strategy('Time Based Execution Module for Algomojo', overlay=true, calc_on_every_tick=true) import algomojo/automation/20 //Block 1 : API Controls + Algomojo Input Controls //Enter Your Algomojo API Key and API Secret Key am_apikey = input.string(title='API Key', defval='xxxxx', group='AlgoControls') am_apisecret = input.string(title='API Secret Key', defval='xxxxx', group='AlgoControls') am_broker = input.string(title='Broker', defval='ALICEBLUE', options=['ALICEBLUE', 'ANGELONE', 'FIRSTOCK', 'FYERS','MASTERTRUST','SAMCO','TRADEJINI','UPSTOX','ZEBU','ZERODHA'], group='AlgoControls') am_strategy = input.string(title='Strategy Name', defval='Supertrend Strategy', group='AlgoControls') am_symbol = input.string(title='Trading Symbol', defval='RELIANCE-EQ', group='AlgoControls') am_exchange = input.string(title='Exchange', defval='NSE', options=['NSE', 'NFO', 'MCX', 'BSE'], group='AlgoControls') am_quantity = input.int(title='Quantity', defval=1, group='AlgoControls') am_pricetype = input.string(title='Order Type', defval='MARKET', group='AlgoControls') am_product = input.string(title='Product', defval='MIS', options=['CNC', 'MIS', 'NRML'], group='AlgoControls') am_splitorder = input.string(title='Split Order?', defval='NO', options=['NO', 'YES'], group='AlgoControls') am_split_quantity = input.int(title='Split Quantity', defval=1, group='AlgoControls') am_Mode = input.string(title='Algo Mode', defval='ENABLE', options=['ENABLE', 'LONGONLY', 'SHORTONLY'], group='AlgoControls') ////////////////////////////////////////Block 1 Module Ends//////////////////////////////////////////////////////////////////////// //Block 2 : Autotrading API data configuration [BE,SX,BSR,SE,BX,SSR] = automation.algomodule(am_apikey, am_apisecret, am_broker, am_strategy, am_symbol, am_exchange,am_quantity, am_pricetype, am_product, am_splitorder, am_split_quantity) ////////////////////////////////////////Block 2 Module Ends//////////////////////////////////////////////////////////////////////// //Block 3 : Backtesting Controls & Live Automation Purpose FromMonth = input.int(defval=9, title='From Month', minval=1, maxval=12, group='Backtesting') FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31, group='Backtesting') FromYear = input.int(defval=2018, title='From Year', minval=999, group='Backtesting') ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12, group='Backtesting') ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31, group='Backtesting') ToYear = input.int(defval=9999, title='To Year', minval=999, group='Backtesting') start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false ////////////////////////////////////////Block 3 Module Ends//////////////////////////////////////////////////////////////////////// EntryHour = input.int(title='Entry Hour', defval=10, minval=0, maxval=23) EntryMinute = input.int(title='Entry Minute', defval=48, minval=0, maxval=59) EntrySecond = input.int(title='Entry Second', defval=0, minval=0, maxval=59) ExitHour = input.int(title='Exit Hour', defval=10, minval=0, maxval=23) ExitMinute = input.int(title='Exit Minute', defval=50, minval=0, maxval=59) ExitSecond = input.int(title='Exit Second', defval=0, minval=0, maxval=59) //Display the clock in GMT format i_timeZone = input('GMT+530') f_print(_txt) => var _lbl = label.new(bar_index, ta.highest(10)[1], _txt, xloc.bar_index, yloc.price, #00000000, label.style_none, color.gray, size.large, text.align_left) label.set_xy(_lbl, bar_index, ta.highest(10)[1]) label.set_text(_lbl, _txt) f_print(str.tostring(hour(timenow), '00:') + str.tostring(minute(timenow), '00:') + str.tostring(second(timenow), '00') + ' (Exchange)\n') f_print(str.tostring(hour(timenow, i_timeZone), '00:') + str.tostring(minute(timenow, i_timeZone), '00:') + str.tostring(second(timenow, i_timeZone), '00') + ' (Input: ' + i_timeZone + ')') BuyCond = hour(timenow) == EntryHour and minute(timenow) == EntryMinute and second(timenow) >= EntrySecond SellCond = hour(timenow) == ExitHour and minute(timenow) == ExitMinute and second(timenow) >= ExitSecond longCondition = BuyCond shortCondition = SellCond //Block 3 : Execution Controls if longCondition strategy.entry('BUY', strategy.long,alert_message=BE) if shortCondition strategy.entry('SELL', strategy.short,alert_message=SE) ////////////////////////////////////////Block 3 Module Ends////////////////////////////////////////////////////////////////////////