Baru-baru ini, banyak bursa telah secara berturut-turut membuka fungsi perdagangan pilihan mata wang digital sebagai derivatif. Sama seperti pilihan tradisional, perdagangan opsyen dan perdagangan niaga hadapan boleh digabungkan untuk membentuk banyak strategi dan kaedah perdagangan. Walaupun terdapat banyak alat perdagangan kuantitatif sumber terbuka di pasaran, alat ini sering perlu memahami kerangka kerja yang mendasari, terbiasa dengan bahasa pengaturcaraan untuk menulis kerangka kerja, atau secara manual melakukan debugging, konfigurasi, dan pengubahsuaian yang kompleks. Ia tidak sangat mudah untuk pemula perdagangan program dan perdagangan kuantitatif. Banyak masa sepatutnya dikhaskan untuk strategi perdagangan dan idea perdagangan telah dilaburkan dalam debugging program dan pembelajaran bahasa pengaturcaraan.
Dalam reka bentuk seni bina awal, FMZ Quant (FMZ.COMDi samping itu, tidak ada antara muka baru. Pengguna yang biasa dengan platform FMZ tidak akan meningkatkan kos pembelajaran lain. Mereka hanya boleh menetapkan kontrak opsyen sebagai kontrak niaga hadapan untuk mendapatkan maklumat pasaran, meletakkan pesanan, membatalkan pesanan, kedudukan pertanyaan, dan sebagainya.
Sebagai contoh, kita perlu mendapatkan harga indeks kontrak opsyen semasa.
Diimplementasikan dalam bahasa 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"])
}
Kami menyelesaikannya dengan menggunakan platform FMZ dalam dua ayat mudah.
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
}
Seperti yang kita lihat, sangat mudah untuk mendapatkan data yang diperlukan hanya dalam beberapa baris kod.
Ini hanya mengakses antara muka API awam yang tidak ditandatangani pertukaran; mengakses antara muka peribadi yang ditandatangani akan lebih rumit.
Setiap antara muka perlu melakukan banyak tanda tangan, pemprosesan parameter, dan lain-lain.
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,
}
Tidak hanya itu, jika anda perlu menggunakan akses serentak, asynchronous ke pasaran, operasi pesanan, dan perpustakaan kod untuk mengendalikan asynchronous, anda perlu menulis logika pemprosesan asynchronous yang lebih kompleks. Ketidaksedaran juga boleh menyebabkan masalah reka bentuk logik seperti penguncian. Jika anda perlu menggunakan paparan carta lagi, maka anda perlu belajar menggunakan banyak perpustakaan. Malah peniaga kuantitatif dengan asas pengaturcaraan memerlukan sedikit masa untuk belajar. Walau bagaimanapun, lebih mudah untuk menggunakan platform FMZ Quant, kerana fungsi ini telah dikemas, dan antara muka panggilan yang direka sangat mudah dan mudah digunakan. Anda boleh menggunakan kod yang sangat sedikit untuk melaksanakan fungsi pelbagai keperluan.
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)
}
}
Menggunakan perpustakaan templat
Terdapat lebih banyak fungsi untuk diterokai dan dibangunkan!
Jika ia dilaksanakan secara langsung dalam bahasa go (atau python, dan lain-lain) seperti di atas, pelajar baru mungkin digalakkan terus>_< Sebagai contoh strategi operasi opsyen Deribit, lihat:https://www.fmz.com/strategy/179475