В процессе загрузки ресурсов... загрузка...

Изготовленный инструмент количественной торговли опционами на цифровую валюту

Автор:FMZ~Lydia, Создано: 2022-12-23 22:12:54, Обновлено: 2023-09-20 10:41:08

img

Изготовленный инструмент количественной торговли опционами на цифровую валюту

1. Количественная и программная торговля опционами на цифровую валюту

В последнее время многие биржи последовательно открыли торговую функцию цифровых валютных опционов в качестве производного. Подобно традиционным опционам, торговля опционами и торговля фьючерсами могут быть объединены для формирования многих торговых стратегий и методов. Хотя на рынке есть много инструментов количественной торговли с открытым исходным кодом, эти инструменты часто нуждаются в понимании основной структуры, знакомстве с языком программирования для написания структуры или вручную выполняют сложную отладку, конфигурацию и модификацию. Это не очень удобно для начинающих программирования и количественной торговли.

В ранней архитектуре FMZ Quant (FMZ.COMКроме того, не существует нового интерфейса. Пользователи, знакомые с платформой FMZ, не увеличат других затрат на обучение. Они могут только установить контракт опциона в качестве фьючерсного контракта для получения рыночной информации, размещения заказов, отмены заказов, запроса позиций и т. д.

2. Доступ к Deribit Exchange напрямую с помощью языка программирования

Давайте возьмем опционный контракт Deribit Exchange в качестве примера.

Используется на языке Go:

package main 

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



func main() {
    // Get ticker, access interface: 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("This is just string data ticker:", ret)
    fmt.Println("Need to convert to JSON format") 

    type js struct {
        data interface{}
    }

    ticker := new(js)

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

    fmt.Println("ticker:", ticker) 
    fmt.Println("index_price, marked price data in ticker:", ticker.data.(map[string]interface{})["result"].(map[string]interface{})["index_price"])
}

3. Использование интерфейса, включенного в платформу FMZ Quant Trading

Мы закончили его, используя платформу FMZ в двух простых предложениях.

function main() {
    exchange.IO("base", "https://test.deribit.com")   # Switch to the demo offered by the exchange
    exchange.SetContractType("BTC-3JAN20-7250-P")     # Set up options contracts
    var ticker = exchange.GetTicker()                 # Get options ticker
    Log(ticker.Info.result.index_price)               # Print the required data and observe
}

img img

Как мы видим, очень просто получить необходимые данные всего за несколько строк кода.

Это просто доступ к не подписанному общественному интерфейсу API биржи; доступ к подписанному частному интерфейсу будет более сложным.

Каждый интерфейс должен выполнять много подписей, обработки параметров и т.д.

        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. Более сложные требования и функции

Не только это, если вам нужно использовать одновременный, асинхронный доступ к рынку, операции с заказами и библиотеку кода для обработки асинхронных, вам нужно написать более сложную логику асинхронной обработки. Невнимательность также может вызвать проблемы с логическим дизайном, такие как блокировка. Если вам нужно снова использовать графический дисплей, вам нужно научиться использовать много библиотек. Даже количественному трейдеру с программированием нужно некоторое время, чтобы научиться. Однако использовать платформу FMZ Quant намного проще, потому что эти функции были инкапсулированы, а разработанные интерфейсы вызовов очень просты и просты в использовании. Вы можете использовать очень мало кода для реализации функций различных требований.

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

Используя библиотеку шаблонов Plot Library, предоставляемую платформой, легко нарисовать K-линейный график:

img

Есть еще много функций, которые нужно исследовать и развивать!

5. Постскрипт

Если это будет реализовано непосредственно в языке go (или python и т. д.), как выше, новые ученики могут быть отклонены непосредственно>_< Например, стратегии операции с опционами Deribit см.:https://www.fmz.com/strategy/179475


Связанные

Больше