Fatti: A. C.C._ e D._ hanno aperto il conto xxx E._ presso la F._ di Lugano, divenuta in seguito A._ SA, affidando un mandato di gestione esterno a G._. Il gestore ha svolto investimenti speculativi conseguendo prima forti utili, poi ingenti perdite. Le perdite erano da ricondurre al fatto che il gestore, approfittando delle modalità particolari d'investimento, una volta effettuate le operazioni allocava sistematicamente le perdite al conto dei clienti, gli utili al suo. La relazione è stata chiusa il 14 maggio 2002. Il 22 agosto 2006 i titolari del conto hanno ceduto alla B._ SA il loro credito verso G._ e la banca depositaria (sul contenuto controverso della cessione si tornerà). B. Il 22 maggio 2013 la B._ SA ha promosso davanti al Pretore di Lugano una causa civile contro la A._ SA chiedendole il pagamento di USD 417'650.41 per risarcimento del danno patrimoniale e fr. 1'263.30 di rifusione di spese esecutive. La convenuta ha chiesto la reiezione della petizione nella misura in cui fosse ricevibile. Il Pretore l'ha accolta integralmente il 23 giugno 2016. La II Camera civile del Tribunale di appello del Cantone Ticino ha respinto, nella misura in cui era ricevibile, l'appello della convenuta con sentenza del 26 ottobre 2017. C. La A._ SA insorge davanti al Tribunale federale con ricorso in materia civile del 27 novembre 2017. Chiede, in riforma della sentenza cantonale, l'accoglimento del proprio appello e la reiezione della petizione; in via subordinata l'annullamento della sentenza e il rinvio degli atti all'autorità cantonale per nuovo giudizio. La B._ SA propone di respingere il ricorso con risposta del 17 gennaio 2018. Ricorrente e opponente hanno presentato una seconda presa di posizione, rispettivamente il 29 gennaio e il 14 febbraio 2018. L'autorità cantonale non si è pronunciata.