Recientemente, muchos intercambios han abierto sucesivamente la función de negociación de opciones de moneda digital como derivado. Al igual que las opciones tradicionales, el comercio de opciones y el comercio de futuros se pueden combinar para formar muchas estrategias y métodos de negociación. Aunque hay muchas herramientas de comercio cuantitativo de código abierto en el mercado, estas herramientas a menudo necesitan comprender el marco subyacente, estar familiarizadas con el lenguaje de programación para escribir el marco, o realizar manualmente depuración, configuración y modificación complejas. No es muy conveniente para los principiantes del comercio de programas y el comercio cuantitativo.
En el diseño inicial de la arquitectura, el FMZ Quant (FMZ.COMEn la actualidad, el mercado de opciones es muy similar al de futuros, o incluso más simple. Además, no hay una nueva interfaz. Los usuarios que están familiarizados con la plataforma FMZ no aumentarán otros costos de aprendizaje. Solo pueden configurar el contrato de opción como un contrato de futuros para obtener información del mercado, realizar órdenes, cancelar órdenes, consultar posiciones, etc.
Tomemos el contrato de opción de Deribit Exchange como ejemplo. Por ejemplo, necesitamos obtener el precio índice de un contrato de opción actual.
Implementado en el lenguaje 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"])
}
Lo terminamos usando la plataforma FMZ en dos oraciones simples.
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
}
Como podemos ver, es muy simple obtener los datos requeridos en sólo unas pocas líneas de código.
Esto es solo acceder a la interfaz API pública no firmada del intercambio; acceder a la interfaz privada firmada sería más complicado.
Cada interfaz tiene que hacer una gran cantidad de firma, procesamiento de 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,
}
No solo eso, si necesita usar acceso concurrente, asíncrono al mercado, operaciones de orden y la biblioteca de código para manejar asíncrono, necesita escribir una lógica de procesamiento asíncrona más compleja. Una falta de atención también puede causar problemas de diseño de lógica como bloqueo. Si necesita usar nuevamente la pantalla de gráficos, entonces necesita aprender a usar muchas bibliotecas. Incluso un operador cuantitativo con una base de programación necesita algo de tiempo para aprender. Sin embargo, es mucho más fácil usar la plataforma FMZ Quant, porque estas funciones se han encapsulado, y las interfaces de llamada diseñadas son muy simples y fáciles de usar. Puede usar muy poco código para implementar las funciones de varios requisitos.
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 la biblioteca de plantillas
¡Hay más funciones que explorar y desarrollar!
Si se implementa directamente en el lenguaje go (o Python, etc.) como el anterior, los nuevos estudiantes pueden ser desalentados directamente>_< Por ejemplo, las estrategias de operación de la opción Deribit, véase:https://www.fmz.com/strategy/179475