Sumber dimuat naik... memuat...

Alat dagangan kuantitatif pilihan mata wang digital yang boleh dibuka

Penulis:Pencipta Kuantiti - Impian Kecil, Dicipta: 2019-12-27 17:35:30, Dikemas kini: 2023-10-17 21:26:52

开箱即用的数字货币期权量化交易工具

Alat dagangan kuantitatif pilihan mata wang digital yang boleh dibuka

1. Kuantiti opsyen mata wang digital.

Baru-baru ini, banyak bursa telah membuka fungsi perdagangan pilihan mata wang digital derivatif ini, yang menyerupai pilihan tradisional, perdagangan opsyen dan perdagangan niaga hadapan, dan lain-lain. Walaupun terdapat banyak alat dagangan kuantitatif sumber terbuka di pasaran, alat-alat ini memerlukan pengetahuan tentang dasar rangka kerja, kefahaman dengan bahasa pengaturcaraan rangka kerja atau memerlukan pemasangan, konfigurasi, penyesuaian dan penyempurnaan rumit secara manual.

发明者量化(FMZ.COM)在早期架构设计时,就考虑了各种金融衍生品量化、程序化交易的支持,非常快捷的接入了期权交易。期权交易基本上和期货交易类似,甚至更加简单。并且没有增加新接口,熟悉使用FMZ的用户不会增加其它学习成本,只用把期权合约当做期货合约一样设置,就可以对期权合约进行行情获取,下单、撤单、查询持仓等操作。

2. Mengakses Bursa Deribit secara langsung menggunakan bahasa pengaturcaraan asli

Kita akan mengambil contoh kontrak opsyen Bursa Deribit, contohnya, kita ingin mendapatkan harga indeks kontrak opsyen semasa.

Ia menggunakan bahasa Go untuk:

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

开箱即用的数字货币期权量化交易工具

Seperti yang anda lihat, hanya untuk mendapatkan data ini, anda menulis lebih banyak kod N.

3. Antar muka yang digunakan oleh pencipta untuk membungkus platform dagangan kuantitatif

Kami berjaya dengan menggunakan dua perkataan mudah 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)               # 打印需要的数据,观察
}

开箱即用的数字货币期权量化交易工具

Seperti yang anda lihat, dengan hanya beberapa baris kod, data yang anda perlukan dapat diperoleh dengan mudah.

Ini hanya antara muka API awam yang tidak ditandatangani yang diakses oleh bursa, yang akan menjadi lebih rumit jika mengakses antara muka peribadi yang ditandatangani.

Setiap antara muka juga mempunyai banyak tanda tangan, parameter, dan lain-lain yang perlu ditangani:

        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. Keperluan dan fungsi yang lebih kompleks

Tidak hanya itu, jika digunakan untuk keperluan sambungan, pengambilan perdagangan yang tidak selaras, pengendalian pesanan, dan untuk mengendalikan pangkalan kod yang tidak selaras, perlu menulis logika pemprosesan yang lebih kompleks, dan tidak tinggal seorang pun boleh menyebabkan masalah reka bentuk logik seperti kunci mati. Jika digunakan lagi untuk menunjukkan carta, maka perlu belajar penggunaan pangkalan data yang besar, walaupun seorang peniaga kuantitatif yang mempunyai dasar pengaturcaraan, juga memerlukan masa untuk belajar.

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

Dengan menggunakan perpustakaan templat yang disediakan oleh platform, "Perpustakaan Kelas Garis", anda boleh membuat grafik K-Garis dengan mudah:开箱即用的数字货币期权量化交易工具

Terdapat lebih banyak lagi yang boleh diterokai dan dibangunkan!

5 dan nota belakang.

Jika dilaksanakan secara langsung dengan bahasa go seperti di atas (atau python dan lain-lain), mungkin rakan sekerja baru akan langsung ditolak >_< Contoh strategi operasi pilihan Deribit boleh dilihat di bawah:https://www.fmz.com/strategy/179475


Kandungan berkaitan

Lebih lanjut