Amibroker can do it as others I am sure like Sierra,etc... with AB, create a watch list of all your tickers,create an AFL code that defines the pattern you want, backtest it, then go live thru scans...Macro code example for triangle...
RightBot=LLV(PrevLo,BotdistFrom);
distfromRightBot=...