Plongez dans le trading algorithmique sur Hyperliquid

Guide du trading algo sur Hyperliquid DEX : créez vos API Wallet non-custodial, intégrez ccxt en Python et exécutez vos ordres crypto facilement et en toute sécurité.

Plongez dans le trading algorithmique sur Hyperliquid

Il était temps ! Parlons trading algorithmique sur un échangeur décentralisé (DEX).

Hyperliquid a fait le buzz avec son airdrop géant, l'un des plus grands jamais réalisés, d'une valeur de plus d’1 milliard de dollars ! De quoi attiser notre curiosité et nous pousser à tester cette plateforme.

Outre le fait que le principal avantage des DEX est que l'on peut trader directement avec des fonds sur nos wallets, et donc que ces fonds ne sont pas gardés par une tierce partie, nous avons trouvé la plateforme très bien conçue et conviviale, avec une API qui fonctionne très bien pour du trading algorithmique.

Alors explorons cela ensemble !

Hyperliquid : l’interface en bref

Avant toute chose, pour accéder à la page officielle d'Hyperliquid, vous pouvez passer par ce lien https://app.hyperliquid.xyz/join/CRYPTOROBOT qui en plus vous permettra d'avoir une réduction de frais lorsque vous créerez votre compte hyperliquid.

Vous devrez ensuite connecter votre adresse email ou un wallet crypto. Si vous souhaitez plus de détails sur cette étape ou sur la manière de transférer des fonds, nous abordons ces sujets dans plus de détails dans notre article https://crypto-robot.com/blog/guide-hyperliquid-api-python.

Une fois cette configuration terminée, trader est très simple. Comme illustré dans l’image ci-dessous, l’interface de la plateforme est similaire à celle d’un CEX. Vous pouvez sélectionner un large choix de marchés et de cryptomonnaies (1), puis passer vos ordres de manière intuitive (2).

Mais arrêtons-nous ici pour ce qui est du trading manuel, car aujourd’hui c’est letrading algorithmique que l’on veut illustrer.

Configurer ses clefs API Wallet sur Hyperliquid

La première étape pour pouvoir réaliser du trading via un code est de créer des clefs API, ce qui donnera l’autorisation à votre code de placer des ordres pour vous.

Un des grands avantages de Hyperliquid est que les clefs API sont des “API Wallets” (ou “agent wallets”) et donc à aucun moment vous ne devez renseigner des codes d’accès de votre wallet externe pour trader. De plus, ces types de clefs API ont automatiquement les permissions pour placer des ordres mais jamais pour faire des transferts.

Pour créer cela sur Hyperliquid, rendez-vous dans la rubrique “More” (1 dans le screenshot ci-dessous), ensuite vous devez donner un nom à votre clef et générer son adresse (3), pour ensuite l’autoriser en cliquant sur (4).

Lorsque vous aurez cliqué sur “Authorize”, cette fenêtre ci-dessous s'ouvrira. Pensez bien à indiquer le nombre de jours de validité (1) pour cette clef, 180 étant le maximum, et prenez soin de copier la clef privée du wallet (2). Nous allons en avoir besoin dans notre code.

Authentification avec Hyperliquid en Python

Une bonne nouvelle est que Hyperliquid est assez renommé pour avoir été inclus dans les exchangeurs supportés par la librairie ccxt. C'est une librairie que vous devez sans doute commencer à bien connaître si vous nous suivez, car elle permet de regrouper sous la même structure des centaines d'API d'exchangeur. En d'autres termes, pas besoin de se casser la tête avec les particularités de tous les exchanges, ou encore les complications de cryptage de signature etc., ccxt le fait pour nous. Et aussi, on peut utiliser les méthodes de ccxt directement. Le support de Hyperliquid avec ccxt est encore incomplet aujourd'hui, mais largement suffisant pour placer les ordres qui nous intéressent.

La première chose à faire dans notre code est de mettre en place l’authentification via la clef API que nous venons de créer. Avec ccxt, après l'avoir importé, cela se fait facilement comme ceci :


import ccxt
ex = ccxt.hyperliquid({
    "walletAddress": "", # /!\ Adresse public de votre compte
    "privateKey": "",    # Clef privee de la clef api
})

Où il faut placer entre les guillemets les informations liées à votre compte. Il y a une subtilité ici, attention, dans “walletAddress” il ne faut pas donner l'“API Wallet Address” de la clef API que nous venons de créer mais bien l’adresse publique de votre compte/wallet. Vous pouvez la trouver en haut à droite de la page web en cliquant sur votre compte/adresse, vous pouvez la copier facilement grâce au bouton copie (1).

Esuite, la "privateKey" est par contre bien la clef privée de la clef API que nous venons de créer.

Pour vérifier que nous avons bien entré les bonnes coordonnées, rien de tel qu’un petit “fetch_balance” pour voir que cela ne nous retourne pas d’erreur et bien les fonds que nous avons dans notre wallet, comme ceci :

Nous avions bien transféré 20 USDT pour faire ce tuto, nous les trouvons bien affichés ici, moins les frais du transfert.

Placer des Ordres sur Hyperliquid

Nous sommes maintenant prêts à placer des ordres. Et rien de tel qu’un petit ordre au marché pour s’échauffer ! Avec ccxt, c'est très simple, on fait appel à la méthode “create_order”, comme ceci :


symbol = "ETH/USDC:USDC"
market_type = "market"
side = "buy"
amount = 0.01
price = ex.load_markets()["ETH/USDC:USDC"]["info"]["midPx"]
ex.create_order(symbol, market_type, side, amount, price=price)

Où l’on a défini au préalable les caractéristiques de notre ordre : notre symbole, ici ETH sur le marché futures, le type de l'ordre, le sens, la quantité, donc combien d’ETH. Enfin, il y a une autre petite particularité sur Hyperliquid : même pour un ordre au marché, il faut renseigner un prix, si l'on ne le fait pas, on obtient une erreur disant :

ArgumentsRequired: hyperliquid market orders require price to calculate the max slippage price. Default slippage can be set in options (default is 5%).”

C’est une sécurité pour que l’ordre au marché ne s’exécute pas si le prix au marché est trop éloigné du prix que l’on renseigne.

Ce que nous avons donc fait est de renseigner une estimation de prix au moment du placement de l’ordre, en demandant le “mid price” de ETH (moyenne entre la meilleure bid et ask) à Hyperliquid à cet instant t. Ceci nous le faisons grâce à la méthode “load_markets” de ccxt qui récupère toutes les informations qui caractérisent le marché de chaque coin tradé sur la plateforme. Une méthode importante à connaître.

Une fois le “create_order” exécuté, nous obtenons une réponse de cette forme ci-dessous où nous avons toutes les informations qui le caractérisent.


{
    "info": {
        "filled": {
            "totalSz": "0.01",
            "avgPx": "3564.6",
            "oid": "52344575851"
        }
    },
    "id": "52344575851",
    "clientOrderId": null,
    "timestamp": null,
    "datetime": null,
    "lastTradeTimestamp": null,
    "lastUpdateTimestamp": null,
    "symbol": null,
    "type": null,
    "timeInForce": null,
    "postOnly": null,
    "reduceOnly": null,
    "side": null,
    "price": null,
    "triggerPrice": null,
    "amount": 0.01,
    "cost": null,
    "average": 3564.6,
    "filled": null,
    "remaining": null,
    "status": null,
    "fee": null,
    "trades": [],
    "fees": [],
    "stopPrice": null,
    "takeProfitPrice": null,
    "stopLossPrice": null
}

Comme ceci était une ouverture de position long sur un marché futures, on retrouve cette position sur la page web en dessous du graphique comme ci-dessous.

Faites attention de bien configurer les leviers et le mode de marge (”margin mode”) que vous souhaitez avant d'ouvrir des positions pour éviter des surprises.

Si vous souhaitez savoir comment faire cela par API, tout comme placer, supprimer des ordres plus compliqués comme limite, ou stop limit, etc., nous vous invitons à lire notre article détaillé : https://crypto-robot.com/blog/guide-hyperliquid-api-python. Vous y trouverez aussi les liens vers le code Python qui permet de faire tout cela.

Nous avons aussi réalisé une vidéo sur Hyperliquid si cela vous intéresse, la voici ci-dessous.