옵션의 양적 거래에 적응하기 위해 Deribit 선물 API를 개혁합니다.

저자:리디아, 창작: 2022-12-28 10:02:51, 업데이트: 2023-09-20 09:15:09

img

옵션의 양적 거래에 적응하기 위해 Deribit 선물 API를 개혁합니다.

현재 많은 디지털 화폐 선물 거래소가 있습니다. 그러나 선물 파생물로서 디지털 화폐 옵션 거래 시장에는 거래소가 거의 없습니다. 데리빗과 비트 멕스는 옵션 거래를 지원합니다. 양적 거래 분야에서 옵션 거래는 검색 된 일부 자료에서 언급 된 옵션 전략과 같은 다양한 전략을 가지고 있습니다.

종류
방향 전략:
변동성 전략:
헤지 전략:

인용:링크

옵션 거래 전략을 준비하기 위해서는 먼저 탄탄한 기반을 마련하고, 주문을 주고, 틱을 받고, 주문을 취소하고, 포지션을 취득하는 등의 기본 동작을 잘 알고 있어야 한다. 전략 작성에는 FMZ 퀀트 트레이딩 플랫폼이 여전히 사용되지만, FMZ 퀀트 트레이딩 플랫폼은 현재 디지털 통화 양적 거래 분야에서 통화-화폐 거래, 계약 거래 및 레버리지 거래를 지원한다. 옵션 거래에 대한 정보는 많지 않다. 디지털 통화 옵션 거래에 익숙해지기 위해 FMZ 퀀트 트레이딩 플랫폼을 사용하는 방법을 소개하기 위해 더비트 거래소를 예로 들어보자.

데리빗 관련 자료

API 문서:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument시뮬레이션 봇:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

시뮬레이션 봇 웹 사이트에서 계정을 등록하고 API 키를 열고 API 키를 얻을 수 있습니다. FMZ 양자 거래 플랫폼에서 구성하는 것은 실제 봇을 구성하는 것과 같습니다.

img

옵션 거래에 대해 이해해야 할 네 가지 기본 개념이 있습니다.

-운용 날짜: 옵션의 긴 및 짧은 당사자는 이 날짜에 옵션 계약의 배달을 완료합니다. -운동 가격:운동 날짜에 옵션의 긴 및 짧은 당사자는 실행 가격에 옵션 계약을 완료합니다. -프리미엄: 즉, 옵션의 가격. 스팟 및 선물과 마찬가지로, 그것은 제안 가격과 요청 가격에 코팅됩니다. 옵션의 유동성은 일반적으로 선물과 스팟보다 낮기 때문에 입찰과 요청 사이의 가격 차이는 커질 수 있으므로 여기에 많은 주의가 기울여야한다는 점에 유의해야합니다. 거래 후 거래 가격은 옵션 긴 포지션의 비용이며, 이 시점에서 긴 포지션은 권리 (옵션을 행사 할 권리) 를 얻습니다. 프리미엄을 받는 당사자로서 짧은 옵션은 의무를 추가합니다. 긴 옵션이 권리를 행사하도록 요청하면 짧은 옵션은 협력해야합니다. -Call put 옵션: 소위 콜 옵션은 옵션의 긴 포지션이 특정 실행 날짜에 특정 실행 가격으로 주어진 비트코인을 구매하도록 옵션의 짧은 포지션에게 요청할 권리가 있고, 짧은 포지션은 긴 포지션과 협력할 의무가 있음을 의미합니다. 소위 푸트 옵션은 옵션의 긴 쪽이 특정 실행 날짜에 주어진 비트코인을 특정 실행 가격으로 판매하도록 짧은 쪽에게 요청할 권리가 있고, 짧은 쪽은 긴 쪽과 협력할 의무가 있음을 의미합니다.

틱어 인수

Deribit 거래소의 API 문서를 읽은 후 우리는 미래에 대한 접근을 위해 Deribit의 티커 인터페이스 또는 옵션 티커는 단순히instrument_name매개 변수 (instrument_name는 함수 SetContractType에 의해 설정됩니다), 그래서 기본적으로, 당신은 인터페이스를 따라GetTicker옵션의 틱을 얻기 위해.

물론 FMZ 퀀트 트레이딩 플랫폼은 기본적으로 데리빗 거래소의 실제 봇을 캡슐화합니다. 먼저 다음 코드를 사용하여 시뮬레이션 봇으로 전환해야합니다.

exchange.IO("base", "https://test.deribit.com")

그리고 우리는 옵션 계약을 설정합니다BTC-27DEC19-7000-P현재 이 옵션은 매매가 가능하며, 매매 날짜는: 27DEC19이며, 매매 가격은: 7000입니다.

exchange.SetContractType("BTC-27DEC19-7000-P")

그럼, 이 옵션 계약에 대한 틱어를 얻기 위해 코드를 실행하도록 합시다.

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    var ticker = exchange.GetTicker()
    Log(ticker)
}

디버깅 툴을 사용하여 테스트하는 것이 쉽습니다.

img

시뮬레이션 봇의 가격과 일치한다는 것을 알 수 있습니다.

img

다른 틱어 인터페이스는 동일한 방식으로 호출되며, 여기서 반복되지 않습니다. 참고: 옵션 거래는 매우 활발하지 않습니다. 때로는 구매 또는 판매 주문이 없습니다. 이 시점에서 FMZ 양 거래 플랫폼은 아래쪽의 0의 값을 감지하고 오류를 보고합니다. 당신은 사용할 수 있습니다SetErrorFilter("Invalid ticker")이 오류를 무시하고 함수를 사용 하 여GetRawJSON틱어의 원래 정보를 얻고 데이터를 캡슐화합니다. 여기 비슷한 기능을 달성하는 예를 작성합니다:

function init() {
    SetErrorFilter("Invalid ticker")
}

$.GetTicker = function(e) {
    var ticker = e.GetTicker()
    if (!ticker) {
        try {
            var ret = JSON.parse(e.GetRawJSON())
            return {
                Info : ret,
                High : ret.result.stats.high,
                Low : ret.result.stats.low, 
                Buy : ret.result.best_bid_price,
                Sell : ret.result.best_ask_price,
                Last : ret.result.last_price, 
                Volume : ret.result.stats.volume,
                OpenInterest : 0,
                Time : new Date().getTime()
            }
        } catch (err) {
            Log(err)
        }
    }
    
    return ticker
}

전화가 오면 이렇게 써요.Log($.GetTicker(exchange))

주문할 수 있습니다.

주문을 하는 작업은 매우 간단합니다. 선물 거래와 비교하면 두 가지 방향의 구매 및 판매가 있습니다. 판매, 구매 기능도 주문을 하기 위해 사용됩니다.

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    
    var id = exchange.Buy(0.017, 1)
    Log(exchange.GetOrder(id))
}

img

방금 주문한 주문은 시뮬레이션 봇에도 나타납니다.

img

그리고exchange.GetOrder(id)주문 정보를 검색할 수 있습니다.

주문 취소

같은 것CancelOrder이 함수는 선물 거래에서 주문 취소와 마찬가지로 주문 취소에 사용됩니다.

img

계좌 사용 가능한 자산을 얻으십시오.

계좌 사용 가능한 자산을 얻는 것은 미래에셋 거래와 정확히 동일합니다, 그냥 전화GetAccount직접적으로 작동합니다.

교환 페이지에서 표시를 시뮬레이션:

img

코드를 실행해

img

위치 정보를 얻으세요

우리는 캡슐화 된GetPosition포지션에 대한 직접적인 함수입니다. 기본 DERIBIT 트랜잭션은 선물 트랜잭션이기 때문에, 옵션 트랜잭션이 아닙니다. 이 함수를 이용하면 선물 포지션을 얻을 수 있습니다. 이 함수는 선택지 위치를 얻기 위해 우리 자신의 함수가 되어야 합니다

API 문서의 위치를 얻기 위한 기능 인터페이스:

img

$.GetPosition = function(e) {
    // /private/get_positions
    // currency  , kind 
    
    var positions = [] 
    var currency = e.GetCurrency()
    var arr = currency.split("_")
    var baseCurrency = arr[0]
    
    try {
        var ret = e.IO("api", "GET", "/api/v2/private/get_positions", "currency=" + baseCurrency + "&kind=option")
        for (var i in ret.result) {
            if (ret.result[i].size == 0 || ret.result[i].direction == "zero") {
                continue    
            } 
            
            var pos = {
                Info : ret.result[i], 
                Amount : ret.result[i].size,
                FrozenAmount : 0,
                Price : ret.result[i].average_price,
                Profit : ret.result[i].floating_profit_loss,
                MarginLevel : 0,
                Margin : 0,
                ContractType : ret.result[i].instrument_name,
                Type : ret.result[i].direction == "buy" ? ORDER_TYPE_BUY : ORDER_TYPE_SELL,
            }
            
            positions.push(pos)
        }
    } catch (err) {
        Log(err)
        positions = null
    }
    
    return positions
}

전화해Log($.GetPosition(exchange))위치 정보를 인쇄하기 위해서요.

img

따라서, 기본 작업은 실행 될 수 있습니다, 그리고 나머지는 옵션 거래 전략을 위해 연구 될 수 있습니다.


관련

더 많은