Peranti perdagangan kuantitatif untuk pilihan mata wang digital

Penulis:Lydia, Dicipta: 2022-12-23 22:12:54, Dikemas kini: 2023-09-20 10:41:08

img

Peranti perdagangan kuantitatif untuk pilihan mata wang digital

1. Perdagangan kuantitatif dan program pilihan mata wang digital

Baru-baru ini, banyak bursa telah secara berturut-turut membuka fungsi perdagangan pilihan mata wang digital sebagai derivatif. Sama seperti pilihan tradisional, perdagangan opsyen dan perdagangan niaga hadapan boleh digabungkan untuk membentuk banyak strategi dan kaedah perdagangan. Walaupun terdapat banyak alat perdagangan kuantitatif sumber terbuka di pasaran, alat ini sering perlu memahami kerangka kerja yang mendasari, terbiasa dengan bahasa pengaturcaraan untuk menulis kerangka kerja, atau secara manual melakukan debugging, konfigurasi, dan pengubahsuaian yang kompleks. Ia tidak sangat mudah untuk pemula perdagangan program dan perdagangan kuantitatif. Banyak masa sepatutnya dikhaskan untuk strategi perdagangan dan idea perdagangan telah dilaburkan dalam debugging program dan pembelajaran bahasa pengaturcaraan.

Dalam reka bentuk seni bina awal, FMZ Quant (FMZ.COMDi samping itu, tidak ada antara muka baru. Pengguna yang biasa dengan platform FMZ tidak akan meningkatkan kos pembelajaran lain. Mereka hanya boleh menetapkan kontrak opsyen sebagai kontrak niaga hadapan untuk mendapatkan maklumat pasaran, meletakkan pesanan, membatalkan pesanan, kedudukan pertanyaan, dan sebagainya.

2. Akses Deribit Exchange terus menggunakan bahasa pengaturcaraan asli

Sebagai contoh, kita perlu mendapatkan harga indeks kontrak opsyen semasa.

Diimplementasikan dalam bahasa 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. Menggunakan antara muka yang dikemaskini oleh platform FMZ Quant Trading

Kami menyelesaikannya dengan menggunakan platform FMZ dalam dua ayat mudah.

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

Seperti yang kita lihat, sangat mudah untuk mendapatkan data yang diperlukan hanya dalam beberapa baris kod.

Ini hanya mengakses antara muka API awam yang tidak ditandatangani pertukaran; mengakses antara muka peribadi yang ditandatangani akan lebih rumit.

Setiap antara muka perlu melakukan banyak tanda tangan, pemprosesan parameter, dan lain-lain.

        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 anda perlu menggunakan akses serentak, asynchronous ke pasaran, operasi pesanan, dan perpustakaan kod untuk mengendalikan asynchronous, anda perlu menulis logika pemprosesan asynchronous yang lebih kompleks. Ketidaksedaran juga boleh menyebabkan masalah reka bentuk logik seperti penguncian. Jika anda perlu menggunakan paparan carta lagi, maka anda perlu belajar menggunakan banyak perpustakaan. Malah peniaga kuantitatif dengan asas pengaturcaraan memerlukan sedikit masa untuk belajar. Walau bagaimanapun, lebih mudah untuk menggunakan platform FMZ Quant, kerana fungsi ini telah dikemas, dan antara muka panggilan yang direka sangat mudah dan mudah digunakan. Anda boleh menggunakan kod yang sangat sedikit untuk melaksanakan fungsi pelbagai keperluan.

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

Menggunakan perpustakaan templat Plot Library yang disediakan oleh platform, mudah untuk melukis carta garis K:

img

Terdapat lebih banyak fungsi untuk diterokai dan dibangunkan!

5. Postcript

Jika ia dilaksanakan secara langsung dalam bahasa go (atau python, dan lain-lain) seperti di atas, pelajar baru mungkin digalakkan terus>_< Sebagai contoh strategi operasi opsyen Deribit, lihat:https://www.fmz.com/strategy/179475


Berkaitan

Lebih lanjut