4
Подписаться
1271
Подписчики

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

Создано: 2019-12-27 17:35:30, Обновлено: 2023-10-17 21:26:52
comments   0
hits   2907

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

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

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

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

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

2. Получите прямой доступ к бирже Deribit, используя собственный язык программирования

Давайте возьмем в качестве примера опционный контракт биржи Deribit. Например, мы хотим получить индексную цену текущего опционного контракта.

Реализовано в 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"])
}

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

Вы можете видеть, что для получения этих данных был написан большой объем кода.

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

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

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

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

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

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

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

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

Используя библиотеку шаблонов «Drawing Line Library», предоставляемую платформой, очень легко нарисовать график K-линии: Готовый к использованию инструмент количественной торговли опционами на цифровые валюты

Есть еще много возможностей для изучения и разработки!

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

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