Faits : A. Par acte d'accusation du 20 décembre 2019, le Ministère public du canton de Genève a renvoyé A._ en jugement devant le Tribunal correctionnel sous les accusations principales d'escroquerie par métier, complicité d'escroquerie, blanchiment et utilisation frauduleuse d'un ordinateur par métier, en raison des trois complexes de faits suivants: entre 2007 et 2010, alors qu'elle occupait un poste d'assistante comptable dans une banque, elle aurait détourné plus de 1'200'000 fr.; elle aurait par ailleurs mis ses comptes bancaires à disposition d'escrocs dans le cadre d'annonces factices sur des sites de vente, pour un total de l'ordre de 12'400 fr.; elle aurait enfin détourné, de janvier 2017 à mai 2018, plus de 123'000 fr. au préjudice de son nouvel employeur. La prévenue se trouve en détention provisoire depuis le 9 avril 2019 en raison du risque de réitération. Celui-ci a été confirmé par le Tribunal fédéral dans son arrêt du 25 octobre 2019 (1B_480/2019) : la prévenue avait commis de nouvelles infractions alors qu'une procédure pénale était déjà en cours pour des agissements semblables; selon l'expertise psychiatrique, une psychothérapie d'au moins une année en milieu fermé serait nécessaire pour apporter les changements dans le fonctionnement psychique de l'intéressée. B. Par ordonnance du 23 décembre 2019, le Tribunal des mesures de contrainte a prononcé la mise en détention pour des motifs de sûreté jusqu'au 23 mars 2020, en raison des risques de fuite et de réitération. Par arrêt du 9 janvier 2020, la Chambre pénale de recours de la Cour de justice genevoise a rejeté le recours formé par A._, se référant à ses précédents arrêts et considérant que la situation n'avait pas évolué; la poursuite de la psychothérapie en ambulatoire ne suffirait pas à pallier le risque de réitération. Le Tribunal fédéral avait considéré que la détention restait proportionnée et la recourante avait été depuis lors renvoyée en jugement, dont la date avait été arrêtée au 20 avril 2020. C. A._ forme un recours en matière pénale au Tribunal fédéral contre l'arrêt du 9 janvier 2020. Elle conclut, avec suite de frais et dépens, à l'annulation de l'arrêt et à ce que sa liberté immédiate soit ordonnée, le cas échéant, avec des mesures de substitution telles que la saisie de ses documents d'identité, l'interdiction de se rendre à l'étranger, l'obligation de se présenter une fois par semaine à un poste de police, l'obligation de suivre le traitement psychothérapeutique préconisé par l'expert dans son rapport du 13 août 2019 et l'obligation de trouver du travail hors du secteur financier ou comptable. Subsidiairement, elle conclut au renvoi de la cause devant la Chambre pénale de recours afin qu'elle examine le risque de fuite et les mesures de substitution à la détention provisoire qui devraient être, le cas échéant, prononcées. Elle sollicite en outre le bénéfice de l'assistance judiciaire. La cour cantonale se réfère à son arrêt, sans observations. Le Ministère public conclut au rejet du recours. La recourante a déposé de nouvelles observations le 4 février 2020, persistant dans ses conclusions.