Recentemente, muitas bolsas abriram o recurso de negociação de derivativos de opções digitais, que são semelhantes às opções tradicionais, como negociação de opções e negociação de futuros. Embora existam muitas ferramentas de negociação quantitativa de código aberto no mercado, essas ferramentas exigem um conhecimento básico do framework, familiaridade com a linguagem de programação do framework ou precisam realizar manualmente um teste, configuração e modificação complexos.
Inventor quantificaçãoFMZ.COMNo início do design da arquitetura, o suporte à quantificação de vários derivativos financeiros e ao comércio programado foi levado em consideração e o acesso ao comércio de opções foi muito rápido. O comércio de opções é basicamente semelhante ao comércio de futuros e até mesmo mais simples. E sem adicionar novas interfaces, os usuários familiarizados com o FMZ não aumentam outros custos de aprendizagem.
Tomemos como exemplo um contrato de opções da Deribit, por exemplo, se quisermos obter o preço indicado de um contrato de opções atual.
Com a linguagem 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"])
}
O que você pode ver é que você escreveu N mais códigos apenas para obter esses dados.
O FMZ é um canal de televisão de rádio, que é um canal de televisão de televisão.
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) # 打印需要的数据,观察
}
Como você pode ver, com apenas algumas linhas de código, é muito fácil obter os dados que você precisa.
Isso é apenas uma interface API pública sem assinatura para acessar o exchange, o que é mais complicado se você acessar uma interface privada com assinatura.
Cada interface também tem que lidar com uma série de assinaturas, parâmetros, etc.:
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,
}
Além disso, se for usado para processar um banco de código que precisa de concomitância, aquisição assíncrona de transações, subordinação de operações e para processar um banco de código assíncrono, é necessário escrever uma lógica de processamento assíncrona mais complexa, um que não deixa de ser usado pode causar problemas de design de lógica, como bloqueio morto. Se for usado para mostrar gráficos, então é preciso aprender a usar um grande banco de dados, mesmo um comerciante de quantificação com base em programação. Mas o uso de inventor quantificação é muito simples, pois esses recursos já estão instalados e os interfaces de chamada projetados são muito simples de usar.
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)
}
}
Usando a biblioteca de modelos oferecida pela plataforma, "Draw Line Library", é muito simples criar gráficos de K-lines:
E há mais recursos para explorar e desenvolver!
Se for implementado diretamente com uma linguagem similar à go (ou python, etc.), os novos alunos podem ser imediatamente expulsos. Para mais informações sobre a estratégia de exemplo de operação de opções da Deribit:https://www.fmz.com/strategy/179475