Faits :
A.
A.a. B._ SA (ci-après la banque, ou B._) est une banque sise à... (VD) principalement active dans le trading électronique. Elle offre à ses clients un accès aux principaux marchés boursiers du monde via différentes plateformes informatiques (dont P1._ et P2._). La clientèle peut ainsi accomplir en ligne des transactions boursières et opérations de négoce sur devises (Forex) qui découlent de ses propres décisions, ou de celles prises par des mandataires autorisés. La banque elle-même ne fournit aucun service de gestion de fortune, ni conseils en investissement.
Le Forex (FX) est le marché mondial décentralisé où s'échangent les devises à des taux variant en permanence. Le prix de la transaction peut différer selon la plateforme de change utilisée. Les courtiers se rémunèrent en général sur le "spread", c'est-à-dire sur la différence entre les prix d'achat et de vente. Une des caractéristiques essentielles de ce marché est l'effet de levier proposé par les courtiers: cet instrument permet à l'investisseur d'effectuer des opérations sur des montants largement supérieurs aux avoirs déposés sur un compte; la prise de risque est tout aussi élevée.
B._ est dotée d'un système automatique qui liquide les positions ouvertes des clients lorsque l'évolution du taux de change concernant une certaine paire de devises (par exemple la paire euros/francs suisses [EUR/CHF]) prend une tournure trop défavorable. Par ailleurs, les clients peuvent émettre des ordres "stop-loss"enjoignant de vendre la position concernée sitôt atteint le seuil spécifié dans l'ordre.
A.b. Le 30 octobre 2014, A._ (ci-après le client) a ouvert un compte chez B._. Lors de la signature des documents contractuels, il était accompagné par son gestionnaire de fortune G._, à qui il a donné une procuration lui permettant de le représenter dans ses rapports et opérations avec la banque; le mandataire était habilité à demander des paramétrages de levier spécifiques pour les connexions au compte du déposant.
Le contrat d'ouverture de compte conclu par le client précisait que par sa signature, il attestait avoir lu, compris et accepté les "Conditions Générales d'Affaires et Règlements de dépôt" établis par la banque.
Rédigées en français et anglais, ces Règles précisaient notamment ce qui suit:
(...)
2.1.2 Prise de conscience des risques
Le client connaît et accepte les risques résultant des opérations de change et de toutes ses opérations connexes. Le risque de perte dans le tradingen devises étrangères peut être substantiel.
(...)
d) Le haut degré de l'effet de levier souvent obtenu par le trading sur devises et sur métaux précieux peut jouer en faveur ou au détriment du Client en raison de la fluctuation des conditions du marché. Effectuer des transactions boursières dans de telles conditions peut conduire à des pertes importantes ainsi qu['à] des bénéfices dès que le marché fluctue un peu.
Si le marché évolue contre le Client, celui-ci peut subir à la fois la perte totale de son dépôt de marge initiale et de tous les fonds supplémentaires déposés auprès de la Banque, afin de maintenir sa position, mais il pourrait également contracter davantage d'obligations envers la Banque. Le Client peut être appelé à 'reconstituer' sa marge en versant des montants substantiels dans un délai très court pour maintenir sa position, faute de quoi la Banque peut être dans l'obligation de liquider sa position à perte et le Client serait responsable de toutes les pertes qui en résulteraient.
Dans certaines conditions de marché, le Client peut trouver difficile voire impossible de liquider la position ou de fixer un juste prix ou d'évaluer les risques d'exposition. Cela peut arriver, par exemple, en cas d'illiquidité du marché ou lorsqu'il y a une défaillance des systèmes électroniques ou de télécommunications, ou en cas de survenance d'un événement qualifié de 'force majeure'. Placer [...] [d]es 'ordres à seuil de déclenchement' ne limitera pas nécessairement les pertes aux montants prévus, car il peut être impossible d'exécuter ces ordres dans certaines conditions de marché. [...]
[L]e Client doit être conscient que dans certaines conditions de marché, [il] peut [v]oir son ordre exécuté à un prix différent de celui qui a été initialement demandé.
[...]
2.1.5 [...]
Le Client doit verser à la Banque:
[...]
c) des sommes d'argent, pouvant être exigée[s] pour ou vu la liquidation de tout solde débiteur de tout compte. "
Une clause 2.1.19 avertissait encore le client que s'il désignait un mandataire pour gérer ses actifs déposés auprès de la banque, il assumait la pleine responsabilité des actes accomplis par celui-ci. La banque n'avait "aucune obligation d'examiner les instructions du mandataire quant à leur justesse, leur caractère approprié, leur fréquence ou leur étendue". Le client déliait la banque "de toute obligation de fournir de quelconques conseils, informations ou avertissements portant sur les actes ou les omissions du mandataire".
Ce même 30 octobre 2014, le gestionnaire de fortune a signé au nom et pour le compte de A._ un document requérant la mise en place d'un taux de levier ( "Leverage Setup Request"). Invité à choisir le levier désiré ( "Please fill desired leverage for FX major pairs, for example 1:1, 1:10, 1:50, 1:100 etc..."), il a opté pour un taux de 1:100, que la banque proposait par défaut. Celui-ci faisait encourir des risques importants dans la mesure où tout gain, mais aussi toute perte, était centuplé (e). Le formulaire contenait une mise en garde en anglais ( " RISK WARNING ") suivie d'une précision sur les taux par défaut ( "Default Rates"), ayant en substance la teneur suivante:
L'utilisation d'un levier amplifie les effets des mouvements du marché sur votre capital. Un levier élevé permet certes d'augmenter vos profits potentiels, mais accroît aussi de façon significative votre risque de pertes. Plus vous utilisez un levier élevé, plus vous risquez de perdre l'entier de votre investissement en un laps de temps très bref. Vous pouvez même perdre plus que le capital investi.
- B._ fixe des taux de levier par défaut dans son système de négoce ( trading system). Cela ne signifie pas qu'elle vous conseille de les utiliser. Vous devez décider vous-même du levier le plus adapté au risque que vous tolérez.
- En apposant votre signature, vous attestez avoir lu et compris cet avertissement.
Le 5 novembre 2014, la banque a confirmé au client l'ouverture de son compte et lui a fourni les données d'accès ( "Login Details") à la plateforme informatique P2._. Elle rappelait que les investissements et négoces dans les produits à effet de levier tels que le Forex comportaient un haut degré de risques; il devait investir uniquement l'argent qu'il pouvait se permettre de perdre.
A.c. Dès le 18 novembre 2014, le client, via son gestionnaire, a effectué des opérations sur devises.
Le 14 janvier 2015, il détenait des positions EUR/CHF pour un total de quelque CHF 61'000.00. Son gestionnaire avait émis un ordre "stop-loss" à hauteur de CHF 1.196 pour EUR 1.-.
A.d. La Banque Nationale Suisse (BNS) avait institué un taux plancher de CHF 1.20 pour EUR 1.- en septembre 2011. Elle l'a maintenu jusqu'au 15 janvier 2015.
Ce jour-là, entre 10 h et 10 h 30, le taux de change oscillait très légèrement au-dessus de CHF 1.20 pour EUR 1.-.
A 10 h 30, la BNS a annoncé l'abandon du taux plancher. Un vent de panique a soufflé sur les marchés.
Le marché interbancaire a connu un manque de liquidités. Il n'y avait plus de cotations traitables.
A 10 h 41 03', B._ a décidé de suspendre tout négoce sur la paire de devises EUR/CHF, faute de trouver des fournisseurs de liquidités. Elle l'a repris à 11 h 35 32'. Durant ce laps de temps, les ordres " stop-loss " de ses clients n'ont pas pu être exécutés.
Les positions de A._ ont été liquidées à 11 h 38 4', à des cours compris entre CHF 1.02921 et CHF 1.03561 pour EUR 1.-. Vu l'effet de levier de 1:100 qui les assortissait, ce client a subi une perte totale de CHF 405'420.04. Son compte a atteint un solde négatif de - CHF 344'413.75.
La banque lui a vainement demandé de remédier à la situation en versant sur son compte un montant au moins égal au découvert, la première fois le 6 février 2015.
A.e. B._ s'est expliquée sur les événements du 15 janvier 2015 auprès de l'Autorité fédérale de surveillance des marchés financiers (FINMA). Dans une missive du 19 mars 2015, elle a soutenu que seuls les clients ayant accepté le contrat spécial " e-Forex " pouvaient utiliser sa plateforme de trading P1._, tandis qu'un contrat similaire existait pour les autres plateformes de négoce à disposition des clients, dont la plateforme P2._.
A.f. A la demande de B._, F._ SA a analysé comment son système avait fonctionné le 15 janvier 2015. Son rapport du 24 septembre 2015 consigne les conclusions suivantes:
- Le 15 janvier 2015, B._ a décidé d'arrêter le négoce sur les paires de devises incluant le franc suisse après avoir observé une quasi totale disparition des liquidités sur le marché consécutive à l'annonce de la BNS. Les cotations produites par les fournisseurs de liquidités confirmaient que le taux de rejet des offres de transactions avait augmenté de façon exponentielle, pour se normaliser à 11 h 35 seulement.
- Rien n'indiquait que des ordres auraient été exécutés de façon inadéquate au cours de la période examinée, marquée par une volatilité exceptionnelle du marché.
- Il n'y avait aucune trace d'un traitement inéquitable des clients. La seule intervention manuelle avait consisté à arrêter, puis à reprendre le négoce sur les paires de devises impliquant le franc suisse.
A.g. Le 28 septembre 2016, le client a sommé la banque de lui restituer le solde de son compte dans son état au 14 janvier 2015 (soit CHF 61'006.29), augmenté d'un intérêt de 10 %.
Le 19 décembre 2016, son conseil a fait part à la FINMA de soupçons planant sur la banque: le 15 janvier 2015 à 10 h 15, soit 15 minutes avant l'annonce de la BNS, B._ aurait établi un taux de change interne inférieur à CHF 1.1960 pour EUR 1.-, alors que les fournisseurs de liquidités négociaient aux alentours de CHF 1.20. Elle aurait ainsi déclenché les ordres " stop-loss " fixés à CHF 1.1960 mais en aurait retenu illicitement l'exécution, dans l'espoir de vendre plus tard "à gain [...] en cas d'une hausse du cours ([...] forme de ' stop-loss order fishing') ".
B.
B.a. Le 10 juin 2016, la banque a attrait son client en conciliation devant la Chambre patrimoniale du canton de Vaud.
Elle a ultérieurement déposé une demande visant au paiement de 344'414 fr. [sic!] plus intérêts.
Le client a requis le rejet de cette conclusion et exigé reconventionnellement le montant de 61'006 fr. 29.
Un second échange d'écritures a été ordonné. Les parties ont ultérieurement introduit des nova (voir au surplus consid. 15.2 infra).
La banque a produit une expertise judiciaire qu'avaient réalisée les professeurs E1._ et E2._ au sujet des mêmes événements, dans une procédure parallèle impliquant d'autres clients de la banque ayant également donné des ordres "stop-loss". Les experts avaient notamment constaté les faits suivants:
- Un nombre important d'ordres avaient été rejetés par le système de B._ sur la paire EUR/CHF et USD/CHF. Ce fait était imputable non pas à une défaillance du système, mais au manque de liquidités sur le marché interbancaire à partir de 10 h 30 49'.
- Un certain nombre d'ordres déclenchés dans la minute de 10 h 30 n'avaient été exécutés que bien plus tard, faute de cotations traitables sur le marché interbancaire à partir de 10 h 30 48'-10 h 30 49'.
- Au moment où le négoce avait été interrompu, l'euro se trouvait déjà presque à parité avec le franc suisse. Selon toute vraisemblance, liquider à cet instant les positions [des clients concernés par la procédure parallèle] n'aurait pas diminué les pertes.
L'audience des plaidoiries finales s'est tenue le 3 juillet 2019.
La Chambre patrimoniale a rendu son jugement le 10 juillet 2019, qu'elle a communiqué aux parties sous la forme d'un dispositif écrit (art. 239 al. 1 let. b CPC). Elle admettait la demande formée par la banque et condamnait le client à lui verser 344'413 fr. 75 plus intérêts à 5 % dès le 28 avril 2015. La demande reconventionnelle était rejetée.
Le 17 juillet 2019, le client a demandé la motivation écrite du jugement (art. 239 al. 2 CPC), qui a été rendue le 22 mai 2020. La Chambre patrimoniale y développait en substance l'analyse suivante:
- Le client avait ouvert auprès de B._ un simple compte/dépôt bancaire, puis avait conclu avec elle une série de contrats analogues au contrat de vente en effectuant des transactions sur devises (Forex).
Il n'était pas prouvé que la conclusion d'un contrat similaire au contrat "e-Forex" fût indispensable pour utiliser la plateforme P2._, sur laquelle avait opéré le client; il était d'ailleurs bien possible que le contrat signé fût l'un de ces contrats.
- La loi fédérale sur les bourses et le commerce des valeurs mobilières (LBVM; RS 954.1), singulièrement son art. 11 consacrant un devoir d'information, de diligence et de loyauté, ne s'appliquait pas aux transactions sur devises.
Quoi qu'il en fût, le client s'était adjoint les services d'un gestionnaire de fortune professionnel qui n'avait pas besoin d'être renseigné sur les transactions Forex. Au demeurant, la banque l'avait trèsexplicitement averti des risques inhérents aux transactions sur devises avec effet de levier, et il les avait acceptés.
- La banque avait réservé l'éventualité de ne pas pouvoir liquider certaines positions au moment voulu, notamment lorsque le marché était "illiquide"; cette réserve était admissible et l'hypothèse envisagée s'était réalisée.
- Enfin, il n'était pas prouvé que la banque aurait tenté de manipuler les cours en instaurant dans son système interne, le 15 janvier 2015 à 10 h 15, un taux de CHF 1.19547 pour EUR 1.- sans pour autant exécuter les ordres "stop-loss" fixés à CHF 1.196, ce qui constituerait une manoeuvre de "stop-loss order fishing".
B.b. Le client a déposé un appel que le Tribunal cantonal vaudois a rejeté.
C.
Agissant par la voie du recours en matière civile, le client invite le Tribunal fédéral à rejeter la demande principale et à admettre sa demande reconventionnelle par 61'006 fr. 29.
La banque a conclu au rejet, ce qui a déclenché spontanément un second échange d'écritures.
L'autorité précédente s'est référée à son arrêt. L'effet suspensif sollicité à l'appui du recours a été refusé.
Considérant en droit :
1.
Les conditions de recevabilité grevant l'exercice du recours en matière civile sont réalisées sur le principe, notamment celles prescrivant un délai de recours de 30 jours (art. 100 al. 1 LTF en lien avec l'art. 46 al. 1 let. b LTF) et une valeur litigieuse minimale de 30'000 fr. (art. 74 al. 1 let. b LTF en lien avec l'art. 53 al. 1 LTF).
2.
2.1. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (art. 105 al. 1 LTF). Le recourant peut objecter qu'ils ont été retenus de façon manifestement inexacte (c'est-à-dire arbitraire), ou en violation du droit au sens de l'art. 95 LTF. Encore ces éléments doivent-ils être susceptibles d'influer sur le sort de la cause (art. 97 al. 1 LTF).
S'il veut s'en prendre à l'appréciation des preuves, le recourant soulèvera le grief d'arbitraire en expliquant de façon circonstanciée en quoi un tel vice entache le jugement de l'autorité précédente. Du moment qu'il brandit un droit constitutionnel - la protection contre l'arbitraire (art. 9 Cst.) -, il doit satisfaire au principe d'allégation (cf. consid. 2.2 infra; voir par ex. ATF 140 III 264 consid. 2.3 p. 266; 133 II 249 consid. 1.4.3 p. 255).
Pour pouvoir compléter un état de fait lacunaire, le recourant doit démontrer avoir régulièrement introduit en procédure les faits litigieux, en désignant précisément les allégués et offres de preuve présentés, avec référence aux pièces du dossier; à défaut de respecter ces exigences, les faits invoqués sont réputés nouveaux (art. 99 al. 1 LTF), et partant irrecevables (ATF 140 III 86 consid. 2 p. 90).
Les griefs doivent figurer dans l'acte de recours lui-même; un simple renvoi à d'autres écritures, par exemple aux actes cantonaux, est inefficace (ATF 133 II 396 consid. 3.2 i.f.; cf. ATF 129 I 113 consid. 2.1 i.f.).
Ces considérations conduisent déjà à écarter le "bref rappel des faits" effectué en pages 7 à 9 du recours, si d'aventure il devait diverger des constatations de l'autorité précédente; en effet, ces éventuelles discordances ne reposent sur aucun grief dûment motivé.
2.2. Le recours en matière civile peut être formé pour violation du droit fédéral (art. 95 let. a LTF), que l'autorité de céans applique en principe d'office. Eu égard, toutefois, à l'exigence générale de motivation énoncée à l'art. 42 al. 2 LTF, l'autorité de céans n'examine que les griefs soulevés, sauf en cas d'erreurs juridiques manifestes (ATF 140 III 115 consid. 2 p. 116). La dénonciation d'une violation des droits constitutionnels doit répondre à des exigences plus strictes: le principe d'allégation ( Rügeprinzip, principio dell'allegazione) impose au recourant d'indiquer quel droit constitutionnel a été violé et d'expliquer par le détail en quoi consiste la violation (art. 106 al. 2 LTF; ATF 134 II 244 consid. 2.2; 133 II 396 consid. 3.2).
3.
3.1. Le recourant recense plusieurs violations de son droit d'être entendu (art. 29 al. 2 Cst.). Les juges cantonaux auraient notamment prétexté une motivation insuffisante pour écarter sans ambages "une grande partie" de son mémoire d'appel - soit 87 "allégués" présentés à titre liminaire -, et "l'entier" de sa réplique spontanée.
Il précise avoir consacré la première partie de son appel (pages 2 à 13), intitulée "Faits", à recenser "point par point" toutes les erreurs de fait et de droit censées entacher le jugement de première instance. Puis, dans une section "Droit" développée en pages 14 à 28 du mémoire, il a tiré "ses conclusions par rapport aux différents griefs [...] de fait et de [...] droit, en reprenant les [...] sous-titres utilisés" dans la rubrique "Faits".
3.2. Ce faisant, le recourant admet avoir présenté ses critiques de fait et de droit dans un préambule inopportunément dénommé "Faits", puis les avoir répétées, en les étayant, dans la seconde partie de son mémoire. Cette précision dispense la cour de céans de vérifier si le recourant a bien reporté tous ses griefs dans la seconde partie de son appel; il eût dû, le cas échéant, plaider le contraire. Il n'y a là nul formalisme excessif. N'en déplaise au recourant, la prohibition d'un tel rigorisme, déduite de l'art. 29 al. 1 Cst., n'est pas un sésame permettant d'esquiver les exigences de motivation - qu'elles émanent de l'art. 311 al. 1 CPC ou de la LTF. Le justiciable (respectivement son défenseur) a l'avantage de connaître le dossier de fond en comble. Aussi peut-on raisonnablement exiger qu'il fournisse à l'autorité de recours les références nécessaires et lui épargne une recherche fastidieuse dans le dossier; l'efficacité de la procédure s'en trouve améliorée (voir par ex. arrêt 4A_467/2020 du 8 septembre 2021 consid. 2.5.1 et 2.5.2).
S'ils ont pu laisser accroire qu'ils écartaient en vrac les griefs présentés une première fois dans la partie "Faits" (au motif qu'ils étaient insuffisamment motivés), les juges d'appel ont ensuite précisé qu'ils traiteraient les moyens de fait et de droit formulés dans la seconde partie de l'appel. Tout au plus ont-ils réservé les critiques irrecevables sous l'angle de l'art. 311 al. 1 CPC. La cour de céans ne recherchera pas d'office quels peuvent être les griefs concernés; il incombait au recourant de les lui indiquer en dénonçant une éventuelle violation du droit fédéral.
Le recourant reproche encore aux juges cantonaux d'avoir ignoré "l'entier" de sa réplique déposée spontanément. En réalité, ils ont dit prendre en considération les seuls griefs présentant un lien avec l'appel, la réplique n'étant pas vouée à compléter une motivation insuffisante, ni à introduire des arguments nouveaux après l'expiration du délai d'appel. Sur le principe, cette réserve est conforme à la pratique (ATF 142 III 413 consid. 2.2.4 p. 417). Le recourant n'avait d'autre issue que de pointer quels arguments auraient le cas échéant été écartés au mépris de cette jurisprudence. Or, il s'est pour l'essentiel gardé de le faire (au surplus, voir consid. 14.3.2 infra).
4.
Le litige s'articule autour de ces cinq axes:
I. La qualification de la relation contractuelle et le régime juridique applicable.
II. Le devoir d'information et de diligence pesant sur la banque.
III. Le droit de liquider la position du recourant sans l'avoir consulté.
IV. La thèse d'une manipulation frauduleuse de la banque.
V. Le principe de célérité.
Soucieuse de conserver une certaine clarté dans la présente cause, la cour de céans examinera les moyens du recourant (en fait et en droit) dans l'ordre de ces thématiques, plutôt que de suivre la trame décousue de l'arrêt attaqué et du recours, dont certains passages semblent tout droit sortis d'un logiciel de traduction automatique allemand-français. Les conseils du recourant ne craignent pas les redondances, dont ils devraient pourtant savoir qu'elles ne peuvent cimenter un grief inconsistant.
I. Qualification de la relation contractuelle et régime juridique applicable
Les magistrats vaudois ont considéré que les parties s'étaient liées par un contrat de dépôt bancaire de type execution only, puis par une série de contrats analogues au contrat de vente, lorsque le recourant avait passé des transactions sur devises avec la banque elle-même.
5.
5.1. Le recourant déplore que la banque ne lui ait pas fait signer un contrat de type "e-Forex", dont elle a pourtant expliqué à la FINMA qu'il était une condition sine qua non d'accès aux plateformes du marché Forex. Ce "document-clé" aurait pu le renseigner d'une part sur la nature du lien contractuel l'unissant à la banque, d'autre part sur les risques particuliers des transactions Forex et de l'effet de levier. La Cour d'appel aurait violé son droit d'être entendu en ne traitant pas entièrement son grief, aurait constaté les faits de façon arbitraire et tiré des déductions juridiques erronées.
5.2. Selon la Chambre patrimoniale, le contrat "e-Forex" concernait une autre plateforme (P1._) que celle utilisée par le recourant (P2._). Or, il n'avait pas démontré qu'un tel contrat - ou un contrat analogue - fût indispensable pour accéder à cette dernière. Au demeurant, il avait signé une convention qui pouvait fort bien être l'un de ces contrats.
La Cour d'appel a certes commencé par reprocher au recourant de lui avoir soumis une motivation insuffisante, et partant irrecevable. Elle a néanmoins traité le grief à satisfaction de droit. Elle n'a pas fait mystère du courrier envoyé à la FINMA le 19 mars 2015 (let. A.e supra), puis a confirmé que le recourant utilisait la plateforme P2._, de sorte que la banque n'avait pas à lui remettre un contrat "e-Forex" ou une convention similaire. Elle a également validé l'analyse des premiers juges quant à la nature des relations contractuelles et a exclu toute violation du devoir d'information.
Au niveau des faits, on relèvera que le recourant ne nie pas avoir utilisé la plateforme P2._ tandis que le contrat " e-Forex " régissait la plateforme P1._. Il reste à rechercher d'éventuelles violations du droit fédéral en lien avec la nature des relations nouées et le devoir d'information pesant sur la banque.
5.3. Le recourant regrette de ne pas avoir bénéficié de la précision apportée par le contrat " e-Forex ", selon laquelle la banque intervenait en tant que contrepartie du client et, partant, comme fournisseur de liquidités plutôt que comme commissionnaire.
Les experts E1._ et E2._ ont bien constaté que le contrat " e-Forex " fournissait une telle information, dont on ne trouve apparemment pas trace dans les clauses convenues avec le recourant. De là à déduire qu'un contrat de commission aurait lié les parties, il y a un pas qu'on ne saurait franchir. Le recourant n'a pas allégué ni établi que la banque aurait été chargée d'agir en son propre nom mais pour son compte à lui, comme l'a fait observer la Chambre patrimoniale. Ce dernier point n'a suscité aucun grief dans le présent recours (ni, apparemment, au stade de l'appel). Le recourant ne conteste pas qu'il avait la charge d'alléguer le rôle de représentant indirect éventuellement tenu par la banque; il ne prétend pas non plus avoir établi que la banque se rémunérait au moyen de commissions. On gardera aussi à l'esprit que le recourant était assisté par un gestionnaire réputé au fait du rôle joué par ce type de banque.
En bref, la prétendue lacune dont souffrirait le contrat - quant à l'intervention de la banque en qualité de "contrepartie" - n'a pas les conséquences que le recourant voudrait lui attribuer, et ne suffit pas à contrecarrer l'analyse selon laquelle les transactions sur devises représentaient des contrats de vente, ou analogues à la vente (cf. arrêt précité 4C.152/2002 consid. 2.1; voir aussi arrêt C.349/85 du 16 janvier 1986 consid. 1, in SJ 1986 p. 383; CARLO LOMBARDINI, Droit bancaire suisse, 2e éd. 2008, p. 722-723 spéc. n. 22).
5.4. Il reste à traiter le grief concernant le devoir d'informer quant aux risques entourant l'effet de levier; cette question sera examinée plus loin (consid. 8).
6.
6.1. Le recourant prétend avoir convenu d'un contrat de conseil en placements. II déduit cette thèse de la prémisse selon laquelle l'intimée lui aurait imposé un effet de levier par défaut, ce qui reviendrait à prodiguer un conseil.
6.2. Au niveau factuel, le recourant conteste avoir choisi un effet de levier.
Les juges vaudois ont constaté d'une part que la banque offrait par défaut un effet de levier de 1:100, et d'autre part que le gestionnaire du recourant avait choisi un tel ratio, alors qu'il eût pu opter pour un effet de levier inférieur, voire renoncer à un tel effet. Ils se sont référés au document " Leverage Setup Request ". La lecture de celui-ci (cf. let. A.b supra) exclut toute velléité de reprocher un arbitraire aux magistrats vaudois. Que l'effet de levier soit une caractéristique essentielle des échanges Forex ne signifie pas encore que la banque ait imposé un certain ratio, voire même l'utilisation d'un levier; la pièce précitée invite très clairement le client à choisir un ratio, en suggérant à titre d'exemples un levier de 1:1, 1:10, 1:50, soit des rationes moindres que celui désigné par le gestionnaire du recourant.
6.3. Ces considérations privent d'assise la thèse d'un contrat de conseil en placements (sur cette notion et celle du dépôt de type " execution only ", voir par ex. ATF 133 III 97 consid. 7.1; arrêt 4A_54/2017 du 29 janvier 2018 consid. 5.1). D'autant plus que selon l'arrêt attaqué, la banque n'offrait ni service de gestion de fortune Forex, ni conseils en investissement.
7.
Le recourant voudrait s'appuyer sur l'art. 11 LBVM, ne serait-ce que par analogie.
Les raisons de confirmer l'analyse des juges vaudois seront exposées ci-dessous (consid. 9).
Enfin, peuvent être balayées d'un revers de main les plaintes selon lesquelles le recourant n'aurait pas compris les documents signés, faute de parler le français et l'anglais, respectivement aurait convenu avec son gestionnaire de limiter les risques de pertes à 50 % du capital investi. Il tient à ce sujet des propos appellatoires sans satisfaire aux exigences de motivation.
II. Devoir d'information et de diligence pesant sur la banque
Les juges cantonaux ont considéré que la banque, vu les relations nouées avec le recourant (simple dépôt et contrats de vente), n'avait envers lui qu'un devoir d'information restreint; elle répondait tout au plus d'un comportement conforme à la bonne foi (art. 2 CC). Or, aucun manquement à cette obligation générale ne pouvait lui être reproché. Les clauses 2.1.2 et 2.1.5 du contrat explicitaient suffisamment le fonctionnement du système, et le document "Leverage Setup Request" renseignait encore sur les risques inhérents à l'effet de levier. Le gestionnaire professionnel du recourant s'était dit conscient de l'ampleur des risques pris. Par ailleurs, la LBVM était inapplicable.
8.
8.1. La Cour d'appel aurait versé dans la contradiction, et donc dans l'arbitraire, en tenant pour crédibles les déclarations du gestionnaire de fortune lorsqu'elles se rapportaient à la connaissance des risques encourus, tout en les écartant lorsqu'elles étayaient la thèse d'une manipulation frauduleuse.
8.2. Il n'est assurément pas insoutenable d'apprécier un témoignage à l'aune des questions posées et de prendre en considération l'enjeu que chacune d'elles représentait pour le témoin. Il serait au demeurant incongru qu'un gestionnaire professionnel prétende ne pas avoir compris le risque généré par un effet de levier, d'autant plus que la banque avait donné des renseignements explicites à ce sujet.
En bref, il n'y a pas matière à rectifier le constat selon lequel le gestionnaire du recourant avait compris les risques encourus, notamment ceux inhérents à l'effet de levier.
8.3. En concluant que, dans ce type de relations contractuelles, la banque avait clairement et suffisamment mis en garde le recourant - épaulé par un gestionnaire professionnel - quant au fonctionnement des ordres "stop-loss"et aux risques entourant l'effet de levier, la Cour d'appel n'a manifestement pas enfreint le droit fédéral. Le simple bon sens veut d'ailleurs que les risques de pertes soient proportionnels aux perspectives de profits. Enfin, aucune circonstance particulière ne fondait, à charge de la banque, un devoir de s'assurer que le gestionnaire avait informé son client des risques encourus - d'autant moins que l'intéressée avait inséré une clause la libérant d'une telle obligation (art. 2.1.19, let. A.b supra).
Partant, il importait peu que la banque n'eût pas fait signer au recourant un contrat de type "e-Forex". On relèvera au passage la ressemblance singulière entre la clause 2.1.2 insérée dans le contrat du recourant et l'art. 4.13 iv) du contrat "e-Forex" tel que cité dans l'état de fait de l'arrêt 4A_54/2021 du 28 octobre 2021.
9.
9.1. Prônant une application de la LBVM, le recourant croit pouvoir déduire de son art. 11 une obligation d'informer plus exigeante que celle déduite de l'art. 2 CC.
9.2. La LBVM a été abrogée le 1er janvier 2020 (RO 2018 5270). Le recourant concède à l'autorité précédente qu'il faut appliquer cette ancienne réglementation qui était encore en vigueur au moment des faits litigieux. Le Conseil fédéral avait précisé dans son Message du 24 février 1993 que s'agissant des devises, métaux précieux et autres matières premières, la LBVM visait les seuls instruments dérivés, à l'exclusion des contrats de base (FF 1993 I 1296 avant ch. 212.2); les juges vaudois s'y sont référés. La doctrine avait elle aussi précisé que les opérations au comptant sur devises n'étaient pas soumises à la LBVM (HUBER/HSU, in Basler Kommentar, Börsengesetz [...], 2e éd. 2011, n° 16 ad art. 2 let. d aLBVM; PETER NOBEL, Schweizerisches Finanzmarkrecht [...], 3e éd. 2010, p. 658 n. 38; LOMBARDINI, op. cit., p. 18 n. 16 et p. 22 n. 28 i.f.; DIETER ZOBL, in Kommentar zum Bundesgesetz über die Börsen und den Effektenhandel, [HERTIG ET ALII éd.] 2000, no 25 ad art. 2 let. a aLBVM). Elle le soutient aussi sous l'empire des nouvelles réglementations (cf. DAENIKER/WALLER, in Basler Kommentar, FINMAG/FinfraG, 3e éd. 2019, n° 13 ad art. 2 let. b LIMF). Le recourant ne plaide pas que les opérations litigieuses concerneraient des produits dérivés, ce qui coupe court à toute discussion.
De surcroît, la cour de céans avait précisé, en lien avec l'ancien art. 11 LBVM, que le devoir d'information et de conseil dépendait des connaissances et de l'expérience du client et n'existait pas en présence d'un client expérimenté (arrêt précité 4A_54/2017 consid. 5.3.2). Le recourant doit y être assimilé puisqu'il était assisté par un gestionnaire de fortune professionnel ayant de son propre aveu identifié les risques.
9.3.
9.3.1. Dans la foulée, le recourant plaide qu'il eût fallu appliquer les "Règles de conduite pour négociants en valeurs mobilières applicables à l'exécution des opérations sur titre", que l'Association Suisse des Banquiers (ASB) avait élaborées en 1997, puis révisées en 2008, avant de les abroger avec effet au 31 décembre 2021.
Le recourant pointe les aspects suivants de ces règles professionnelles:
- Elles concrétisaient l'art. 11 LBVM (cf. CHAPPUIS/WERRO, Le devoir d'information de l'article 11 LBVM [...], PJA 2005 p. 563).
- Le négociant qui optait pour une information standardisée devait délivrer l'information de la même manière à tous les clients, en adoptant la prémisse qu'ils étaient inexpérimentés (cf. CHAPPUIS/WERRO, op. cit., p. 570; ATF 133 III 97 consid. 5.3).
- Lorsque le client était assisté par un gérant de fortune professionnel, le négociant devait impérativement attirer l'attention de ce dernier sur son devoir d'information à l'égard du client et documenter ce fait.
9.3.2. La thèse du recourant se heurte déjà à un premier récif: selon leur Préambule, ces règles concrétisaient bel et bien l'art. 11 LBVM, lequel n'a pas vocation à s'appliquer dans notre cas (consid. 9.2 supra). Aussi la cour de céans peut-elle s'épargner d'examiner les questions délicates concernant la portée desdites règles (cf. arrêts 4C.385/2006 du 2 avril 2007 consid. 4.2.3; 4C.45/2001 du 31 août 2001 consid. 4a; ATF 125 IV 139 consid. 3d i.f. p. 145; CHAPPUIS/WERRO, op. cit., p. 563; BERNHARD BERGER, Die Informationspflicht des Effektenhändlers nach der Richtlinie der Schweizerischen Bankiervereinigung, RSDA 2001 p. 70 s.), respectivement leur caractère notoire - d'autant moins évident qu'elles n'ont plus cours.
Le rejet de ce dernier grief clôt le chapitre consacré au devoir d'information et de diligence.
III. Droit de liquider la position du recourant sans l'avoir consulté
Le recourant croit déceler plusieurs raisons de dénier un tel droit à la banque.
10.
10.1. La banque s'était vantée, sur son site Internet, de proposer un "modèle économique assur[ant] des liquidités constantes", offrant aux clients des " spreads stables" et de meilleures conditions d'exécution "par rapport aux plateformes...". Une telle publicité la priverait du bénéfice d'une clause contractuelle la dispensant d'assurer la fourniture de liquidités en tout temps.
10.2. L'arrêt attaqué a évoqué cette annonce lorsqu'il a résumé l'expertise E1._/E2._ rendue dans une autre procédure. L'état de fait ne souffre donc d'aucune lacune à cet égard.
Reste à savoir si une telle publicité pouvait tenir en échec la clause réservant les cas où les conditions du marché - le manque de liquidités ou une défaillance des systèmes électroniques, entre autres - rendaient impossible l'exécution des ordres, respectivement exposaient le client au risque que ses ordres fussent exécutés à un prix différent de celui demandé (art. 2.1.2 cité supra let. A.b). Une réponse affirmative s'impose, bien évidemment. Que le client ait pu être appâté par une telle annonce est une chose (ce qui reste à démontrer dans le cas du recourant). Les conditions contractuelles qu'il a acceptées en sont une autre. Or, seules celles-ci déterminent le régime applicable.
11.
11.1. L'autorité précédente a jugé que les art. 2.1.2 et 2.1.5 du contrat habilitaient la banque, de façon suffisamment explicite, à interrompre son négoce en raison du manque de liquidités sur le marché, et à liquider les positions du recourant sans le consulter.
La lecture des extraits desdites clauses publiés dans les décisions cantonales - singulièrement de l'art. 2.1.2 let. d - corrobore cette analyse. Y sont notamment évoqués l'impossibilité d'exécuter les ordres "à seuil de déclenchement" dans certaines conditions du marché, notamment en cas d'"illiquidité", respectivement le risque pour le client de voir son ordre exécuté à un prix différent de celui demandé.
Le recourant se borne à invoquer un autre passage de la clause précitée, avertissant le client qu'il pourra être appelé à reconstituer sa marge en versant des sommes substantielles dans un délai très bref, faute de quoi la banque pourra être amenée à liquider sa position à perte.
La cour de céans a déjà expliqué que les transactions avec effet de levier supposent un crédit de la banque: le client peut acquérir des " positions" pour des montants excédant les actifs dont il dispose. La différence est financée par la banque, qui exigera une couverture appropriée en matière de fonds propres (marge) afin de limiter ses risques en cas d'insolvabilité du client. Dès lors que la marge est instituée dans l'intérêt de la banque, le client ne saurait lui tenir rigueur de se contenter d'une marge insuffisante (arrêt 4A_450/2010 du 21 décembre 2010 consid. 5.2.1).
Le recourant mélange en réalité deux thématiques distinctes lorsqu'il croit pouvoir déduire de l'extrait litigieux que la banque devait le consulter avant de liquider sa position. En effet, il s'agissait ici de savoir à quel moment devait être exécuté l'ordre "stop-loss", respectivement de déterminer si la banque engageait sa responsabilité pour les pertes liées à l'exécution tardive de cet ordre. En considérant que la banque s'était réservé un tel droit dans les clauses générales, la Cour d'appel n'a pas enfreint le droit fédéral.
11.2. Il reste ainsi à déterminer si la banque pouvait se prévaloir d'une situation spéciale justifiant de suspendre le négoce des devises, puis de liquider la position du recourant à un taux inférieur à celui demandé.
La cour cantonale a constaté qu'après l'annonce de la BNS, il n'y avait quasi plus de liquidités sur le marché. Il était légitime d'interrompre le système entre 10 h 41 03' et 11 h 35 32', et la liquidation des ordres " stop-loss ", qui étaient des ordres "au mieux", ne prêtait pas le flanc à la critique.
On ne discerne nulle once d'arbitraire dans cette appréciation, fondée au premier chef sur l'expertise E1._/E2._ qui était partiellement corroborée par le rapport de F._ SA quant au manque de liquidités. Le recourant tente vainement d'écarter ce rapport-ci et le témoignage d'un de ses coauteurs (sans indiquer quels propos précis seraient visés), sous le prétexte qu'il a été commandé par la banque. Si cet élément n'est pas nié, il ne conduit pas nécessairement à écarter en vrac tous les propos du rapport - a fortiori lorsqu'ils sont corroborés, comme en l'espèce, par une expertise judiciaire. D'autant qu'on peut inférer de celle-ci qu'une exécution de l'ordre avant l'interruption du système n'aurait très vraisemblablement pas conduit à limiter les pertes des clients, l'euro et le franc suisse se trouvant alors déjà presque à parité (let. B.a. supra).
12.
Le recourant brandit encore la théorie de l'imprévision en lien avec l'abandon du taux plancher.
A l'instar des premiers juges, la Cour d'appel a considéré qu'au moment de conclure le contrat, l'abandon du taux plancher par la BNS n'était pas un événement objectivement imprévisible. En revanche, on ne pouvait pas prédire que cet événement surviendrait le 15 janvier 2015 à 10 h 30; l'annonce de la BNS avait pris les marchés par surprise, entraîné un mouvement de panique et occasionné une situation exceptionnelle.
Les constatations factuelles des magistrats vaudois sont exemptes d'arbitraire. Elles ont intégré les annonces de la BNS au fil des ans, jusqu'au 15 janvier 2015. Fondé sur ces prémisses qui lient l'autorité de céans, le refus d'appliquer la théorie de l'imprévision ne contrevient pas au droit fédéral. Le recourant ne fait que répéter des griefs rejetés par une motivation convaincante. Il tente vainement d'opposer son inexpérience aux connaissances techniques de la banque, en passant sous le tapis le fait qu'il était épaulé par un gestionnaire professionnel. Que la banque ait déclaré à la FINMA avoir "analysé à maintes reprises la nécessité de réduire ou non les niveaux de levier accordés à la clientèle concernant la paire EUR/CHF" ne modifie en rien l'analyse précitée. La panique qui a saisi les marchés est suffisamment éloquente.
13.
En bref, le recourant échoue à asseoir sa thèse selon laquelle la banque aurait exécuté son ordre " stop-loss " et liquidé ses positions en violation du régime contractuel.
IV. Thèse d'une manipulation frauduleuse de la banque
14.
14.1. Le recourant reproche encore aux juges cantonaux d'avoir arbitrairement fait fi des preuves censées conforter ses propos selon lesquels la banque aurait manipulé des ordres " stop-loss " ( "stop-loss order fishing").
Sa thèse est la suivante:
Dans le quart d'heure précédant l'annonce de la BNS le 15 janvier 2015 à 10 h 30, l'intimée aurait effectué deux manipulations:
- Tout d'abord, elle aurait fixé manuellement dans son système interne un cours à CHF 1.19547 pour 1 EUR, alors qu'il gravitait aux alentours de CHF 1.20 sur les autres marchés.
Cette manoeuvre aurait eu pour effet de déclencher les ordres " stop-loss " fixés à CHF 1.196 pour EUR 1.-.
- L'intimée aurait alors manuellement empêché l'exécution de ces ordres.
Elle espérait revendre plus tard ces positions et réaliser un gain, en se retranchant derrière l'automatisme de vente inhérent aux ordres " stop-loss ".
14.2. La thèse du recourant est exposée dans le courrier du 19 décembre 2016 adressé à la FINMA, dont l'arrêt attaqué se fait l'écho. Aussi l'intéressé ne saurait-il reprocher aux juges cantonaux de n'avoir pas "expliqué" sa thèse - ou de ne l'avoir pas correctement appréhendée, comme pourrait l'insinuer le grief.
14.3.
14.3.1. La Cour d'appel aurait en outre violé son droit d'être entendu en omettant de discuter ses arguments sous le couvert fallacieux d'une motivation insuffisante.
14.3.2. Les premiers juges avaient sobrement exclu l'hypothèse d'une manipulation au motif qu'elle n'était pas prouvée.
Quant à l'autorité précédente, elle a reproché au recourant d'avoir insuffisamment motivé son grief en renvoyant en vrac aux faits concernant la manipulation, au témoignage de son gestionnaire ainsi qu'à trois pièces volumineuses.
Cela étant, la Cour d'appel a écarté les déclarations du gestionnaire au motif qu'il avait un intérêt à l'issue du litige. Celui-ci est évident, de sorte qu'une telle appréciation n'a rien d'insoutenable. Le recourant invoque un faux dilemme lorsqu'il laisse entendre que la cour cantonale devait soit accepter en bloc le témoignage litigieux, soit le rejeter d'un seul trait (consid. 8.2 supra).
Il fait aussi grand cas des éléments soulevés dans sa réplique spontanée. Décidément rétif au respect des exigences de motivation, il se borne à opérer un renvoi à cette écriture. Peut-être espère-t-il ainsi occulter l'inanité de sa défense: car si l'on prend la peine de lire cette écriture, on y trouve essentiellement des propos répétés ad libitum sur la crédibilité du témoin, avec un renvoi aux graphiques qui seront évoqués ci-dessous. Rien de nouveau, donc.
En bref, nulle violation du droit d'être entendu, respectivement nul arbitraire ne peuvent être retenus en lien avec ce témoignage.
14.4. Le recourant, il est vrai, s'était aussi référé en appel à des pièces 11 à 13 contenant deux graphiques tenant sur une page, censés établir une manipulation du cours interne avant 10 h 30.
De façon peu compréhensible, la Cour d'appel a refusé d'entrer en matière en invoquant le volume des pièces et l'absence de références précises. A lire l'appel, on ne voit pas de quelles pièces il pourrait s'agir, sinon des deux graphiques. La cour cantonale n'a pas jugé bon de s'exprimer à ce sujet.
Ceci dit, constater cette incongruité ne mène pas pour autant le recourant à bon port. Les premiers juges ont considéré les moyens de preuve comme inopérants, et rien n'indique qu'ils aient omis de prendre en compte ces graphiques. En outre, si le droit d'être entendu est d'ordre formel, il ne constitue pas une fin en soi (cf. ATF 143 IV 380 consid. 1.4.1; arrêt 4A_558/2021 du 28 février 2022 consid. 3.1). Or, la consultation de ces pièces difficilement lisibles permet d'exclure clairement une violation de ce droit constitutionnel, tant il est vrai que les graphiques produits ne sauraient suffire à étayer la thèse du recourant, même en portant une appréciation libre comme peut le faire une cour d'appel.
14.5. Le recourant abat une dernière carte en brandissant le rapport de F._ SA - qui ne serait au surplus pas crédible, parce que commandé par l'intimée. Cette fiduciaire aurait mis en lumière "un nombre impressionnant de trous noirs" et recensé non moins de 153 anomalies nécessitant une nouvelle analyse. La société précitée a certes formulé une telle remarque dans le chapitre intitulé "Exécution d'ordres adéquate" (p. 33 du rapport) et la copie du rapport produite sous numéro 14 du bordereau semble effectivement avoir été censurée en page 34. Mais le recourant se garde bien d'expliquer par quel revers logique la fiduciaire a finalement conclu à une exécution adéquate des ordres, respectivement à un traitement équitable des clients. Emettre des soupçons de partialité fondés sur la simple existence d'un rapport de mandat est bien évidemment insuffisant à cet égard.
D'autant plus qu'on ignore tout des suites que la FINMA a données au courrier du 19 décembre 2016, dans lequel le conseil du recourant révélait ses soupçons. Que cette autorité de surveillance n'ait apparemment trouvé aucun indice étayant la prétendue manipulation pèse d'un poids certain dans l'appréciation des preuves. Il restait au recourant la possibilité de mettre en oeuvre une expertise judiciaire, qu'il n'a pas utilisée, probablement conscient des aléas entourant sa version.
Dans ce contexte, il importe peu que la FINMA juge illicites les pratiques de "stop-loss order fishing". Le grief d'une prétendue énième violation du droit d'être entendu s'en trouve privé d'objet.
V. Principe de célérité
15.
Dans un ultime grief, le recourant dénonce la durée excessive prise pour la procédure de première instance. "D'une manière générale", il juge anormal l'intervalle de quatre ans qui sépare l'introduction de la demande du jugement. Il pointe deux périodes sensibles: celle "entre l'achèvement d'écritures et l'audience principale" du 3 juillet 2019, d'une part, et celle entre cette séance et le jugement motivé du 22 mai 2020, d'autre part.
Il sied de rappeler les principes gouvernant la matière.
15.1. L'art. 29 al. 1 Cst. et l'art. 6 ch. 1 CEDH (RS 0.101) garantissent à toute personne impliquée dans une procédure judiciaire que sa cause soit jugée "dans un délai raisonnable" ( innert angemessener Frist / entro un termine ragionevole). Ces deux dispositions consacrent le principe de célérité ( Beschleunigungsgebot / principio di celerità; voir aussi l'art. 124 al. 1 CPC).
La pratique suisse, à l'instar de la Cour européenne des droits de l'homme (Cour EDH), préconise une approche pragmatique fondée sur les circonstances du cas concret. Plutôt que d'imposer des règles rigides, elle énonce les critères permettant d'apprécier si la durée du procès doit être qualifiée d'excessive ( au niveau de la Cst. suisse, ATF 144 II 486 consid. 3.2; 135 I 265 consid. 4.4; 130 I 312 consid. 5.1 et 5.2; MALINVERNI ET ALII, Droit constitutionnel suisse, vol. II, 4e éd. 2021, n. 1408 ss; GEROLD STEINMANN, in Sankt Galler Kommentar, Die Schweizerische Bundesverfassung, 3e éd. 2014, nos 22 ss ad art. 29 Cst.; BERNHARD WALDMANN, in Basler Kommentar, Bundesverfassung, 2015, nos 27-29 ad art. 29 Cst.; au niveau de la CEDH, affaire Petrella c. Italie du 18 mars 2021, requête 24340/07, n. 40; affaire König c. Allemagne du 28 juin 1978, Série A n° 27, n. 99 et 111; pour un exposé approfondi, MARC-ANDRÉ EISSEN, La durée des procédures civiles et pénales dans la jurisprudence de la Cour européenne des Droits de l'Homme, 1996, p. 20 ss; KARPENSTEIN/MAYER, Konvention zum Schutz der Menschenrechte und Grundfreiheiten, Kommentar, 3e éd. 2022, nos 86 ss ad art. 6 CEDH; MARK VILLIGER, Handbuch der Europäischen Menschenrechtskonvention [...], 3e éd. 2020, n. 526 et 531 ss; MEYER-LADEWIG ET ALII, EMRK, Handkommentar, 4e éd. 2017, nos 199 ss ad art. 6 CEDH; FROWEIN/PEUKERT, EMRK-Kommentar, 3e éd. 2009, nos 248 ss ad art. 6 CEDH).
Ces jalons sont les suivants:
- L'étendue et la complexité de l'affaire, tant au niveau factuel que juridique. L'ampleur des allégations peut jouer un rôle (VILLIGER, op. cit., n. 533).
- La nature de la procédure et son enjeu pour le justiciable.
Les exigences de célérité sont en principe plus strictes dans un procès pénal que dans un procès civil (EISSEN, notamment, cite des cas justifiant une diligence particulière [op. cit., p. 23-25]).
- Le comportement des parties et celui de l'autorité.
Dans un procès civil gouverné par la maxime de disposition, les parties ont une responsabilité plus grande dans l'avancement du procès. Le magistrat n'est pas pour autant dispensé d'assurer la célérité voulue par l'art. 6 CEDH (VILLIGER, op. cit., n. 536 s.; EISSEN, op. cit., p. 28).
En fin de compte, il faut apprécier si le retard est objectivement justifié ou non. Le dépassement d'un délai prescrit par une disposition légale (concernant par exemple la notification du jugement motivé) n'est pas de facto synonyme d'une violation de l'art. 6 CEDH, mais peut fournir un indice en ce sens ou être pris en compte dans l'appréciation (FROWEIN/PEUKERT, op. cit., n° 250 ad art. 6 CEDH; EISSEN, op. cit., p. 34 n. 43; WALDMANN, op. cit., n° 27 ad art. 29 Cst., y voit même une présomption réfragable).
En Suisse, les différents Codes de procédure prévoient un recours pour retard injustifié (art. 319 let. c CPC; art. 393 al. 2 let. a CPP [RS 312]; art. 46a PA [RS 172.021]; art. 94 LTF). Quoi qu'il en soit, l'Etat ne peut exciper d'une organisation déficiente ou d'une surcharge de travail, à tout le moins lorsqu'elle est structurelle: il doit organiser ses juridictions de façon à répondre aux exigences de l'art. 6 ch. 1 CEDH (ATF 130 I 312 consid. 5.2; affaire Werz c. Suisse du 17 décembre 2009, requête 22015/05, n. 43 s.; MALINVERNI ET ALII, op. cit., n. 1414; EISSEN, op. cit., p. 35 s.).
Pour la Cour EDH, la violation du principe de célérité dans une procédure civile conduit habituellement à dédommager le justiciable; à titre exceptionnel, le simple constat de la violation peut suffire (KARPENSTEIN/MAYER, op. cit., n° 95 ad art. 6 et nos 15 et 23 ad art. 41 CEDH; VILLIGER, op. cit., n. 544; MEYER-LADEWIG ET ALII, n° 210 ad art. 6 et n° 26 ad art. 41 CEDH). Selon la jurisprudence suisse, le justiciable qui forme un recours pour dénoncer un retard dans une procédure pendante peut espérer obtenir une injonction de statuer sans délai, ou de fixer un délai plus approprié (ATF 117 Ia 336 consid. 1b). S'il attend le prononcé du jugement pour se plaindre, il pourra tout au plus faire constater la violation du principe de célérité, ce qui influera éventuellement sur les frais et dépens. En outre, l'Etat peut voir sa responsabilité engagée pour acte illicite (ATF 130 I 312 consid. 5.3; arrêts 4A_616/2020 du 6 mai 2021 consid. 5.2.1 et 4A_271/2015 du 29 septembre 2015 consid. 4).
La Cour européenne doit parfois se prononcer sur le temps pris entre le prononcé du jugement et la notification des considérants. Dans une procédure pénale bernoise revêtue d'"une certaine complexité", elle a jugé excessif l'intervalle de 15 mois entre le verdict oral (prononçant une peine de 15 ans et six mois) et le jugement motivé s'étendant sur 264 pages (affaire Werz précitée, n. 28, 30 et 42-47; cf. aussi affaire B. c. Autriche du 28 mars 1990, Série A n° 175, n. 11 ss et n. 52-55, qualifiant de déraisonnable la durée de 33 mois pour notifier un jugement pénal motivé sur 126 pages). En revanche, dans une procédure en réparation du tort moral, elle a éconduit le justiciable qui avait dû attendre 22 mois pour recevoir la motivation du jugement: la durée globale de la procédure (quelque 2 ans et 10 mois) n'excédait pas la limite du raisonnable et le requérant n'avait invoqué aucune circonstance spéciale justifiant un traitement d'urgence (décision du 11 octobre 2005 dans l'affaire Shykyta c. Ukraine, requête 67092/01, consid. 1).
C'est le lieu d'appliquer ces principes au cas concret.
15.2. Entre l'introduction de la requête de conciliation (le 10 juin 2016) et la notification de l'arrêt sur appel (le 24 juin 2021), il s'est écoulé cinq ans. Le recourant cible uniquement la procédure de première instance, et deux périodes en particulier. La Cour d'appel a balayé le grief de façon plutôt succincte.
Le procès-verbal des opérations et d'autres éléments du dossier cantonal livrent en substance les renseignements suivants:
- Le double échange d'écritures s'est achevé le 24 avril 2017 avec le dépôt d'une "duplique sur demande reconventionnelle". La Chambre patrimoniale (resp. son juge délégué) a tenu une audience d'instruction et de premières plaidoiries le 11 juillet 2017, puis rendu une ordonnance sur preuves le 19 juillet suivant.
- Le 6 septembre 2017, la demanderesse a déposé une requête de nova que la Chambre a admise le 21 novembre 2017. Elle a poursuivi l'instruction en auditionnant les parties et des témoins. Des courriers ont été échangés avec F._ SA concernant des pièces requises. Le 14 mars 2018, la Chambre a fixé l'audience des plaidoiries finales au 10 octobre suivant.
- En juillet 2018, les deux parties ont déposé des requêtes de nova qui ont provoqué le renvoi de l'audience. Des débats d'instruction ont eu lieu le 10 octobre 2018. La Chambre patrimoniale a rendu des prononcés relatifs aux novaet une ordonnance de preuves complémentaire le 19 décembre 2018.
- Le 9 janvier 2019, elle a agendé l'audience finale au 3 juillet 2019 et l'a tenue à cette date.
- La Chambre a émis un dispositif écrit de jugement le 10 juillet 2019, dont le défendeur a sollicité la motivation le 17 juillet 2019. Le jugement motivé a été rendu le 22 mai 2020.
15.3. La première période ciblée par le recourant s'étend du dépôt de la dernière écriture (il vise probablement la duplique sur demande reconventionnelle du 24 avril 2017) jusqu'à l'audience finale du 3 juillet 2019.
On ne discerne pas quel retard excessif pourrait être reproché à la Chambre patrimoniale; du reste, le recourant se garde d'entrer dans les détails en pointant des moments précis durant lesquels cette autorité aurait fait montre d'une lenteur déraisonnable. Les deux parties ont voulu compléter leur procédure, ce qui est leur droit le plus strict, mais génère logiquement du retard. Les délais d'attente pour obtenir l'audience finale apparaissent conformes à la marche ordinaire d'un tribunal, sachant à quel point il peut être difficile de trouver une date convenant à tous les intervenants, avocats compris.
Subsiste le délai pris pour rédiger la décision motivée. Le recourant a attendu quelques jours avant de déposer une requête en ce sens le 17 juillet 2019, conformément à l'art. 239 al. 2 CPC. A compter de ce moment, un délai de 10 mois s'est écoulé. Il peut apparaître relativement long au regard de l'affaire qui était soumise aux juges, d'autant qu'à ce moment-là, ils avaient déjà dû développer le raisonnement juridique sous-tendant la décision rendue. Il ne restait plus, pour ainsi dire, qu'à le coucher sur le papier et à l'étayer de références. Ceci dit, il faut garder à l'esprit la nature patrimoniale du litige, régi par la maxime de disposition. Le recourant était déjà fixé sur son sort; il ne s'est enquis à aucun moment de l'avancement de la rédaction, ni n'a fait état d'une urgence quelconque. Il déplore devoir payer davantage d'intérêts moratoires à cause de ce retard et souhaiterait en être dispensé. Il avait toutefois la possibilité de s'acquitter du montant en émettant des réserves, ce qu'il s'est refusé à faire jusqu'à ce stade, où il a encore sollicité vainement l'effet suspensif. On concédera qu'un paiement "anticipé" est peu habituel. Mais le recourant pouvait aussi retirer quelque avantage en retenant le capital dû. Enfin, on conçoit que le justiciable soit réticent à relancer une autorité; il ne saurait cependant postuler que le tribunal en prendra ombrage et le sanctionnera, d'autant moins qu'il était ici représenté par des hommes de loi. Tout bien considéré, à l'aune des circonstances précises et des principes rappelés ci-dessus, le délai peut encore être qualifié de raisonnable ou d'approprié ( angemessen). Le recourant ne se plaint pas d'autres lenteurs dans les différentes étapes procédurales, ce qui met un terme à la discussion.
En conclusion
Le dernier grief portant sur une prétendue violation du principe de célérité doit être rejeté, et avec lui le recours dans son ensemble.
16.
Le recourant succombe en tous points. Aussi assumera-t-il les frais de la présente procédure (art. 66 al. 1 LTF) et versera-t-il à son adverse partie une indemnité pour ses frais d'avocat (art. 68 al. 1 et 2 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Un émolument judiciaire de 7'000 fr. est mis à la charge du recourant.
3.
Le recourant versera à l'intimée une indemnité de 8'000 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal vaudois.
Lausanne, le 21 avril 2022
Au nom de la I re Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Hohl
La Greffière : Monti