Modification de l'API Deribit pour les contrats à terme avec des options quantitatives

Auteur:Le petit rêve, Créé: 2019-10-29 14:57:54, Mis à jour: 2023-10-17 21:20:50

img

Il existe de nombreux échanges de futures en crypto-monnaie, mais il n'y a pas beaucoup d'échanges sur le marché actuellement, comme Deribit, BitMEX. Dans le domaine de la négociation quantitative, le trading d'options comporte également plusieurs stratégies, telles que la stratégie d'options mentionnée dans certaines informations:

Le type
La stratégie de direction: Acheter des options sur les titres Vente d'options à la baisse Le prix de l'ail est en baisse Les prix des taureaux baissent
Acheter des options à la baisse Vente d'options sur le prix Les marchés baissiers ont vu le prix de l'aluminium baisser Les prix baissent en baisse
La stratégie de fluctuation: Vente à l'extérieur Vente à grande échelle Les achats à travers Acheter une large gamme
La stratégie de couverture: Préparez-vous à voir Les réservations baissent Les guêpes protectrices Une baisse protectrice
Le double de tête Les deux bouts de tête

Cité parConnexion

La stratégie de négociation d'options nécessite toujours une base solide, les opérations de base, l'enregistrement, l'acquisition, le retrait et l'acquisition de titres doivent être familiarisés. La stratégie est toujours utilisée par les plateformes de négociation quantitative des inventeurs, bien que les plateformes de négociation quantitative des inventeurs soient actuellement principalement utilisées dans le domaine de la négociation quantitative des devises numériques.

Deribit est un site web.

L'API est documentée:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentLe disque:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

Il est possible d'enregistrer un compte sur le site Web de l'analogue, d'ouvrir l'API KEY et d'accéder à l'API KEY.img

Il y a quatre concepts de base à comprendre pour les options:img

  • Date d'exécution: la date à laquelle les parties à l'option remplissent le contrat d'option.
  • Prix d'option: le jour de l'option, les parties à l'option remplissent le contrat d'option au prix d'option.
  • Le prix de l'option est le prix auquel l'option est vendue ou achetée. Il est à noter que, comme la liquidité des options est généralement inférieure à celle des contrats à terme et à la liquidité, il peut y avoir une différence de prix d'achat et de vente très importante. Il convient de noter que, après la transaction, le prix de transaction est le coût de l'option multiple, lorsque l'option multiple obtient le droit (l'exercice du droit d'option); tandis que l'emplacement de l'option en tant que paiement du droit ajoute une obligation, une fois que l'option multiple demande l'exercice du droit, l'emplacement doit être coordonné.
  • Les options de mise et d'achat sont les suivantes: Une option en hausse est une option sur laquelle plusieurs parties ont le droit d'acheter un certain nombre de bitcoins sur une certaine date, à un certain prix, et l'option sur laquelle plusieurs parties ont l'obligation d'acheter un certain nombre de bitcoins. Une option sur la baisse est une option sur laquelle plusieurs parties ont le droit de vendre des bitcoins sur une certaine date, à un certain prix.

Acquisition

En regardant la documentation API de Deribit Exchange, on peut voir que l'interface de marché de Deribit n'est qu'une entrée pour accéder au marché des contrats à terme ou des options.instrument_nameSi les paramètres sont différents (instrument_name est réglé via la fonction SetContractType), vous pouvez essentiellement utiliser l'interface pour obtenir le marché.GetTickerLe marché des options est un marché où les investisseurs peuvent acheter des titres.

Bien sûr, l'inventeur de la plateforme de trading quantifié est enveloppé par défaut dans le disque dur de Deribit, nous devons d'abord passer au disque analogique en utilisant le code suivant:

exchange.IO("base", "https://test.deribit.com")

Et puis nous avons mis en place les contrats d'options actuels.BTC-27DEC19-7000-PJe ne sais pas. C'est la date de mise en marché: 27 DEC 19, le prix de mise en marché: 7 000 options à la baisse

exchange.SetContractType("BTC-27DEC19-7000-P")

Ensuite, nous écrivons ensemble, nous laissons le code fonctionner et nous testons comment obtenir ce contrat d'options.

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    var ticker = exchange.GetTicker()
    Log(ticker)
}

Les outils de débogage peuvent être utilisés pour effectuer des tests pratiques:imgLe prix de l'appareil est identique à celui du disque.img

Les autres interfaces utilisées par le secteur sont cohérentes et ne seront pas décrites ici, mais il convient de noter: Les transactions d'options ne sont pas très actives, et il arrive parfois que le marché n'ait pas de paiement, ou qu'il n'y ait pas d'ordre de vente, à ce moment-là, les inventeurs quantifient le bas de la plate-forme de négociation pour détecter un nombre de zéro, ce qui rend l'erreur, ce qui peut être utilisé.SetErrorFilter("Invalid ticker")Il y a des gens qui ne sont pas d'accord avec cette erreur.GetRawJSONLes fonctions peuvent être utilisées pour obtenir des données d'emballage d'informations primitives sur le marché, et j'ai écrit ici un exemple pour une fonction similaire:

function init() {
    SetErrorFilter("Invalid ticker")
}

$.GetTicker = function(e) {
    var ticker = e.GetTicker()
    if (!ticker) {
        try {
            var ret = JSON.parse(e.GetRawJSON())
            return {
                Info : ret,
                High : ret.result.stats.high,
                Low : ret.result.stats.low, 
                Buy : ret.result.best_bid_price,
                Sell : ret.result.best_ask_price,
                Last : ret.result.last_price, 
                Volume : ret.result.stats.volume,
                OpenInterest : 0,
                Time : new Date().getTime()
            }
        } catch (err) {
            Log(err)
        }
    }
    
    return ticker
}

Il a écrit sur son téléphone:Log($.GetTicker(exchange))

Voici la liste

L'opération suivante est très simple, comparée à la négociation de contrats à terme, il n'y a que deux directions d'achat et de vente.Sell,BuyLes fonctions sont classées comme suit:

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    
    var id = exchange.Buy(0.017, 1)
    Log(exchange.GetOrder(id))
}

img

Les commandes qui viennent d'être passées apparaissent également sur le disque.img

etexchange.GetOrder(id)Vous pouvez consulter les informations relatives à votre commande.

Le retrait

Le retrait est également utiliséCancelOrderLes opérations de dépôt de titres sont des opérations de dépôt de titres, comme les opérations de dépôt de titres.img

Acquérir des actifs disponibles dans le compte

Les conditions d'acquisition des actifs disponibles dans le compte sont les mêmes que pour les contrats à terme.GetAccountLes fonctions peuvent être utilisées.

Affichage sur la page de l'analogueimg

Le code d'exécution est obtenu:img

Obtenir des renseignements sur les stocks

Il est impossible d'utiliser directement les emballages.GetPositionLa fonction est terminée, car les transactions par défaut Deribit sont des transactions à terme, et non des transactions d'options, et ne peut être utilisé que pour obtenir des positions futures. Il faut donc que nous enveloppions nous-mêmes la fonction d'acquisition d'options.

L'interface des fonctions pour obtenir le stockage sur la documentation de l'API:img

$.GetPosition = function(e) {
    // /private/get_positions
    // currency  , kind 
    
    var positions = [] 
    var currency = e.GetCurrency()
    var arr = currency.split("_")
    var baseCurrency = arr[0]
    
    try {
        var ret = e.IO("api", "GET", "/api/v2/private/get_positions", "currency=" + baseCurrency + "&kind=option")
        for (var i in ret.result) {
            if (ret.result[i].size == 0 || ret.result[i].direction == "zero") {
                continue    
            } 
            
            var pos = {
                Info : ret.result[i], 
                Amount : ret.result[i].size,
                FrozenAmount : 0,
                Price : ret.result[i].average_price,
                Profit : ret.result[i].floating_profit_loss,
                MarginLevel : 0,
                Margin : 0,
                ContractType : ret.result[i].instrument_name,
                Type : ret.result[i].direction == "buy" ? ORDER_TYPE_BUY : ORDER_TYPE_SELL,
            }
            
            positions.push(pos)
        }
    } catch (err) {
        Log(err)
        positions = null
    }
    
    return positions
}

AppeléeLog($.GetPosition(exchange))Il est possible d'imprimer des informations sur les stocks.img img

Ainsi, les opérations de base peuvent être réalisées, et le reste peut être étudié dans les stratégies de trading d'options.


Relationnée

Plus de