
Baru-baru ini, banyak bursa mulai memperdagangkan derivatif opsi mata uang digital. Mirip dengan opsi tradisional, kombinasi perdagangan opsi dan perdagangan berjangka dapat menciptakan berbagai strategi dan metode perdagangan. Meskipun ada banyak alat perdagangan kuantitatif sumber terbuka di pasaran, alat-alat ini sering kali memerlukan pemahaman tentang kerangka kerja yang mendasarinya, keakraban dengan bahasa pemrograman yang digunakan untuk menulis kerangka kerja tersebut, atau melakukan debugging, konfigurasi, dan modifikasi yang rumit secara manual. Kurang nyaman bagi para pemula yang baru dalam perdagangan terprogram dan perdagangan kuantitatif. Banyak waktu yang seharusnya difokuskan pada strategi perdagangan dan ide perdagangan dihabiskan untuk men-debug program dan mempelajari bahasa pemrograman.
Saat merancang arsitektur awalnya, FMZ.COM memperhitungkan dukungan terhadap perdagangan kuantitatif dan terprogram berbagai derivatif keuangan, dan dengan cepat terhubung ke perdagangan opsi. Perdagangan opsi pada dasarnya mirip dengan perdagangan berjangka, atau bahkan lebih sederhana. Dan tidak ada antarmuka baru yang ditambahkan. Pengguna yang terbiasa menggunakan FMZ tidak akan dikenakan biaya pembelajaran tambahan. Mereka hanya perlu menyiapkan kontrak opsi sebagai kontrak berjangka untuk mendapatkan informasi pasar, menempatkan pesanan, membatalkan pesanan, memeriksa posisi, dan melakukan hal lainnya. operasi pada kontrak opsi.
Mari kita ambil contoh kontrak opsi pertukaran Deribit. Misalnya, kita ingin memperoleh harga indeks dari kontrak opsi terkini.
Diimplementasikan dalam 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"])
}

Anda dapat melihat bahwa banyak kode yang ditulis hanya untuk mendapatkan data ini.
Kami menggunakan FMZ untuk melakukannya hanya dalam dua kalimat.
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) # 打印需要的数据,观察
}

Seperti yang Anda lihat, hanya dengan beberapa baris kode, sangat mudah untuk mendapatkan data yang diperlukan.
Ini hanya mengakses antarmuka API publik yang tidak ditandatangani dari bursa. Mengakses antarmuka pribadi yang ditandatangani akan lebih rumit.
Setiap antarmuka juga perlu melakukan banyak tanda tangan, parameter, dan pemrosesan lainnya:
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 mendapatkan informasi pasar dan menempatkan pesanan secara bersamaan dan asinkron, dan menggunakan pustaka kode yang menangani operasi asinkron, Anda perlu menulis logika pemrosesan asinkron yang lebih kompleks, yang dapat menyebabkan masalah desain logis seperti kebuntuan jika Anda kurang teliti. Jika Anda perlu menggunakan tampilan grafik lagi, Anda harus mempelajari cara menggunakan banyak pustaka. Bahkan untuk pedagang kuantitatif dengan pengetahuan dasar pemrograman, akan butuh waktu untuk mempelajarinya. Namun, jauh lebih mudah menggunakan Inventor Quantization, karena fungsi-fungsi ini telah dienkapsulasi dan antarmuka pemanggilan yang dirancang sangat sederhana dan mudah digunakan. Anda dapat menggunakan sedikit kode untuk mengimplementasikan berbagai fungsi yang diperlukan.
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)
}
}
Dengan menggunakan pustaka template “Drawing Line Library” yang disediakan oleh platform, sangat mudah untuk menggambar diagram garis K:

Masih banyak lagi fitur untuk dijelajahi dan dikembangkan!
Jika Anda menggunakan bahasa Go (atau Python, dll.) seperti yang di atas untuk mengimplementasikannya, siswa baru mungkin langsung putus asa >_< Untuk contoh strategi pada opsi Deribit, lihat: https://www.fmz.com/strategy/179475