Trade Skill Master, ou TSM de son petit nom, est un addon d’hôtel des ventes et de goldmaking absolument incroyable.
TSM est au goldfarm ce qu’ElvUI est à l’interface : une usine… Permettant d’automatiser une bonne partie de nos recettes à l’hôtel des ventes, mais pas seulement. C’est la crème de la crème.
Oui, mais… un outil aussi puissant ça se mérite, et ça se configure. Et là, c’est pas d’la tarte ! (t’as compris ? La crème, la tarte…)
Je sais que t’en as vu un tas des vidéos de streamers qui utilisaient TSM pour se faire des millions de PO en deux semaines, je sais que tu l’as installé et que t’as rien compris, je sais que t’as cherché des tutos et importé des opérations qui t’ont fait perdre des golds parce que t’as rien compris à comment ça fonctionne… et c’est la raison d’être de ce guide.
Francophone, complet, détaillé… un guide efficace et pas cher, c’est The Insane qu’on préfère.
![](https://i0.wp.com/theinsane.fr/wp-content/uploads/2020/12/Guide-TSM-fr-complet.jpg?fit=903%2C705&ssl=1)
Mais au fait… ça fait quoi exactement TSM ?
Entre autres choses, son utilisation la plus courante permet de scanner l’hôtel des ventes et de mettre en ventes en deux minutes tous les objets de ton inventaire, au bon prix.
Une fois configuré (ben oui c’est la partie difficile tu t’en doutes), tu n’as plus qu’à assigner une macro à une touche, puis la spammer pour tout mettre en ventes au meilleur prix, et à toi les pépèttes !
Loin des autres addons d’hv tels que Auctioneer ou Auctionator (useless depuis la mise à jour de l’hv de Blizzard), TSM permet vraiment une précision et une rapidité que tu ne trouveras dans aucun autre addon d’HV… en plus de permettre un suivi statistique assez insane de tes ventes.
…Et : NON, j’suis pas payée pour leur jeter autant de fleurs (et c’est un scandale ! où sont les po ?)
Table des matières (parce que ça va être long)
Au premier jour, Blizzard créa les addons
Alors oui on va peut-être commencer par expliquer comment installer TSM.
Tu le trouveras sur Overwolf (CurseForge), et tu devras installer TradeSkillMaster. Jusque là, logique me diras-tu. Oui mais c’est pas fini Merlin.
L’addon fonctionne grâce à une base de données qui s’actualise toutes les demi-heures. Pour lier cette base de données à ton addon en jeu, tu dois télécharger l’application de bureau TSM, directement sur leur site. Il te faut un compte (gratuit) et tu devras renseigner les serveurs que tu souhaites scanner (tous ceux sur lesquels tu vends, du coup).
Cette application doit être lancée et tourner en fond sur ton PC à chaque fois que tu souhaiteras utiliser l’addon.
Interface de TSM
Disclaimer : pendant que je rédigeais ce guide, une grosse mise à jour de l’interface de TSM a été déployée. Le guide est toujours valide, seules certaines dénominations ont été traduites en français alors, pas de panique si chez toi, tout n’est pas exactement comme chez moi, ça fonctionne pareil !
![](https://i0.wp.com/theinsane.fr/wp-content/uploads/2020/12/Dashboard.jpg?fit=903%2C705&ssl=1)
En jeu, tape /tsm pour ouvrir le panneau de configuration de l’addon.
Tu vas te retrouver face à un tableau de bord répertoriant tes statistiques de recettes, ventes, bénéfices et capital.
Plutôt utile au début, ça te permettra de voir si tu te maintiens dans le bénéfice (Average profit per day) ou si, au contraire, tu perds plus d’argent que tu n’en gagnes. Dans ce cas, c’est soit que tes opérations sont mauvaises, soit que tu ne te places pas sur les bons marchés.
Quoi qu’il en soit, une fois ton TSM bien configuré et tes opérations de ventes satisfaisantes, cette interface ne te sera plus très utile. A part évidemment pour le plaisir de regarder les chiffres monter, parce que le capitalisme.
Regardons donc les autres onglets :
- Ledger : Encore et toujours des statistiques et des outils d’analyse. Je ne m’en sers presque pas. Selon moi, un seul onglet est important ici : Revenue > Revendre. Ca te permet de garder un oeil sur tes bénéfices d’achat / revente, histoire d’être certain de ne pas perdre de thunes quand tu fais du flipping.
- Groups : Sur TSM, tu crées des groupes d’objets auxquels tu assignes les items que tu souhaites mettre en ventes, cela permet de vendre différentes catégories d’objets à des prix adaptés.
- Opérations : Tu assignes des opérations de ventes à tes groupes. Dans cet onglet, tu crées ce qu’on appelle des Strings contenant des sources de prix auxquelles TSM va se fier pour établir le meilleur prix de ton objet.
- Settings : Cet onglet contient tout simplement tous les paramètres de TSM. Tu peux notamment choisir quelles informations afficher sur le tooltip d’un objet (oui parce que TSM c’est aussi une source d’informations précieuses pendant les sessions de farm).
Les groupes TSM
La première chose que tu souhaites faire, c’est répartir tous les objets que tu vends dans des groupes. Cela te permettra par la suite d’y assigner des opérations et d’automatiser la vente à l’HDV.
Les groupes, c’est plutôt personnel. Certains aiment avoir des groupes par extension, d’autres par type d’objets, ou encore par valeur… la seule chose que tu dois prendre en compte en créant un groupe, c’est quelle opération tu vas lui assigner. En d’autres termes, la seule utilité de créer un nouveau groupe, c’est de lui assigner une opération particulière que tu ne veux pas assigner aux autres groupes.
Par exemple, j’ai un groupe Transmo indépendant car son opération stipule que si l’objet me revient 100 fois sans être vendu, alors TSM devra arrêter de le mettre en ventes, car cet objet ne se vend pas et me fait perdre le prix de dépot pour rien.
J’ai également un groupe « HL » qui comprend les outils de MM+ et raid de l’extension actuelle (flacons, potions, bouffe, rez, répa…), et son opération stipule que la durée de mise en vente est de 12 heures (contrairement à la plupart de mes opérations qui sont à 48 heures) car je sais que ça part vite, inutile donc de payer plus cher le prix de dépot.
…Et ainsi de suite ! Un groupe doit se justifier par un paramètre de vente différent des autres.
Bon, après j’ai pas mal de sous-groupes… ça c’est parce que je suis une névrosée et que j’ai besoin de ranger les choses.
Créer un groupe TSM et y ajouter des objets
Pour créer un groupe, rien de plus simple : rends-toi dans l’onglet Groupes (sans blague ?) et clique sur le + à côté de «Groupe par défaut». Tu pourras ensuite nommer ton groupe dans la nouvelle fenêtre.
Si tu cliques sur le + à côté du nom d’un groupe existant, cela va créer un sous-groupe et non un groupe. Si tu assignes une opération à un groupe, tous ses sous-groupes la récupèrent.
Dans le groupe que tu viens de créer, tu remarqueras deux colonnes.
Celle de gauche répertorie les objets de ton inventaire qui ne sont pas assignés à un groupe. Celle de droite répertorie tous les objets appartenant au groupe sélectionné, qu’ils soient dans ton inventaire ou non.
Pour ajouter un objet dans un groupe, sélectionne le dans la colonne de gauche, puis clique sur « Add » en bas. Tu peux bien sûr faire une sélection multiple.
Sur tous tes groupes, pense bien à cocher « Ignore variations ». Cette option permet à TSM d’ignorer les variations de statistiques du stuff. Par exemple, un même stuff peut s’appeler « de la chouette » « du cobra » « de l’ours de guerre astigmate »… et vu que c’est la même transmo, cette option permet de demander à TSM de considérer que chaque variation est le même objet et doit être mis en vente au même prix (à ne pas cocher si tu vends du stuff HL lié quand équipé donc… parce qu’une stat peut changer le prix !)
Les opérations TSM
Pour faire simple, une opération c’est un ordre donné à TSM pour lui indiquer le prix de vente d’un groupe.
Pour rentrer dans les détails, chaque opération stipule une durée de vente, un prix minimum, un prix maximum, un prix normal, un nombre d’objets à conserver, un nombre maximal d’échecs de ventes, un prix d’enchères… et un tas d’autres paramètres !
Tu as plusieurs onglets au sein même d’une opération :
- Détails : Ici tu peux demander à TSM d’ignorer certaines durées, certains joueurs ou certains royaumes lorsqu’il calculera l’enchère la moins chère postée actuellement. Personnellement, je n’ignore rien mais ça peut être utile si tu as repéré un petit malin qui s’amuse à casser les prix sur ton serveur. En dessous, tu peux choisir à quels groupes assigner ton opération.
- Poster : C’est l’onglet qui nous intéresse le plus. Ici tu choisis tes paramètres de mise en ventes et leur calcul de prix.
- Auction duration : Durée de l’enchère
- Post cap : Combien d’objets peuvent être postés simultanément
- Amount kept in bags : Combien d’objets faut-il garder dans les sacs ? Pratique si tu vends le surplus d’un objet que tu utilises
- Don’t post after this many expires : A partir de combien d’échecs d’enchères (l’objet est revenu sans avoir été vendu) TSM doit arrêter de poster l’objet
- Set bid as percentage of buyout : Réduction de l’enchère par rapport à l’achat immédiat, en pourcentage
- Undercut amount : De combien TSM doit undercut l’enchère la plus basse (1g pour 1 po, 1s pour 1 pa, 1c pour 1 pc)
- Minimum price, maximum price, normal price : Prix minimum, maximum et « normal » auquel TSM doit poster les objets
- Annuler : Cet onglet permet d’annuler toutes les enchères qui ont été undercut, mais très franchement, c’est casse-gueule et je ne recommande pas d’utiliser cette fonctionnalité quand on débute.
J’attire ton attention sur les minimum, maximum et normal price de l’onglet Poster : il s’agit du coeur de tes opérations, c’est grâce aux sources (ou formules) que tu saisiras dans ces parties-là que TSM saura calculer le bon prix pour le bon groupe d’objets, en fonction de sa base de données.
Note que ce sont également des conditions et que tu peux définir ce que TSM doit faire lorsque l’une de ces conditions est atteinte.
Par exemple, si TSM détecte que l’enchère la plus basse à l’HV est postée en dessous du prix minimum que tu as défini, tu peux choisir soit de poster quand même à ton prix minimum défini (mais tu ne seras pas le moins cher), soit de poster au prix normal (parce que y en a marre de niquer l’économie du serveur), soit de ne pas poster du tout (parce que tu ne veux pas prendre de risque).
Ce paramètre dépend énormément du type de marché ciblé.
Les sources de prix TSM et tooltips
Avant de pouvoir faire des opérations décentes, tu dois comprendre le principe de Sourcing Prices.
Les sources de prix sur TSM, ce sont les données que tu télécharges toutes les demi heures grâce à l’application de bureau, et ce sont elles qui permettent à TSM de te donner en temps réel le prix de vente de chaque objet.
![Settings TSM 4 affichage des tooltips](https://i0.wp.com/theinsane.fr/wp-content/uploads/2021/01/TSM-Parametres-affichage-du-tooltip-dobjet.jpg?fit=899%2C697&ssl=1)
Dans l’onglet Settings de TSM, paramètres de l’interface, tu vas pouvoir cocher les tooltips que tu veux afficher lorsque tu survoles un objet. On se focalisera surtout sur les valeurs de AuctionDB qui servent pour les opérations.
Comprendre ces informations, c’est comprendre TSM, alors accroche-toi bien :
- Prix de rachat min (Min Buyout) : Valeur de l’enchère la plus basse actuellement à l’HV pour l’objet concerné
- Valeur du marché (Market Value) : Prix moyen de l’enchère, sur ton serveur, sur les 14 derniers jours
- Historique des prix (Historical Price) : Idem, sur les 60 derniers jours
- Region – Moyenne de rachat minimum (Region Min Buyout Avg) : Valeur de l’enchère la plus basse actuellement à l’HV, en moyenne, sur tous les serveurs d’Europe (c’est la même chose que Min Buyout, vu plus haut, mais sur une moyenne de la Région – EU)
- Valeur du marché de la région (Region Market Value Avg) : Idem que la valeur du marché, mais appliquée à la moyenne de la Région (14j)
- Prix historique de la région (Region Historical Price) : Idem (60j)
- Moy. des ventes de la région (Region Sale Avg) : Prix moyen auquel se vend l’objet dans la Région (EU) – Attention ici car seules les ventes effectuées par les personnes utilisant TSM sont comptabilisées
- Taux de vente dans la région (Region Sale Rate) : Probabilités de vendre l’objet, en pourcentage. Un taux à 0.65 signifie qu’il y a 65% de chances de vendre l’objet (selon TSM)
- Moy. quotidienne vendue (Region Avg Daily Sold) : Moyenne du nombre d’objets vendus par jour, dans la région. Ici aussi, attention, il est difficile de savoir exactement ce que mesure cette donnée. Il ne s’agit pas d’un pourcentage ni d’un nombre entier. Les spéculations de la communauté voudraient qu’une donnée à 0.05 indique que 5 objets sont vendus tous les 100 jours, et non pas que 0.05 objets se vendent chaque jour. La nuance est mince, mais importante.
Les autres sources s’expliquent d’elles-mêmes, par exemple, le coût de fabrication est basé sur le prix des composants à l’HV, le prix de vente au marchand est… le prix qu’on vend l’objet au marchand c’est bien tu suis Merlin, la valeur de désenchantement est basée sur le prix des compo récupérées en cas de désenchantements, etc…
Ne te fie pas aux données de « Accounting », car il ne s’agit pas de données globales mais bien d’une moyenne de tes propres ventes. Ainsi, « Taux de vente » ne correspond pas au taux de vente global de l’objet mais au taux de vente moyen auquel TU as déjà vendu l’objet. Les seules valeurs globales calculées via l’hôtel des ventes sont celles de « AuctionDB », la base de données de TSM.
![Exemple et explication des tooltips TSM sur un objet](https://i0.wp.com/theinsane.fr/wp-content/uploads/2021/01/Exemple-tooltip-TSM-objet.jpg?fit=404%2C263&ssl=1)
Allez, on récapitule tout ça avec un exemple.
Ici, mon feu volatil se vend 8 pièces d’argent et 75 pièces de cuivre l’unité, chez le marchand. Juste au-dessus, on peut lire 17,50 car l’interface de base de Blizzard me donne le prix de vente de ma pile, et que j’en ai deux en sacs (comme tu peux le voir sur la ligne Inventaire).
En regardant les données de AuctionDB, je vois qu’actuellement l’enchère minimale de cet objet à l’hv est de 50,99 po.
La valeur du marché étant de 58,70 po, ce qui signifie que dans les 14 derniers jours, sur mon serveur (Elune / Varimathras), cet objet a été posté en moyenne à ce prix (pas vendu, posté !).
Sur les 60 derniers jours en revanche, le prix était de 43,59 po, et c’est important comme info parce que si je voulais spéculer, j’attendrais un peu avant de vendre mon objet car les prix ont l’air de grimper.
En Europe, tous serveurs confondus, l’enchère minimale moyenne est de 37,31 po. J’ai donc de la chance d’être sur Elune où mon prix avoisine plutôt les 50 po. Sur les 14 derniers jours, en Europe toujours, le prix était de 40,64 po, contre une moyenne de 32,27 po sur les 60 derniers jours. Ici aussi, ça grimpe, ce n’est donc pas une folie passagère et isolée de mon serveur.
En moyenne, en Europe, l’objet est vendu à 18,75 po. Et là c’est une mauvaise nouvelle parce que ça veut dire que malgré une moyenne d’enchères plutôt correcte à 30-40 po, certains malins postent et vendent à 18 po.
Note que cette donnée peut tout à fait être faussée par le fait que quelqu’un ait posté une énorme pile à 18po, et que bien qu’elle ait été la seule pile à ce prix, sa grande quantité a fait chuter le prix de vente de la région EU, puisqu’il s’agit d’une moyenne.
8% des enchères aboutissent à une vente, en moyenne, et environ 183 feux volatils sont vendus tous les 100 jours, ce qui est un taux très attractif pour une compo d’ancienne extension.
Est-ce que c’est plus clair maintenant ?
J’espère, parce que de toute façon on passe à la suite. La partie intéressante, la partie que tout le monde attendait, la partie des opérations !
Prix normal, minimum et maximum sur TSM
Lorsque tu te rends dans l’onglet « Poster » d’une opération TSM, tu as à faire à trois encarts distincts : Minimum, maximum et normal price.
Et tu vas me demander, « mais pour quoi c’est faire ? » et tu auras bien raison parce que c’est une très bonne question. Vu que TSM poste automatiquement au même prix que l’enchère la plus basse (au même prix, pas moins cher, c’est comme ça qu’on ruine une économie sinon), pourquoi aurait-on besoin de lui définir un prix minimum et maximum ? Surtout, pourquoi un prix maximum, plus on peut vendre cher, mieux c’est, pourquoi se mettre un maximum ?
Eh bien mon cher Merlin, je vais te répondre par l’exemple :
Admettons que je veuille vendre mon feu volatil, là, maintenant. TSM va donc scanner l’hv et trouver l’enchère la moins chère à 50,99 po… logiquement. Sauf qu’il peut arriver qu’entre temps, Jean-Kevin ait posté lui aussi un feu volatil et que, voulant le vendre rapidement, il l’ait posté à 8 po / unité (parce que Jean-Kevin est bête et qu’il ne connait pas la valeur des choses… et crois-moi, des Jean-Kevin, sur Elune comme ailleurs y en a beaucoup).
TSM va donc checker mon prix minimum avant de poster mon objet à 8po comme Jean-Kevin, et se rendre compte que j’ai stipulé dans cette source de prix que le prix minimum auquel j’accepte de vendre cet objet ne doit pas être inférieur à 90% du prix moyen du serveur sur les 60 derniers jours (Historical Price, ou DBHistorical). Ce prix étant actuellement à 43,59 po, mon prix minimum est donc d’environ 39 po. Nous sommes donc bien loin des malheureux 8 po de Jean-Kevin.
…Ouais ça fait un peu de maths et si comme moi tu aimes plutôt les lettres, bah… va te faire une tisane. Parce que ça fait que commencer.
Là, TSM va se dire « ah non ! Jean-Kevin, il abuse, que dois-je faire, maître ? » et c’est là qu’entre en jeu la partie « Lorsqu’en dessous du minimum ». Moi, je lui dis de poster au prix minimum, soit 39 po. J’aurais aussi pu lui dire de ne pas poster du tout parce que Jean-Kevin va ruiner le marché, ou de poster au prix normal parce que mince, faut faire remonter la moyenne !
![](https://i0.wp.com/theinsane.fr/wp-content/uploads/2020/12/operations-tsm-onglet-poster-min-max-norm-price.jpg?fit=551%2C594&ssl=1)
Maintenant, pourquoi un prix maximum ?
Eh bien malgré Jean-Kevin qui poste à 8po, il y a Jean-Eustache qui lui, poste à 200 po. Parce qu’il faut oser dans la vie, hein. Et il y a aussi Jean-Philéstin qui lui, poste carrément à 1M po. Parce que lui pour le coup, il a plus de place pour stocker ses feux volatils et que l’hv, ça stocke bien. Puis on sait jamais, un missclick et il peut devenir riche.
Sauf que si l’un de ces deux babouins se retrouve à être la seule enchère disponible, ils deviennent le prix minimum et moi j’ai pas envie de suivre leurs conneries. Pour deux raisons simples.
La première, c’est que j’ai pas envie de complètement dérégler l’économie du serveur, auquel cas tout le monde se mettrait à farmer cette saloperie et ça finirait à 8po / unité (la rareté fait la valeur) et ça ferait bien trop plaisir à Jean-Kevin.
La deuxième, c’est que ça a de fortes chances de ne jamais partir à ce prix parce que les gens sont pas débiles non plus (enfin… parfois…), et donc mettre mon feu volatil à 200po ou à 1M, c’est du pareil au même : ça partira pas, et j’aurai le prix de dépôt dans l’élune en plus.
Du coup, je vais demander à TSM de ne pas dépasser un certain pourcentage du prix historique, de même qu’avec le prix minimum.
Enfin, le prix normal ne sert à RIEN.
Enfin si… il sert pour l’onglet « Lorsqu’au dessus du maximum / en dessous du minimum ». Tu peux définir un prix intermédiaire comme « prix normal », et choisir de poster à ce prix dans un cas ou l’autre.
Disclaimer : Aucun Jean-Bidule n’a été maltraîté lors de la rédaction de ce guide. Si par malheur tu t’intitules toi-même Jean-Kevin, Jean-Eustache ou Jean-Philéstin, permets-moi de te présenter toutes mes confuses, ça doit déjà pas être facile de base…
DONC. Tu dois passer beaucoup de temps à configurer tes prix minimum et maximum afin d’être certain de ne pas vendre à pertes. Le minimum syndical, c’est surtout de vérifier que tu ne vends pas moins cher qu’au marchand (en comptant le prix de dépôt), mais c’est loin d’être suffisant.
Je ne vais pas te donner d’opérations toutes faites parce que c’est le meilleur moyen de te faire perdre de l’argent, vu qu’une opération doit être adaptée à un marché. En revanche, je vais essayer de construire maintenant, avec toi et de manière détaillée, une opération viable pour débuter, que tu modifieras toi-même selon tes besoins, parce que tu l’auras comprise.
Mais si mais si, ça va aller… Allez prends ma main, on va surmonter ça ensemble.
Créer une opération TSM
Créer une opération TSM, c’est simple comme bonjour…
Bah non, bien sûr que non, sinon on serait pas là à faire un guide de 446 km.
Je vais te donner une liste, tu la laisses là dans un coin et puis on y reviendra plus tard, d’accord ?
- DBMinBuyout – Enchère la plus basse (serveur)
- DBMarket – Valeur marchande (moyenne serveur)
- DBHistorical – Historique serveur sur 60 j
- DBRegionMinBuyoutAvg – Enchère la plus basse (Région)
- DBRegionMarketAvg – Valeur marchande (moyenne Région)
- DBRegionHistorical – Historique région sur 14j
- DBRegionSaleAvg – Prix moyen de vente (Région)
- vendorSell – Prix de vente au marchand
- vendorBuy – Prix d’achat au marchand
Grosso modo, ce sont les seules sources dont nous aurons besoin dans nos opérations (mais il en existe un tas d’autres). Ces sources correspondent d’ailleurs à celles vues dans la partie tooltips, si tu souhaites t’y référer.
Ces sources ne servent à rien toutes seules, pour écrire une ligne de code dans TSM, il te faut ce qu’on appelle des fonctions.
Certaines sont simples, comme les valeurs brutes ou en pourcentages :
- dbmarket + 10g = la valeur marchande du serveur + 10 po
- 110% vendorsell = 110% de la valeur du prix de vente au marchand
- (dbmarket / 2) + (dbhistorical * 2) = la moitié de la valeur marchande ajoutée au double du prix historique sur 60 j
…et ainsi de suite. Les additions, les pourcentages, les moitiés et les doubles, à priori, ça reste accessible à n’importe qui. Mais TSM possède des fonctions un peu plus complexes qui lui sont propres :
- min(dbmarket, dbhistorical) = choisit le minimum entre deux valeurs données. Ici cela vérifie quelle valeur, entre la valeur marchande et le prix moyen sur 60j, est la plus petite, et la sélectionne.
- max(vendorsell, vendorbuy) = inversement, choisit la plus grande valeur. Ici entre le prix d’achat et de vente au marchand.
- first() = First permet de poser des conditions. Si la première n’est pas valide, TSM vérifiera la deuxième, puis la troisième et ainsi de suite. Il s’arrêtera à la première valeur valide.
Par exemple, la ligne first(minbuyout, dbmarket, dbhistorical, vendorsell)
vérifie d’abord qu’il existe une enchère minimale postée (minbuyout), si non, s’il n’existe aucune enchère de cet objet actuellement, TSM vérifie qu’il existe une valeur moyenne sur le serveur, si non, qu’il existe une valeur historique sur 60j, si non, qu’il existe un prix de vente au marchand. La première de ces valeurs qui existe est la valeur choisie pour fixer le prix. Pratique surtout avec les objets rares ou peu disponibles sur le marché, qui n’ont donc pas toujours de valeur récente disponible dans la base de données TSM.
- avg() = comme son nom l’indique, avg fait une moyenne des valeurs qui lui sont passées en paramètres (c’est à dire la somme des paramètres, divisée par le nombre de paramètres). Par exemple,
avg(minbuyout, dbmarket)
fait une moyenne entre la plus petite enchère actuelle et la valeur marchande moyenne. - check() = souvent confondue avec first(), check permet de valider des conditions en si / sinon. Il lui faut 3 paramètres : une condition, une action si (condition valide), une action sinon (condition invalide).
Ca parait compliqué dit comme ça, mais c’est très simple. Check(a,b,c) va vérifier que a est supérieure à 0. Si oui, il exécutera b, si non, il exécutera c.
Par exemple, la ligne check(minbuyout - 1000g, 95% dbmarket, 110% dbmarket)
vérifie d’abord que l’enchère la plus basse moins 1000 po n’est pas inférieure à zéro, et donc que la plus petite enchère est supérieure à 1000 po. Si c’est le cas, le prix de vente sera de 95% de la valeur marchande, si ce n’est pas le cas, il sera de 110% de cette valeur (parce que je veux faire grimper le prix, par exemple, et qu’au contraire il me convient s’il est supérieur à 1000 po).
![GIF Maths complexes](https://i0.wp.com/theinsane.fr/wp-content/uploads/2021/01/giphy-1.gif?fit=480%2C270&ssl=1)
Mmmh… il y en a d’autres mais honnêtement, on se servira surtout de celles-ci.
Alors pour mon feu volatil, en admettant que je n’aie pas lu les tooltips et fait l’analyse précédente (dans la partie tooltips, suis un peu !), je vais créer une opération logique qui trouvera le bon prix toute seul, sans risque de me faire bai… arnaquer.
Idéalement via cette opération, je veux une vente à un prix :
- supérieur au prix de vente au marchand, sinon ça n’a aucun intérêt
- qui rembourse le dépôt à l’hv (égal à 5% du prix de vente au marchand)
N.B. : Le prix de dépôt est restitué dans le cas d’une vente. Au contraire, il est perdu si l’objet n’est pas vendu. - qui ne dépasse ni ne sous-estime de plus de 20% le prix de vente moyen de mon serveur
- qui vaille la peine de farmer et d’en faire une enchère, soit pas moins de 35 po /u
Mon prix minimum donnerait donc quelque chose de ce style :
max( 105% vendorSell + 35g, avg(80% DBmarket, 80% DBhistorical) )
Qu’est-ce à dire que ceci ? Eh bien je demande à TSM de calculer le prix de vente au marchand + 5% de ce prix (soit la valeur du dépôt) pour ne pas vendre à pertes, plus 35 po car c’est le bénéfice minimal que je veux en tirer ; ensuite je lui demande une moyenne entre 80% de la valeur du marché et 80% du prix historique de mon serveur sur 60j. Cela me retourne deux valeurs, entre lesquelles je lui demande de choisir la plus élevée grâce à max().
Concrètement, cela va fixer mon prix minimum soit au prix de vente au marchand + dépot + 35 po, soit au prix moyen de mon serveur (enchères actuelles et historiques).
Attention, TSM ne va pas poster à ce prix ! Il va seulement s’assurer que l’enchère minimale est supérieure à ce prix, pour pouvoir poster. Il s’alignera ensuite dessus si c’est le cas.
Si ça n’est pas le cas, il effectuera l’action choisie dans « Lorsqu’en dessous du minimum » (en admettant que je mette cette ligne de calcul dans « prix minimum »).
J’aurais aussi pu vérifier que l’enchère minimale était supérieure au prix de vente au marchand + le dépôt + 35g grâce à cette opération :
check( 105% vendorSell + 35g, 105% vendorSell + 35g, avg(80% DBmarket, 80% DBhistorical) )
Qui vérifie que la première condition est supérieure à zéro, si oui, le prix minimum sera le premier paramètre (105% vendorsell + 35g), qui est aussi ma condition, sinon, le prix minimum sera le deuxième paramètre (la moyenne des valeurs du marché).
Quelle différence ? Eh bien la première opération choisit la valeur maximale entre les deux valeurs retournées, tandis que la deuxième se contente de vérifier que je ne vends pas à pertes (supérieur à zéro) et fixe le prix au bénéfice minimal demandé (35 po).
Mon prix maximum, en revanche, se fout du prix de vente au marchand ainsi que du dépôt, le but étant simplement de ne pas ruiner l’économie de mon serveur et donc, je ne prendrai en compte que la valeur du marché actuelle et historique :
avg(120% DBmarket, 120% DBhistorical)
![Good job](https://i0.wp.com/theinsane.fr/wp-content/uploads/2021/01/giphy1-1.gif?fit=540%2C304&ssl=1)
Maaaaaais c’est pas si simple. (Je te promets que j’essaie de faire au plus concis Merlin, mais TSM, c’est pas concis)
Parce que cette opération, elle va fonctionner avec mon feu volatil, mais pas forcément avec tous les objets de mon groupe.
Pourquoi ? Parce que je pars du principe qu’il existe un prix de ventes au marchand. Et si j’applique cette opération à un groupe de composants, il existe certains composants qui ne peuvent pas se vendre à un marchand. Par conséquent, TSM me retournerait une erreur pour me dire qu’une des conditions n’est pas valide (vendorSell).
Alors comment on règle ce soucis ?
Tout simplement avec first(), qui sélectionne la première valeur ou opération valide (existante en base de données) :
first( max( 105% vendorSell + 35g, avg(80% DBmarket, 80% DBhistorical) ), avg(80% DBmarket, 80% DBhistorical) )
Ici, on passe la même opération qu’avant en premier paramètre, si elle est valide, first() la choisira, si elle n’est pas valide car il n’existe pas de prix au vendeur, elle choisira la deuxième qui comprend seulement la moyenne des valeurs actuelles et historiques (en admettant qu’il existe des enchères et un prix historique).
Ayé, tu commences à comprendre ?
Allez, encore un petit exemple pour la route… Admettons que je me fiche du prix de vente au marchand, mais que tout ce qui m’importe c’est de vendre des objets à plus de 1.000 po, parce que pourquoi pas. Mon opération de prix minimum ressemblerait à ça :
check(DBMinBuyout - 1000g, DBMinBuyout, 1000g)
Si l’enchère minimale est supérieure à 1.000 po, alors mon prix minimum est cette enchère, elle me convient. Si non, alors mon prix minimum est de 1.000 po.
Disclaimer : cette opération est totalement stupide, c’est juste pour l’exemple. Ne va pas me coller des opérations comme ça avec des sources brutes partout.
Macro, scan et mise en ventes
Voilà, tes groupes sont créés, des opérations y sont assignées, et maintenant ?
Maintenant, tu te rends dans les Settings de TSM, pour créer ta macro à spam pour poster.
![TSM Réglages Macros](https://i0.wp.com/theinsane.fr/wp-content/uploads/2021/01/WoWScrnShot_012221_170530-e1611331563296.jpg?fit=931%2C724&ssl=1)
Coche les actions qui t’intéressent, ici pour la mise en ventes automatique après le scan, c’est « Bouton mise en vente », puis clique sur mettre à jour la macro existante.
Tu pourras alors la retrouver dans l’interface basique de macros de Blizzard, puis la glisser dans tes barres d’actions.
![Macro tsm de mise en ventes](https://i0.wp.com/theinsane.fr/wp-content/uploads/2021/01/TSM-MACRO-MISE-EN-VENTES.jpg?fit=349%2C433&ssl=1)
Maintenant, lance un scan de mise aux enchères. Pour ce faire, rends-toi dans l’onglet TSM4 de l’hôtel des ventes, ça devrait t’ouvrir l’interface TSM.
Dans l’onglet « Mise aux Enchères » tu trouveras à gauche la liste de tes groupes. Sélectionne-les tous (en cliquant dessus, ils deviennent alors jaunes au lieu de gris), puis clique sur « Exécuter l’analyse des enchères ».
TSM va alors scanner l’hôtel des ventes pour trouver les objets de ton inventaire appartenant à un groupe et possédant une opération associée. Lorsque le scan sera terminé, pour chaque enchère sélectionnée tu auras le choix entre « Mise en vente » ou « Ignorer ». Ce dernier ne sert que si tu ne souhaites pas mettre en ventes l’objet malgré le scan.
Comme son nom l’indique, « Mise en vente » sert à poster l’objet, tu peux d’ailleurs vérifier son prix si tu le souhaites dans la colonne « Votre rachat ». Et c’est là que tu peux spammer ton raccourci de macro pour tout mettre en vente rapidement.
FAQ
Parfois certaines de tes enchères seront invalides car TSM trouvera ton prix minimum supérieur à ton prix maximum ou normal. Dans ce cas, tu as dû faire une erreur dans tes opérations. Souviens toi que tes prix doivent suivre cet ordre : minimum < normal < maximum. Si ce n’est pas le cas, TSM refusera le traitement.
Le meilleur moyen de ne pas avoir un prix minimum supérieur au prix maximum, ça reste encore d’utiliser les mêmes sources de prix dans les deux Strings. Par exemple, si ton prix minimum utilise 90% vendorsell, assure-toi que ton prix maximum utilise un plus gros pourcentage du vendorsell. Idem pour toutes les autres sources de prix.
Parfois, malgré de bonnes sources de prix, TSM t’indiquera que ton opération ou ton groupe est invalide.
Dans ce cas, une seule chose à vérifier : la syntaxe.
Les String TSM ne sont ni plus ni moins que du code, un respect strict de la sémantique est donc nécessaire pour que ça fonctionne. Si tu as ouvert une parenthèse que tu n’as pas refermée, si tu as oublié une majuscule quelque part, mis un espace en trop, une virgule, oublié un mot… ça ne fonctionnera pas.
D’ailleurs sois vigilant à tes parenthèses, la première ouverte, c’est la dernière fermée. Ne va pas m’entrecroiser des opérations. Si tu veux être certain de ne pas en oublier une, commence par rédiger tes plus petites opérations, puis entoure-les de parenthèses et des fonctions plus grosses par la suite.
Pour reprendre mon exemple avec first(), qui est une opération complexe puisqu’elle comprend 3 sous-opérations, procède par étapes en partant de ta plus petite fonction pour l’enrober ensuite dans une plus grosse et enfin, englober le tout dans la fonction principale :
1- avg(80% DBmarket, 80% DBhistorical)
2- 105% vendorSell + 35g, avg(80% DBmarket, 80% DBhistorical)
3- max( 105% vendorSell + 35g, avg(80% DBmarket, 80% DBhistorical) )
4- max( 105% vendorSell + 35g, avg(80% DBmarket, 80% DBhistorical) ), avg(80% DBmarket, 80% DBhistorical)
5- first( max( 105% vendorSell + 35g, avg(80% DBmarket, 80% DBhistorical) ), avg(80% DBmarket, 80% DBhistorical) )
Cet article a 4 commentaires
Hello,
Merci pour ce tuto trop cool et en français en plus c'est le top.
Une ou deux infos de plus pour les acharnés :
Types de Fonctions
Opérateurs Arithmétiques : Ces opérations de base incluent l'addition (+), la soustraction (-), la multiplication (*), la division (/), et l'exponentiation (^). Elles peuvent être utilisées pour manipuler les données de prix. Par exemple, pour calculer un prix de vente en ajoutant un bénéfice fixe au prix de revient.
Fonctions de Pourcentage : Utilisez % pour calculer un pourcentage d'une source de prix, permettant de facilement ajuster les prix en fonction de pourcentages spécifiques.
Fonctions min() et max() : Ces fonctions retournent respectivement le minimum ou le maximum de leurs paramètres. Elles sont utiles pour comparer les prix et choisir le meilleur ou le pire cas.
Fonction first() : Renvoie le premier paramètre valide. C'est pratique pour définir un prix par défaut si d'autres sources de prix ne sont pas disponibles.
Fonction avg() : Calcule la moyenne de ses paramètres, permettant d'équilibrer différents prix pour obtenir une estimation plus stable.
Fonction check() : Effectue une vérification logique simple pour retourner une valeur si une condition est vraie et une autre si elle est fausse.
Fonctions Logiques Avancées : Incluent ifgt(), ifgte(), iflt(), iflte(), et ifeq(), qui permettent des comparaisons complexes et des décisions basées sur des conditions spécifiques.
Fonctions de Conversion : convert() gère les conversions d'items, comme le prospectage ou la transformation, en calculant le coût le plus bas pour ces conversions.
Fonctions de Arrondi : round(), roundup(), et rounddown() permettent d'arrondir les prix à des valeurs spécifiques, facilitant la fixation des prix pour l'AH.
Exemples Simplifiés
- Opérateur Arithmétique : dbmarket + 5g ajoute 5 pièces d'or au prix du marché DB.
- Pourcentage : 110% crafting calcule 110% du prix de revient de l'objet.
- min() et max() : min(50% dbmarket, 100g) utilise le plus bas entre 50% du prix du marché DB et 100 pièces d'or.
- first() : first(dbmarket, dbregionmarketavg) renvoie le prix du marché DB s'il est valide; sinon, la moyenne régionale.
- avg() : avg(crafting, avgbuy) donne la moyenne entre le coût de fabrication et le prix d'achat moyen.
- check() : check(dbmarket - 1000g, 95% dbmarket, 50% dbmarket) vérifie si le prix du marché DB moins 1000 pièces d'or est positif; si oui, utilise 95% du DBMarket, sinon 50%.
Merci pour les ajouts ! Le guide commence à dater alors ça fait pas de mal de rajouter des infos de temps en temps ! 🙂
Bonjour c'est plus une question qu'un commentaire. Mais voilà je voudrais savoir si il est possible d'avoir une formule qui pourrait mettre 1 gold de moins en enchère que la personne devant moi ? Merci de votre réponse.
Ps: je ne parle pas du prix de vente a hv je parle du prix de vente a hv mais le prix enchère .
Merci d'avance.
Hello, à ma connaissance il n'est pas possible de gérer le prix d'enchères via TSM, il ne gère que le prix d'achat immédiat.