avatar of 发明者量化-小小梦 发明者量化-小小梦
Suivre Messages privés
4
Suivre
1271
Abonnés

Outil de trading quantitatif d'options de devises numériques prêt à l'emploi

Créé le: 2019-12-27 17:35:30, Mis à jour le: 2023-10-17 21:26:52
comments   0
hits   2907

Outil de trading quantitatif d’options de devises numériques prêt à l’emploi

Outil de trading quantitatif d’options de devises numériques prêt à l’emploi

1. Trading quantitatif et programmé d’options sur devises numériques

Récemment, de nombreuses bourses ont commencé à négocier des dérivés d’options sur devises numériques. Comme pour les options traditionnelles, la combinaison du trading d’options et du trading à terme peut créer une variété de stratégies et de méthodes de trading. Bien qu’il existe de nombreux outils de trading quantitatif open source sur le marché, ces outils nécessitent souvent de comprendre le cadre sous-jacent, d’être familier avec le langage de programmation utilisé pour écrire le cadre ou d’effectuer manuellement un débogage, une configuration et une modification complexes. Ce n’est pas très pratique pour les novices qui découvrent le trading programmatique et le trading quantitatif. Une grande partie du temps qui aurait dû être consacré aux stratégies et aux idées de trading est consacrée au débogage de programmes et à l’apprentissage des langages de programmation.

Lors de la conception de son architecture initiale, FMZ.COM a pris en compte la prise en charge du trading quantitatif et programmé de divers produits dérivés financiers et s’est rapidement connecté au trading d’options. Le trading d’options est fondamentalement similaire au trading à terme, voire plus simple. Et aucune nouvelle interface n’est ajoutée. Les utilisateurs qui sont familiarisés avec l’utilisation de FMZ n’encourront aucun coût d’apprentissage supplémentaire. Ils n’ont qu’à configurer des contrats d’options en tant que contrats à terme pour obtenir des informations sur le marché, passer des commandes, annuler des commandes, vérifier des positions et effectuer d’autres tâches. opérations sur contrats d’options.

2. Accédez directement à l’échange Deribit à l’aide du langage de programmation natif

Prenons comme exemple le contrat d’options d’échange Deribit. Par exemple, nous souhaitons obtenir le prix indexé d’un contrat d’options actuel.

Implémenté en Go :

package main 

import "net/http"
import "io/ioutil"
import "fmt"
import "encoding/json"



func main() {
    // 获取行情, 访问接口:https://www.deribit.com/api/v2/public/ticker?instrument_name=BTC-27DEC19-7250-P

    resp, err := http.Get("https://www.deribit.com/api/v2/public/ticker?instrument_name=BTC-27DEC19-7250-P")
    if err != nil {
        panic(err)
    }

    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    ret := string(body)
    fmt.Println("这只是字符串数据ticker:", ret)
    fmt.Println("需要转换为JSON格式") 

    type js struct {
        data interface{}
    }

    ticker := new(js)

    json.Unmarshal([]byte(ret), &ticker.data)

    fmt.Println("ticker:", ticker) 
    fmt.Println("ticker 中的标记价格数据index_price:", ticker.data.(map[string]interface{})["result"].(map[string]interface{})["index_price"])
}

Outil de trading quantitatif d’options de devises numériques prêt à l’emploi

Vous pouvez voir qu’une grande quantité de code a été écrite juste pour obtenir ces données.

3. Utilisez l’interface encapsulée par la plateforme de trading quantitative Inventor

Nous utilisons FMZ pour le faire en seulement deux phrases.

function main() {
    exchange.IO("base", "https://test.deribit.com")   # 切换为 交易所提供的模拟盘
    exchange.SetContractType("BTC-3JAN20-7250-P")     # 设置期权合约
    var ticker = exchange.GetTicker()                 # 获取期权行情
    Log(ticker.Info.result.index_price)               # 打印需要的数据,观察
}

Outil de trading quantitatif d’options de devises numériques prêt à l’emploi

Comme vous pouvez le voir, avec seulement quelques lignes de code, il est très facile d’obtenir les données requises.

Il s’agit simplement d’accéder à l’interface API publique non signée de l’échange. L’accès à l’interface privée signée sera plus compliqué.

Chaque interface doit également effectuer de nombreuses signatures, paramètres et autres traitements :

        strBody := ""
	strQuery := ""
	ts := toString(time.Now().UnixNano() / 1e6)
	nonce := toString(time.Now().UnixNano() / 1e6)
	uri := resource
	if httpMethod == "GET" {
		strQuery = encodeParams(params, false)
		uri = fmt.Sprintf("%s?%s", resource, strQuery)
	} else if httpMethod == "POST" {
		if len(raw) > 0 && len(raw[0]) > 0 {
			strBody = raw[0]
		} else {
			strBody = json_encode(params)
		}
	}

	strRequestDate := fmt.Sprintf("%s\n%s\n%s\n", httpMethod, uri, strBody)
	strToSign := fmt.Sprintf("%s\n%s\n%s", ts, nonce, strRequestDate)
	h := hmac.New(sha256.New, []byte(p.secretKey))
	h.Write([]byte(strToSign))
	strSign := hex.EncodeToString(h.Sum(nil))

	req := Request{
		Method:  httpMethod,
		Uri:     fmt.Sprintf("%s%s", p.apiBase, uri),
		Timeout: p.timeout,
		Body:    strBody,
	}

4. Exigences et fonctions plus complexes

De plus, si vous devez obtenir des informations sur le marché et passer des commandes simultanément et de manière asynchrone, et utiliser une bibliothèque de codes qui gère les opérations asynchrones, vous devez écrire une logique de traitement asynchrone plus complexe, ce qui peut entraîner des problèmes de conception logique tels que des blocages si vous êtes pas prudent. Si vous devez à nouveau utiliser l’affichage graphique, vous devrez apprendre à utiliser de nombreuses bibliothèques. Même pour un trader quantitatif ayant des connaissances de base en programmation, il faudra un certain temps pour apprendre. Cependant, il est beaucoup plus simple d’utiliser Inventor Quantization, car ces fonctions ont été encapsulées et les interfaces d’appel conçues sont très simples et faciles à utiliser. Vous pouvez utiliser très peu de code pour implémenter les différentes fonctions requises.

function main(){
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7250-P")
    while(1){
        var records = exchange.GetRecords()
        Log(records)
        $.PlotRecords(records, "K")
        Sleep(1000)
    }
}

En utilisant la bibliothèque de modèles « Drawing Line Library » fournie par la plateforme, il est très facile de dessiner un graphique K-line : Outil de trading quantitatif d’options de devises numériques prêt à l’emploi

Il y a bien d’autres fonctionnalités à explorer et à développer !

5. Post-scriptum

Si vous utilisez le langage Go (ou Python, etc.) comme celui ci-dessus pour l’implémenter, les nouveaux étudiants peuvent être découragés directement >_< Pour un exemple de stratégie sur les options Deribit, voir : https://www.fmz.com/strategy/179475