리소스 로딩... 로딩...

디지털 통화 옵션에 대한 양적 거래 도구

저자:FMZ~리디아, 창작: 2022-12-23 22:12:54, 업데이트: 2023-09-20 10:41:08

img

디지털 통화 옵션에 대한 양적 거래 도구

1. 디지털 통화 옵션의 양적 및 프로그램 거래

최근에는 많은 거래소에서 디지털 화폐 옵션의 거래 기능을 파생상품으로 순차적으로 개방했습니다. 전통적인 옵션과 마찬가지로 옵션 거래와 선물 거래는 많은 거래 전략과 방법을 형성하기 위해 결합 될 수 있습니다. 시장에는 많은 오픈 소스 양적 거래 도구가 있지만, 이러한 도구는 종종 기본 프레임워크를 이해하고 프레임워크를 작성하기 위해 프로그래밍 언어를 알고 있거나 복잡한 디버깅, 구성 및 수정 작업을 수동으로 수행해야합니다. 프로그램 거래 및 양적 거래의 초보자에게는 매우 편리하지 않습니다. 거래 전략에 많은 시간을 할애해야하고 거래 아이디어는 프로그램 디버깅과 프로그래밍 언어 학습에 투자되었습니다.

초기 건축 설계에서 FMZ Quant (FMZ.COMFMZ 플랫폼은 다양한 금융 파생상품 정량화 및 프로그램 거래의 지원을 고려하여 옵션 거래에 신속하게 액세스했습니다. 옵션 거래는 기본적으로 선물 거래와 비슷하거나 더 간단합니다. 또한 새로운 인터페이스가 없습니다. FMZ 플랫폼을 잘 알고있는 사용자는 다른 학습 비용을 증가시키지 않습니다. 시장 정보를 얻고 주문을 배치하고 주문을 취소하고 질의 포지션을 취득하기 위해 옵션 계약을 선물 계약으로 설정 할 수 있습니다.

2. 네이티브 프로그래밍 언어를 사용하여 직접 Deribit 교환에 액세스

예를 들어, 현재 옵션 계약의 지수 가격을 얻어야 합니다.

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. FMZ 퀀트 트레이딩 플랫폼에서 캡슐화된 인터페이스를 사용하여

우리는 FMZ 플랫폼을 사용하여 두 가지 간단한 문장으로 끝냈습니다.

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

우리가 볼 수 있듯이, 몇 줄의 코드만으로 필요한 데이터를 얻는 것은 매우 간단합니다.

이것은 단지 거래소의 비서명한 공개 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. 더 복잡한 요구 사항 과 기능

뿐만 아니라, 만약 당신이 동시, 동시시시장 접근, 주문 연산, 그리고 코드 라이브러리를 동시적으로 처리하기 위해 사용해야 한다면, 당신은 더 복잡한 동시시 처리 논리를 작성해야 한다. 주의가 부족하면 잠금과 같은 논리 설계 문제도 발생할 수 있다. 만약 당신이 다시 차트 디스플레이를 사용해야 한다면, 당신은 많은 라이브러리를 사용하는 방법을 배워야 한다. 프로그래밍 기초를 가진 양적 거래자조차도 배우기 위해 약간의 시간이 필요하다. 그러나, FMZ 퀀트 플랫폼을 사용하는 것은 훨씬 쉬워, 왜냐하면 이러한 기능들이 캡슐화되어 있고, 설계된 호출 인터페이스는 매우 간단하고 사용하기 쉽기 때문이다. 당신은 다양한 요구 사항의 기능을 구현하기 위해 매우 적은 코드를 사용할 수 있다.

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 언어 (또는 파이썬, 등) 에서 직접 구현되면, 새로운 학생들은 직접 방해 될 수 있습니다>_< 예를 들어, Deribit 옵션 운영의 전략은 다음을 참조하십시오.https://www.fmz.com/strategy/179475


관련

더 많은