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

Устройство для количественной торговли цифровыми валютными опционами

Автор:Изобретатели количественного измерения - мечты, Создано: 2019-12-27 17:35:30, Обновлено: 2023-10-17 21:26:52

img

Устройство для количественной торговли цифровыми валютными опционами

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

img

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

3, интерфейс, используемый изобретателями для количественной упаковки платформы

Мы сделали это с помощью двух простых фраз 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)               # 打印需要的数据,观察
}

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, более сложные потребности, функции

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

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

Используя библиотеку шаблонов, предоставляемую платформой, "Классная библиотека рисунков", очень просто можно сделать рисунок из K-линейного графика:img

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

5 ̊ Заметьте

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


Связанные

Больше