avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Công cụ giao dịch định lượng tùy chọn tiền kỹ thuật số có sẵn

Được tạo ra trong: 2019-12-27 17:35:30, cập nhật trên: 2023-10-17 21:26:52
comments   0
hits   2907

Công cụ giao dịch định lượng tùy chọn tiền kỹ thuật số có sẵn

Công cụ giao dịch định lượng tùy chọn tiền kỹ thuật số có sẵn

1. Giao dịch định lượng và lập trình các tùy chọn tiền kỹ thuật số

Gần đây, nhiều sàn giao dịch đã bắt đầu giao dịch các sản phẩm phái sinh quyền chọn tiền kỹ thuật số. Tương tự như các quyền chọn truyền thống, sự kết hợp giữa giao dịch quyền chọn và giao dịch tương lai có thể tạo ra nhiều chiến lược và phương pháp giao dịch khác nhau. Mặc dù có nhiều công cụ giao dịch định lượng nguồn mở trên thị trường, nhưng những công cụ này thường đòi hỏi phải hiểu rõ về khuôn khổ cơ bản, quen thuộc với ngôn ngữ lập trình được sử dụng để viết khuôn khổ hoặc thực hiện thủ công các thao tác gỡ lỗi, cấu hình và sửa đổi phức tạp. Phương pháp này không thực sự tiện lợi cho những người mới bắt đầu làm quen với giao dịch theo chương trình và giao dịch định lượng. Phần lớn thời gian đáng lẽ phải tập trung vào chiến lược giao dịch và ý tưởng giao dịch thì lại dành vào việc gỡ lỗi chương trình và học ngôn ngữ lập trình.

Khi thiết kế kiến ​​trúc ban đầu, FMZ.COM đã tính đến việc hỗ trợ giao dịch định lượng và lập trình cho nhiều sản phẩm phái sinh tài chính khác nhau và nhanh chóng kết nối với giao dịch quyền chọn. Giao dịch quyền chọn về cơ bản tương tự như giao dịch tương lai, thậm chí còn đơn giản hơn. Và không có giao diện mới nào được thêm vào. Người dùng quen thuộc với việc sử dụng FMZ sẽ không phải chịu bất kỳ chi phí học tập bổ sung nào. Họ chỉ cần thiết lập hợp đồng quyền chọn dưới dạng hợp đồng tương lai để có được thông tin thị trường, đặt lệnh, hủy lệnh, kiểm tra vị thế và thực hiện các thao tác khác hoạt động trên hợp đồng quyền chọn.

2. Truy cập sàn giao dịch Deribit trực tiếp bằng ngôn ngữ lập trình gốc

Hãy lấy hợp đồng quyền chọn trao đổi Deribit làm ví dụ. Ví dụ, chúng ta muốn có được giá chỉ số của hợp đồng quyền chọn hiện tại.

Được triển khai trong 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"])
}

Công cụ giao dịch định lượng tùy chọn tiền kỹ thuật số có sẵn

Bạn có thể thấy rằng có rất nhiều mã được viết chỉ để lấy dữ liệu này.

3. Sử dụng giao diện được đóng gói bởi Inventor Quantitative Trading Platform

Chúng tôi sử dụng FMZ để thực hiện điều đó chỉ trong hai câu.

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

Công cụ giao dịch định lượng tùy chọn tiền kỹ thuật số có sẵn

Như bạn thấy, chỉ với vài dòng mã, bạn có thể dễ dàng lấy được dữ liệu cần thiết.

Đây chỉ là truy cập vào giao diện API công khai chưa ký của sàn giao dịch. Truy cập vào giao diện riêng đã ký sẽ phức tạp hơn.

Mỗi giao diện cũng cần phải thực hiện nhiều thao tác chữ ký, tham số và xử lý khác:

        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. Yêu cầu và chức năng phức tạp hơn

Không chỉ vậy, nếu bạn cần lấy thông tin thị trường và đặt lệnh đồng thời và không đồng bộ, và sử dụng thư viện mã xử lý các hoạt động không đồng bộ, bạn cần phải viết logic xử lý không đồng bộ phức tạp hơn, điều này có thể gây ra các vấn đề về thiết kế logic như bế tắc nếu bạn không cẩn thận. Nếu bạn cần sử dụng lại màn hình hiển thị biểu đồ, bạn sẽ phải học cách sử dụng nhiều thư viện. Ngay cả đối với một nhà giao dịch định lượng có kiến ​​thức cơ bản về lập trình, cũng sẽ mất một thời gian để học. Tuy nhiên, sử dụng Inventor Quantization đơn giản hơn nhiều vì các hàm này đã được đóng gói và giao diện gọi được thiết kế rất đơn giản và dễ sử dụng. Bạn có thể sử dụng rất ít mã để triển khai nhiều chức năng cần thiết.

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

Sử dụng thư viện mẫu “Thư viện đường vẽ” do nền tảng cung cấp, bạn có thể vẽ biểu đồ đường K rất dễ dàng: Công cụ giao dịch định lượng tùy chọn tiền kỹ thuật số có sẵn

Vẫn còn nhiều tính năng khác để khám phá và phát triển!

5. Phần kết

Nếu bạn sử dụng ngôn ngữ Go (hoặc Python, v.v.) như ngôn ngữ trên để triển khai, học viên mới có thể sẽ nản lòng ngay >_< Để biết chiến lược mẫu về quyền chọn Deribit, hãy xem: https://www.fmz.com/strategy/179475