В последнее время многие биржи последовательно открыли торговую функцию цифровых валютных опционов в качестве производного. Подобно традиционным опционам, торговля опционами и торговля фьючерсами могут быть объединены для формирования многих торговых стратегий и методов. Хотя на рынке есть много инструментов количественной торговли с открытым исходным кодом, эти инструменты часто нуждаются в понимании основной структуры, знакомстве с языком программирования для написания структуры или вручную выполняют сложную отладку, конфигурацию и модификацию. Это не очень удобно для начинающих программирования и количественной торговли.
В ранней архитектуре FMZ Quant (FMZ.COMКроме того, не существует нового интерфейса. Пользователи, знакомые с платформой FMZ, не увеличат других затрат на обучение. Они могут только установить контракт опциона в качестве фьючерсного контракта для получения рыночной информации, размещения заказов, отмены заказов, запроса позиций и т. д.
Давайте возьмем опционный контракт Deribit Exchange в качестве примера.
Используется на языке 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"])
}
Мы закончили его, используя платформу 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
}
Как мы видим, очень просто получить необходимые данные всего за несколько строк кода.
Это просто доступ к не подписанному общественному интерфейсу 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,
}
Не только это, если вам нужно использовать одновременный, асинхронный доступ к рынку, операции с заказами и библиотеку кода для обработки асинхронных, вам нужно написать более сложную логику асинхронной обработки. Невнимательность также может вызвать проблемы с логическим дизайном, такие как блокировка. Если вам нужно снова использовать графический дисплей, вам нужно научиться использовать много библиотек. Даже количественному трейдеру с программированием нужно некоторое время, чтобы научиться. Однако использовать платформу FMZ Quant намного проще, потому что эти функции были инкапсулированы, а разработанные интерфейсы вызовов очень просты и просты в использовании. Вы можете использовать очень мало кода для реализации функций различных требований.
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)
}
}
Используя библиотеку шаблонов
Есть еще много функций, которые нужно исследовать и развивать!
Если это будет реализовано непосредственно в языке go (или python и т. д.), как выше, новые ученики могут быть отклонены непосредственно>_< Например, стратегии операции с опционами Deribit см.:https://www.fmz.com/strategy/179475