avatar of 发明者量化-小小梦 发明者量化-小小梦
konzentrieren Sie sich auf Private Nachricht
4
konzentrieren Sie sich auf
1271
Anhänger

Sofort einsatzbereites quantitatives Handelstool für digitale Währungsoptionen

Erstellt in: 2019-12-27 17:35:30, aktualisiert am: 2023-10-17 21:26:52
comments   0
hits   2907

Sofort einsatzbereites quantitatives Handelstool für digitale Währungsoptionen

Sofort einsatzbereites quantitatives Handelstool für digitale Währungsoptionen

1. Quantitativer und programmierter Handel mit digitalen Währungsoptionen

In letzter Zeit haben viele Börsen mit dem Handel mit Optionsderivaten für digitale Währungen begonnen. Ähnlich wie bei traditionellen Optionen kann die Kombination von Optionshandel und Futures-Handel eine Vielzahl von Handelsstrategien und -methoden hervorbringen. Obwohl es auf dem Markt viele Open-Source-Tools für den quantitativen Handel gibt, ist für diese Tools häufig ein Verständnis des zugrunde liegenden Frameworks, eine Vertrautheit mit der zum Schreiben des Frameworks verwendeten Programmiersprache oder die manuelle Durchführung komplexer Debugging-, Konfigurations- und Änderungsvorgänge erforderlich. Es ist nicht sehr praktisch für Anfänger, die neu im programmatischen Handel und quantitativen Handel sind. Ein Großteil der Zeit, die man auf Handelsstrategien und Handelsideen hätte konzentrieren sollen, wird mit der Programmfehlerbehebung und dem Erlernen von Programmiersprachen verbracht.

Bereits bei der Gestaltung seiner frühen Architektur berücksichtigte FMZ.COM die Unterstützung des quantitativen und programmierten Handels verschiedener Finanzderivate und integrierte diese rasch in den Optionshandel. Der Optionshandel ähnelt grundsätzlich dem Futures-Handel oder ist sogar noch einfacher. Und es werden keine neuen Schnittstellen hinzugefügt. Für Benutzer, die mit der Nutzung von FMZ vertraut sind, entstehen keine zusätzlichen Lernkosten. Sie müssen lediglich Optionskontrakte als Futures-Kontrakte einrichten, um Marktinformationen zu erhalten, Aufträge zu erteilen, Aufträge zu stornieren, Positionen zu überprüfen und andere Operationen mit Optionskontrakten.

2. Greifen Sie mit der nativen Programmiersprache direkt auf die Deribit-Börse zu

Nehmen wir als Beispiel den Deribit-Börsenoptionskontrakt. Wir möchten beispielsweise den Indexpreis eines aktuellen Optionskontrakts erhalten.

In Go implementiert:

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"])
}

Sofort einsatzbereites quantitatives Handelstool für digitale Währungsoptionen

Sie können sehen, dass eine Menge Code geschrieben wurde, nur um diese Daten zu erhalten.

3. Nutzen Sie die Schnittstelle der Inventor Quantitative Trading Platform

Mit FMZ erledigen wir das in nur zwei Sätzen.

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)               # 打印需要的数据,观察
}

Sofort einsatzbereites quantitatives Handelstool für digitale Währungsoptionen

Wie Sie sehen, ist es mit nur wenigen Codezeilen sehr einfach, die erforderlichen Daten abzurufen.

Dies ist lediglich der Zugriff auf die unsignierte öffentliche API-Schnittstelle der Börse. Der Zugriff auf die signierte private Schnittstelle ist komplizierter.

Jede Schnittstelle muss außerdem viele Signatur-, Parameter- und andere Verarbeitungsvorgänge durchführen:

        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. Komplexere Anforderungen und Funktionen

Darüber hinaus müssen Sie, wenn Sie Marktinformationen abrufen und gleichzeitig und asynchron Aufträge erteilen müssen und eine Codebibliothek verwenden, die asynchrone Vorgänge verarbeitet, eine komplexere asynchrone Verarbeitungslogik schreiben, was zu logischen Designproblemen wie Deadlocks führen kann, wenn Sie nicht vorsichtig. Wenn Sie die Diagrammanzeige erneut verwenden müssen, müssen Sie den Umgang mit vielen Bibliotheken erlernen. Selbst für einen quantitativen Händler mit grundlegenden Programmierkenntnissen wird das Erlernen einige Zeit in Anspruch nehmen. Die Verwendung der Inventor-Quantisierung ist jedoch viel einfacher, da diese Funktionen gekapselt wurden und die entwickelten Aufrufschnittstellen sehr einfach und benutzerfreundlich sind. Sie können zur Implementierung verschiedener erforderlicher Funktionen nur sehr wenig Code verwenden.

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)
    }
}

Mithilfe der von der Plattform bereitgestellten Vorlagenbibliothek „Drawing Line Library“ ist es sehr einfach, ein K-Linien-Diagramm zu zeichnen: Sofort einsatzbereites quantitatives Handelstool für digitale Währungsoptionen

Es gibt noch viele weitere Funktionen zu entdecken und zu entwickeln!

5. Nachtrag

Wenn Sie zur Implementierung die Sprache Go (oder Python usw.) wie oben verwenden, werden neue Studierende möglicherweise direkt entmutigt >_< Eine Beispielstrategie für Deribit-Optionen finden Sie unter: https://www.fmz.com/strategy/179475