Type/to search
2
Follow
494
Followers
Conception et implémentation d'un système de trading intelligent multi-rôles pour Polymarket
Discussions
Created 2026-04-03 17:54:27  Updated 2026-04-13 16:31:58
 0
 371

img

Contexte de la stratégie

Au début de cette année, une rumeur circulait largement dans la communauté selon laquelle quelqu'un avait gagné de quoi s'offrir un appartement en une nuit sur Polymarket. Poussé par la curiosité, j'ai cherché le cadre de trading spécifique, pour ne trouver que des titres racoleurs, pas une seule ligne de code. Impossible, j'ai dû le faire moi-même.

img

Au début, je n'avais vraiment aucune idée par où commencer. Polymarket est actuellement la plus grande plateforme de marché prédictif décentralisé, avec plus de 60 000 actifs listés, couvrant presque tous les événements prévisibles : politique, sport, macroéconomie, etc. Chaque actif est essentiellement un contrat d'option binaire – si l'événement se réalise, le prix converge vers 1 ; sinon, il devient nul. Ce qui rapporte le plus, c'est bien sûr l'information privilégiée. Mais les gens ordinaires ne savent pas combien de tweets Elon Musk postera la semaine prochaine, ni si la Fed baissera ses taux la prochaine fois, et ils n'ont ni le temps ni l'énergie de surveiller les marchés, d'analyser les cours et de prendre des décisions.

J'ai donc pensé : et si on changeait d'angle ? Au lieu de courir après l'information, courir après l'argent. Ceux qui détiennent un avantage informationnel se positionnent à l'avance, et leurs achats laissent forcément des traces sur les prix et les volumes. Même sans connaître les « infos privilégiées », on peut déduire si quelqu'un accumule discrètement en observant les flux de capitaux. Suivant cette idée, j'ai construit un système de trading intelligent multi-rôles, qui enchaîne la recherche de signaux sur les bougies, la vérification par les sentiments du marché, le jugement par l'IA, et l'exécution automatisée des ordres avec gestion des risques, formant une pipeline complète.

img


Architecture du système

L'ensemble du système fonctionne sur le workflow de l'inventeur, avec deux chemins de parallélisation : la ligne principale et la ligne secondaire, totalement découplées et non bloquantes.

Chemin de parallélisationFréquence de déclenchementModules responsablesTâche principale
Ligne principale de tradingToutes les 10 minutesFiltrage des actifs → Boucle de traitement → Agent IA → Exécution des tradesRecherche d'opportunités, passation d'ordres
Ligne secondaire de tradingToutes les 30 secondesTake-profit / Stop-lossSurveillance des positions, stop suiveur, rachat à l'échéance

La ligne principale est chargée de « trouver les opportunités, ouvrir des positions ». Chaque cycle d'exécution comprend quatre étapes séquentielles : filtrage préliminaire → détection d'anomalies sur les bougies → recherche d'actualités → analyse multi-rôles par IA, aboutissant à un signal d'achat puis à l'exécution des ordres. La ligne secondaire ne s'occupe que des « positions existantes », s'exécutant en continu toutes les 30 secondes, que la ligne principale ait des tâches en cours ou non, la ligne secondaire ne s'arrête jamais.

Cette séparation répond à un problème concret : les variations de prix sur les marchés prédictifs sont continues, mais l'analyse de sélection des actifs est lourde en calcul et à latence élevée. Si la surveillance des stop-loss était intégrée dans la ligne principale, en cas de lenteur de l'analyse IA, la réponse du stop-loss serait gravement retardée. Une parallélisation indépendante est un compromis d'ingénierie nécessaire.


Détail des modules

Filtrage préliminaire : éliminer les actifs indésirables en premier

Avec 60 000 actifs, il est impossible de les analyser un par un. La première barrière est donc un filtrage basé sur des règles pures, avec un seul objectif : éliminer rapidement les actifs qui ne valent manifestement pas la peine d'être examinés, et réserver les ressources de calcul aux actifs réellement intéressants.

Les critères de filtrage incluent : un seuil minimum de liquidité (trop bas signifie difficulté à acheter/vendre), un volume de transactions minimum sur 24 heures (les actifs pratiquement sans transactions manquent de référence), un écart maximal entre le prix d'achat et le prix de vente (un écart trop élevé implique des coûts de glissement élevés), un seuil maximum de concurrence, ainsi qu'une fourchette de prix – on ne s'intéresse qu'aux actifs dont la probabilité implicite du marché est comprise entre 5 % et 50 %. Au-dessus, le prix est déjà bien intégré et la marge de hausse limitée ; en dessous, la crédibilité est douteuse, plus proche d'un billet de loterie que d'une opportunité d'arbitrage.

Après le filtrage, un même événement a généralement deux directions listées : Yes et No. La stratégie ne conserve que celle avec le prix le plus bas, car l'élasticité des cotes du côté le moins cher est plus grande et le rendement potentiel plus élevé.

javascript
let truePrice = parseFloat(outcomePrices[outcomeIndex] || 0) if (truePrice < CONFIG.MIN_TRUE_PRICE || truePrice > CONFIG.MAX_TRUE_PRICE) continue let isActive = ( info.active === true && info.approved === true && info.closed === false && info.archived === false && info.acceptingOrders === true && info.pendingDeployment === false ) if (!isActive) continue let spreadPct = (ask - bid) / ask if (spreadPct > CONFIG.MAX_SPREAD_PCT) continue // Pour un même événement, ne conserver que la direction avec le prix le plus bas if (!marketMap[baseSymbol]) { marketMap[baseSymbol] = entry } else if (truePrice < marketMap[baseSymbol].price) { marketMap[baseSymbol] = entry }

Tous les seuils de filtrage sont exposés via les variables $vars en tant que paramètres externes, que l'on peut ajuster librement selon sa propre tolérance au risque et la taille de son capital, sans avoir à modifier le code.

img

Détection d'anomalies sur les bougies : trouver les traces des flux de capitaux

Après le filtrage grossier, pour chaque actif retenu, on récupère les 240 bougies les plus récentes en intervalle de 60 minutes, et on effectue cinq types de détection d'anomalies. C'est la couche de signaux centrale de la stratégie, et aussi la différence fondamentale entre ce système et le fait de « simplement soumettre l'événement à l'IA » – on ne devine pas le résultat de l'événement, on cherche les comportements de capitaux.

Montée lente : augmentation totale de plus de 5 % sur les 120 dernières bougies, mais avec une augmentation maximale individuelle inférieure à 1,5 %. Cette caractéristique décrit une posture d'accumulation où les capitaux freinent délibérément le rythme pour éviter d'attirer l'attention.

Croissance linéaire du volume : régression linéaire sur la séquence des volumes des 60 dernières bougies, avec une pente positive et un R² supérieur à 0,5. Cela indique que le volume augmente de façon continue et stable, et non par impulsions aléatoires. Le R² est crucial car il filtre les cas où une seule bougie a un volume énorme tandis que les autres sont calmes.

Rétrécissement des corrections : on calcule la profondeur maximale de chaque correction après le point haut historique. Si la correction moyenne récente est inférieure à 60 % de celle des premières corrections, cela signifie que la pression vendeuse diminue, que les positions se stabilisent, et que quelqu'un rachète. On suit le prix le plus bas en continu pendant chaque période de correction, et on utilise l'amplitude complète de la correction comme base de calcul.

Breakout de range : l'écart entre MA60 et MA120 est inférieur à 2 % (range), tandis que le prix actuel dépasse MA60 de 3 %, ce qui est interprété comme une sortie de la résistance précédente.

Augmentation soudaine du volume : le volume moyen des 5 dernières bougies est supérieur à 2,5 fois le volume de référence des 60 bougies précédentes, interprété comme une accélération de l'entrée de capitaux.

javascript
function linearRegression(values) { let n = values.length let sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0 for (let i = 0; i < n; i++) { sumX += i; sumY += values[i] sumXY += i * values[i]; sumX2 += i * i } let slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX) let intercept = (sumY - slope * sumX) / n let meanY = sumY / n let ssTot = 0, ssRes = 0 for (let i = 0; i < n; i++) { ssTot += Math.pow(values[i] - meanY, 2) ssRes += Math.pow(values[i] - (slope * i + intercept), 2) } let r2 = ssTot === 0 ? 0 : 1 - ssRes / ssTot return { slope, intercept, r2 } } function detectAnomaly(closes, volumes) { if (closes.length < 60) return null let anomalies = [], score = 0 let slice120 = closes.slice(-Math.min(120, closes.length)) // ── 异常1:缓慢爬升 ────────────────────────────────────── let totalChange = (slice120[slice120.length - 1] - slice120[0]) / slice120[0] let maxSingle = 0 for (let i = 1; i < slice120.length; i++) { let change = Math.abs(slice120[i] - slice120[i - 1]) / slice120[i - 1] if (change > maxSingle) maxSingle = change } if (totalChange > 0.05 && maxSingle < 0.015) { score++ anomalies.push(`缓慢爬升 总涨${(totalChange * 100).toFixed(1)}% 单根最大${(maxSingle * 100).toFixed(2)}%`) } // ── 异常2:成交量线性增长 ───────────────────────────────── let volSlice = volumes.slice(-60) let volReg = linearRegression(volSlice) if (volReg.slope > 0 && volReg.r2 > 0.5) { score++ anomalies.push(`成交量线性增长 斜率${volReg.slope.toFixed(4)} R²${volReg.r2.toFixed(2)}`) } // ── 异常3:回调收窄(追踪每次回调最低价,计算完整深度)──── let pullbacks = [], localHigh = closes[0] let inPullback = false, pullbackLow = closes[0] for (let i = 1; i < slice120.length; i++) { if (closes[i] > localHigh) { if (inPullback) { pullbacks.push((localHigh - pullbackLow) / localHigh) inPullback = false } localHigh = closes[i] } else if (closes[i] < localHigh * 0.99) { if (!inPullback) { inPullback = true; pullbackLow = closes[i] } else if (closes[i] < pullbackLow) { pullbackLow = closes[i] } } } if (pullbacks.length >= 3) { let first = pullbacks.slice(0, Math.floor(pullbacks.length / 2)) let last = pullbacks.slice(Math.floor(pullbacks.length / 2)) let firstAvg = first.reduce((a, b) => a + b, 0) / first.length let lastAvg = last.reduce((a, b) => a + b, 0) / last.length if (lastAvg < firstAvg * 0.6) { score++ anomalies.push(`回调收窄 早期${(firstAvg * 100).toFixed(2)}% 近期${(lastAvg * 100).toFixed(2)}%`) } } // ── 异常4:横盘突破 ─────────────────────────────────────── let ma60 = closes.slice(-60).reduce((a, b) => a + b, 0) / 60 let ma120 = closes.length >= 120 ? closes.slice(-120).reduce((a, b) => a + b, 0) / 120 : ma60 let currentPrice = closes[closes.length - 1] if (Math.abs(ma60 - ma120) / ma120 < 0.02 && currentPrice > ma60 * 1.03) { score++ anomalies.push(`横盘突破 MA60=${ma60.toFixed(3)} MA120=${ma120.toFixed(3)} 当前=${currentPrice.toFixed(3)}`) } // ── 异常5:成交量突增 ───────────────────────────────────── let recentVol = volumes.slice(-5).reduce((a, b) => a + b, 0) / 5 let baseVol = volumes.slice(-65, -5).reduce((a, b) => a + b, 0) / 60 if (baseVol > 0 && recentVol > baseVol * 2.5) { score++ anomalies.push(`成交量突增 近5根均量是基准${(recentVol / baseVol).toFixed(1)}倍`) } return { score, anomalies } }

Chaque anomalie détectée ajoute un point, score maximum 5. Seuls les titres avec un score d'au moins 2 passent à l'étape suivante. Un signal isolé peut n'être qu'un bruit aléatoire ; seule une accumulation de signaux indique une crédibilité suffisante des mouvements de capitaux — c'est l'hypothèse centrale de la logique de détection sur chandeliers.

Recherche d'actualités : trouver une explication fondamentale aux anomalies

Les signaux sur les chandeliers sont la preuve que « des capitaux bougent », mais pourquoi ils bougent et si ces mouvements sont justifiés nécessitent une vérification par les informations fondamentales. Cette étape consiste à rechercher des actualités pour chaque titre présentant une anomalie sur les chandeliers, afin de voir s'il existe des événements correspondants pour les étayer. On utilise ici l'API Brave Search, qui offre 2000 requêtes gratuites par mois, ce qui est suffisant pour un rythme de rotation toutes les 10 minutes. Les mots‑clés de recherche sont extraits du symbole, en supprimant les suffixes directionnels et les séparateurs pour les transformer en descriptions d'événements lisibles.

javascript
const q = item.symbol .replace("_USDC.No", "") .replace("_USDC.Yes", "") .replace(/-/g, "+") const rawResponse = HttpQuery( "https://api.search.brave.com/res/v1/web/search?q=" + q, { method: "GET", headers: { "X-Subscription-Token": CONFIG.BRAVE_API_KEY } } ) // Parcourt toutes les sections retournées (web, actualités, etc.) et extrait les champs structurés de manière unifiée Object.keys(data).forEach(key => { const section = data[key] if (section && section.results && Array.isArray(section.results)) { section.results.forEach(r => { news.push({ type: key, title: r.title, description: r.description, age: r.age }) }) } })

Les actualités ainsi récupérées sont empaquetées avec les données de bougies pour l'étape suivante d'analyse IA — une double validation en parallèle, bien plus fiable qu'un seul point de vue.

Analyse multi-rôle de l'IA : quatre perspectives pour éviter l'auto-persuasion

Une fois les données prêtes, on entre dans le nœud d'analyse IA. Le modèle choisit selon ses besoins. Le prompt définit quatre rôles indépendants, c'est la décision de conception la plus centrale du système, méritant d'être détaillée.

Si l'on demandait à une seule IA d'analyser à la fois les bougies et les actualités, elle aurait tendance à se valider elle-même entre les deux, produisant une conclusion apparemment raisonnable mais manquant de vérification indépendante — utilisant le signal monétaire pour cautionner l'actualité, et l'actualité pour cautionner le signal monétaire, aboutissant à un résultat d'auto-renforcement du type « je pense qu'on peut acheter ». L'isolation des rôles force l'indépendance des sources d'information : chaque rôle ne voit que ses propres données, ne produit que sa propre conclusion, et le rôle de décision finale ne voit que les conclusions, pas le processus.

Rôle 1 : Analyste des flux de capitaux sur bougies, sans regarder les actualités, il n'examine que les anomalies de prix et de volume pour déterminer s'il y a un véritable achat continu de capitaux, et évalue la force du signal (fort/moyen/référence).

Rôle 2 : Analyste de l'opinion médiatique, sans regarder les bougies, il n'évalue que l'information fondamentale pour déterminer s'il y a des événements positifs non encore intégrés par le marché, et évalue le niveau de soutien médiatique (fort/faible/aucun).

Rôle 3 : Analyste de l'évaluation des prix, il synthétise les conclusions des deux premiers rôles, estime la fourchette de probabilité réelle de l'événement, compare au prix actuel du marché, et donne une évaluation (sous-évalué/raisonnable/surévalué). Ce rôle intègre une règle de poids basée sur l'échéance : estimation normale au-delà de 7 jours ; à moins de 3 jours et si le prix du marché est supérieur à 0,15, il resserre de force la fourchette de probabilité et interdit la mention « gravement sous-évalué ». La logique est directe : à l'approche de l'échéance, les participants au marché disposent d'informations en temps réel plus complètes que les données d'entraînement de l'IA, le jugement de l'IA doit donc s'effacer devant le prix du marché.

Rôle 4 : Analyste de décision finale, selon une matrice de décision, il synthétise les conclusions des trois premiers rôles et émet l'action finale. La logique de la matrice est : le signal monétaire est une condition préalable, les actualités sont une validation, et les deux déterminent ensemble le niveau de confiance ; mais quel que soit le niveau de confiance, si l'évaluation des prix n'atteint pas « sous-évalué », aucune action n'est entreprise.

Ici, la validation par les actualités ne consiste pas à traquer l'information, mais à déterminer si le comportement des capitaux a déjà un soutien fondamental. Lorsque des capitaux initiés se positionnent, l'information n'apparaît pas dans les actualités publiques. Mais un signal monétaire couplé à un soutien médiatique indique que l'information est en phase de diffusion intermédiaire et que le marché a encore une marge de retard de prix — c'est la fenêtre que la stratégie cherche vraiment à capturer.

Signal monétaire \ Soutien médiatiqueValidation forteValidation faibleAucune validation
Fort (score 4~5)Achat, confiance=hauteAchat, confiance=moyennePas d'action
Moyen (score 3)Achat, confiance=moyenneObservationPas d'action
Référence (score 2)ObservationPas d'actionPas d'action

Le format de sortie de l'IA est un JSON strict, contenant les conclusions de chaque rôle, la fourchette de probabilité réelle, l'évaluation du prix, la décision finale, la confiance et la liste des risques, directement consommé par le nœud d'exécution en aval.

Exécution des transactions : n'acheter que le meilleur

Après que l'IA ait noté chaque actif d'un lot, la couche d'exécution ne passe pas tous les ordres d'achat — le système ne sélectionne que le mieux noté. L'ordre de tri est : confiance (haute > moyenne > basse) → évaluation du prix (gravement sous-évalué > sous-évalué) → largeur de la fourchette de probabilité réelle (plus étroite = jugement plus certain).

javascript
const buySignals = signals.filter(s => s.signal === 'buy') bestSignal = buySignals.sort((a, b) => { const confDiff = (confidenceRank[b.confidence] || 0) - (confidenceRank[a.confidence] || 0) if (confDiff !== 0) return confDiff const assessDiff = (assessmentRank[b.priceAssessment] || 0) - (assessmentRank[a.priceAssessment] || 0) if (assessDiff !== 0) return assessDiff // Une fourchette plus étroite signifie plus de certitude, on privilégie la plus étroite const aWidth = (a.trueProb.max || 0) - (a.trueProb.min || 0) const bWidth = (b.trueProb.max || 0) - (b.trueProb.min || 0) return aWidth - bWidth })[0]

Une fois l'actif sélectionné, on récupère en temps réel le prix Ask du carnet d'ordres, on vérifie que le solde est suffisant, et on soumet un ordre à cours limité. Après la soumission, on interroge l'état de l'ordre, avec un temps d'attente maximum de 30 secondes ; en cas de dépassement, on annule l'ordre, garantissant qu'aucun ordre en suspens ne s'accumule. Si, pour ce tour, le prix Ask multiplié par la part configurée est inférieur au seuil minimum de transaction de 1 USDC, le système arrondit automatiquement à la hausse selon ceil(1/askPrice) pour atteindre la part minimale exécutable.

Module Stop-Loss : Stop-Loss Suiveur + Filet de Sécurité Absolu

La ligne secondaire s'exécute toutes les 30 secondes, la logique se déroule en deux étapes : d'abord, traiter les rachats à échéance, puis vérifier le stop-loss suiveur pour les positions actives.

Polymarket a un mécanisme spécial — les fonds ne reviennent pas automatiquement sur le compte à l'échéance du contrat ; il faut appeler redeem activement. Au début de chaque cycle de la ligne secondaire, la stratégie scanne tous les rachats disponibles de manière unifiée pour libérer les fonds par lots, évitant ainsi un blocage prolongé des capitaux.

Le cœur du stop-loss suiveur est une conception à double piste : la ligne de stop-loss suiveur (prix Bid historique le plus élevé - baisse fixe LOSS_AMOUNT) et la ligne de filet de sécurité absolu (prix d'entrée × 50%). Le prix de stop-loss effectif est la valeur la plus élevée des deux.

javascript
function calcStopPrice(entryPrice, maxPrice) { const trailingStopPrice = maxPrice - CONFIG.LOSS_AMOUNT const absoluteStopPrice = entryPrice * CONFIG.FALLBACK_STOP_RATIO // fixe 0.50 const usingFallback = trailingStopPrice < absoluteStopPrice const effectiveStopPrice = usingFallback ? absoluteStopPrice : trailingStopPrice return { effectiveStopPrice, trailingStopPrice, absoluteStopPrice, usingFallback } }

Cette conception à double piste correspond à deux scénarios de détention typiques : en phase de profit, la ligne de stop-loss suiveur monte avec le prix, verrouillant les gains latents ; en cas de perte dès l'entrée, la ligne de stop-loss suiveur pourrait devenir négative ou proche de zéro, c'est alors la ligne de filet de sécurité absolu (prix d'entrée × 50%) qui prend le relais, empêchant la position de chuter jusqu'à zéro avant la sortie. Les deux lignes ont chacune leur rôle, aucune n'est superflue.

Lorsque le stop-loss est déclenché, on appelle une vente au prix du marché, on efface le cache du prix le plus élevé de cet actif, et on attend le prochain signal d'ouverture de position. Le tableau de bord affiche en temps réel la marge restante de chaque position par rapport à sa ligne de stop-loss, avec un code couleur pour le niveau d'alerte, facilitant la vérification manuelle.


Décisions Clés de Conception

Pourquoi utiliser plusieurs rôles plutôt qu'un seul prompt complet ? Cette question a été partiellement abordée dans la section d'analyse, mais mérite d'être précisée. Le problème d'un seul prompt n'est pas seulement « l'auto-persuasion » ; il y a un risque plus insidieux : lorsque l'IA traite simultanément des données de bougies et des textes d'actualités, elle a tendance à utiliser ces derniers pour expliquer les premières, « rationalisant » les anomalies de bougies comme une conséquence inévitable de l'actualité, au lieu de traiter les deux comme des signaux indépendants. L'isolation des rôles vise à imposer deux chaînes d'information indépendantes ; au moment de la synthèse finale, si les deux chaînes pointent dans la même direction, la fiabilité est réelle.

Pourquoi n'acheter que le meilleur à chaque tour plutôt que de diversifier les positions ? La diversification des positions a une base théorique solide dans la finance traditionnelle, mais sa logique ne s'applique pas parfaitement aux marchés prédictifs. Le résultat des actifs sur les marchés prédictifs est binaire, et le risque de perte totale (à zéro) est réel. Si l'on détient simultanément trois actifs à confiance moyenne, et que deux tombent à zéro pendant que le troisième monte, le rendement global pourrait ne pas compenser les pertes. Le choix de la stratégie actuelle est : mieux vaut concentrer la mise sur la précision que de diluer la qualité avec la quantité. Ce compromis n'est pas nécessairement optimal, mais il est logiquement cohérent.

Pourquoi la règle de poids basée sur l'échéance doit-elle être une contrainte stricte ? À l'approche de l'échéance, le prix du marché reflète les anticipations en temps réel des participants, dont une grande partie dispose d'informations plus récentes que les données d'entraînement de l'IA. Si, à ce moment-là, l'IA émet encore un signal « prix gravement sous-évalué, il faut acheter », il est fort probable que ses informations soient déjà obsolètes. Faire de cette règle une contrainte plutôt qu'une suggestion est nécessaire car il est irréaliste de compter sur l'IA elle-même pour reconnaître que « mes informations ne sont plus assez récentes » ; une intervention externe forcée est requise.


Observations en Direct

À partir des enregistrements réels d'exécution, le taux d'entonnoir de la stratégie est assez abrupt. Lors d'une exécution, sur 141 actifs ayant passé le premier filtre, seuls 3 restent après la détection d'anomalies de chandeliers, et finalement un seul déclenche un ordre car il satisfait simultanément au signal de capital, au soutien des actualités et à l'évaluation des prix ; les deux autres sont ignorés, l'un en raison d'une évaluation des prix jugée « raisonnable » et l'autre d'un score global insuffisant. Cela montre que la stratégie est globalement prudente, préférant rester à vide plutôt que de réduire les critères. Pendant les périodes de marché calme sans événement notable dans l'opinion publique, le système peut n'émettre aucun signal d'achat de toute la journée. C'est un choix de conception, pas un bug. Nous avons également rencontré des cas où une anomalie de chandelier s'est avérée être une fausse cassure : les capitaux sont entrés brièvement puis sont ressortis, avec un stop suiveur déclenché pour sortir. L'analyse des actualités comporte également du bruit : les reportages sur les événements pertinents peuvent eux-mêmes être retardés ou biaisés, et l'IA seule ne peut pas les identifier complètement.

Le tableau de bord affiche en temps réel les capitaux propres du compte, l'état des positions (Bid/Ask actuel, plus haut prix, distance de retrait par rapport au niveau de stop, mode de stop) et les détails des décisions de l'IA, facilitant la vérification manuelle.

img


Conclusion

Honnêtement, ce système est davantage un cadre d'idées fonctionnel qu'une machine à imprimer de l'argent prête à l'emploi. La logique centrale — traçage des comportements de capitaux, validation à double voie de l'opinion publique et jugement AI multi-rôle — a une certaine validité conceptuelle, mais dans un marché réel, la qualité des signaux est inégale, l'IA commet des erreurs, et le risque de convergence des prix à l'approche de l'échéance est toujours présent.

De nombreuses améliorations sont possibles : les actifs échangés peuvent être restreints à des domaines que vous maîtrisez bien, les prompts de l'IA peuvent être redessinés selon votre propre style de trading, les poids et seuils des cinq types d'anomalies de chandeliers peuvent être optimisés, et le coefficient de stop-loss mérite d'être itéré en fonction des performances réelles des positions. Tout le code est open source, n'hésitez pas à le modifier.

Avertissement sur les risques

La prédiction d'actifs de marché a un caractère binaire, et les positions peuvent être réduites à zéro. Les signaux d'anomalies de chandeliers et les conclusions de l'analyse AI ne constituent pas des conseils d'investissement ; les performances passées des signaux ne garantissent pas les gains futurs. La stratégie n'a pas été validée en trading réel sur une longue période, et les paramètres ont un impact significatif sur les résultats. Avant d'utiliser cette stratégie en trading réel, veuillez bien comprendre les règles de la plateforme Polymarket, le mécanisme d'expiration des contrats et les risques de liquidité, et évaluez par vous-même votre capacité à supporter une perte de capital.

Code source de la stratégie : Stratégie d'analyse et de trading intelligente multi-rôle pour Polymarket

Comment
All comments (0)
No data
No data
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)