温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go语言怎么访问Deribit交易所

发布时间:2022-03-25 16:49:00 来源:亿速云 阅读:172 作者:iii 栏目:互联网科技

这篇文章主要讲解了“Go语言怎么访问Deribit交易所”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言怎么访问Deribit交易所”吧!

1、数字货币期权量化、程序化交易

最近有不少交易所都陆续开启了数字货币期权这个衍生品的交易功能,和传统期权类似,期权交易和期货交易等相结合,可以组合出不少交易策略,交易方法。虽然市面上有不少开源的量化交易工具,不过这些工具动辄需要了解框架底层,熟悉编写框架的编程语言或者需要自己手动进行复杂的调试,配置,修改。对于程序化交易、量化交易入门的新手实在不是很方便。大量的本应该专注于交易策略,交易思路的时间都被投入到了程序调试,编程语言学习中了。

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

2、直接使用原生编程语言访问Deribit交易所

我们就以Deribit交易所期权合约为例,比如我们要获取当前某个期权合约的指数价格。

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

Go语言怎么访问Deribit交易所

可以看到只为了获取这个数据,写了N多一堆代码。

3、使用发明者量化交易平台封装的接口

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

Go语言怎么访问Deribit交易所

可以看到,短短几行代码,就很简单的获取到了需要的数据。

这仅仅是访问了交易所的非签名的公共API接口,如果访问签名的私有接口会更加复杂。

每个接口还要做一大堆的签名、参数等处理:

strBody := ""
strQuery := ""
ts := toString(time.Now().UnixNano() / 1e6)
nonce := toString(time.Now().UnixNano() / 1e6)
uri := resource
if httpMethod == "GET">

4、更加复杂的需求、功能

不仅如此,如果用到需要并发、异步获取行情,下单操作,又要用到处理异步的代码库,需要编写更加复杂的异步处理逻辑,一个不留神还可能造成锁死等逻辑设计问题。如果再需要用到图表显示,接着要学习一大堆库的使用,即使是一个有编程基础的量化交易者,也需要一定时间学习。不过使用发明者量化就简单的多了,因为这些功能都已经封装好了,设计的调用接口都非常简单易用。可以用很少的代码实现各种需求的功能。

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线图表:
Go语言怎么访问Deribit交易所

感谢各位的阅读,以上就是“Go语言怎么访问Deribit交易所”的内容了,经过本文的学习后,相信大家对Go语言怎么访问Deribit交易所这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI