
हाल ही में, कई एक्सचेंजों ने डिजिटल मुद्रा विकल्प डेरिवेटिव का व्यापार शुरू कर दिया है। पारंपरिक विकल्पों की तरह, विकल्प ट्रेडिंग और वायदा ट्रेडिंग के संयोजन से कई तरह की ट्रेडिंग रणनीतियाँ और तरीके बन सकते हैं। यद्यपि बाजार में कई खुले स्रोत मात्रात्मक व्यापार उपकरण उपलब्ध हैं, लेकिन इन उपकरणों के लिए अक्सर अंतर्निहित ढांचे को समझने, ढांचे को लिखने के लिए प्रयुक्त प्रोग्रामिंग भाषा से परिचित होने, या मैन्युअल रूप से जटिल डिबगिंग, कॉन्फ़िगरेशन और संशोधन करने की आवश्यकता होती है। यह उन नौसिखियों के लिए बहुत सुविधाजनक नहीं है जो प्रोग्रामेटिक ट्रेडिंग और क्वांटिटेटिव ट्रेडिंग में नए हैं। बहुत सारा समय जो ट्रेडिंग रणनीतियों और ट्रेडिंग विचारों पर केंद्रित होना चाहिए था, वह प्रोग्राम डिबगिंग और प्रोग्रामिंग भाषाओं को सीखने में खर्च किया जाता है।
अपनी प्रारंभिक वास्तुकला को डिजाइन करते समय, FMZ.COM ने विभिन्न वित्तीय व्युत्पन्नों के मात्रात्मक और क्रमादेशित व्यापार के लिए समर्थन को ध्यान में रखा, और जल्दी ही विकल्प व्यापार से जुड़ गया। विकल्प ट्रेडिंग मूलतः वायदा ट्रेडिंग के समान है, या उससे भी सरल है। और कोई नया इंटरफ़ेस नहीं जोड़ा गया है। जो उपयोगकर्ता FMZ का उपयोग करने से परिचित हैं, उन्हें कोई अतिरिक्त सीखने की लागत नहीं लगेगी। उन्हें केवल बाज़ार की जानकारी प्राप्त करने, ऑर्डर देने, ऑर्डर रद्द करने, पोजीशन की जाँच करने और अन्य कार्य करने के लिए ऑप्शन कॉन्ट्रैक्ट को फ्यूचर कॉन्ट्रैक्ट के रूप में सेट करना होगा। विकल्प अनुबंधों पर परिचालन।
आइए डेरीबिट एक्सचेंज ऑप्शन कॉन्ट्रैक्ट को एक उदाहरण के रूप में लें। उदाहरण के लिए, हम एक मौजूदा ऑप्शन कॉन्ट्रैक्ट का इंडेक्स मूल्य प्राप्त करना चाहते हैं।
गो में कार्यान्वित:
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"])
}

आप देख सकते हैं कि यह डेटा प्राप्त करने के लिए बहुत सारा कोड लिखा गया था।
हम इसे केवल दो वाक्यों में करने के लिए FMZ का प्रयोग करते हैं।
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) # 打印需要的数据,观察
}

जैसा कि आप देख सकते हैं, कोड की कुछ पंक्तियों से आवश्यक डेटा प्राप्त करना बहुत आसान है।
यह एक्सचेंज के अहस्ताक्षरित सार्वजनिक 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,
}
इतना ही नहीं, यदि आपको बाजार की जानकारी प्राप्त करने और समवर्ती और अतुल्यकालिक रूप से ऑर्डर देने की आवश्यकता है, और एक कोड लाइब्रेरी का उपयोग करना है जो अतुल्यकालिक संचालन को संभालती है, तो आपको अधिक जटिल अतुल्यकालिक प्रसंस्करण तर्क लिखने की आवश्यकता है, जो तार्किक डिजाइन समस्याओं जैसे डेडलॉक का कारण बन सकता है यदि आप सावधान नहीं. यदि आपको चार्ट डिस्प्ले का फिर से उपयोग करने की आवश्यकता है, तो आपको बहुत सारी लाइब्रेरी का उपयोग करना सीखना होगा। प्रोग्रामिंग के बुनियादी ज्ञान वाले मात्रात्मक व्यापारी के लिए भी इसे सीखने में कुछ समय लगेगा। हालाँकि, इन्वेंटर क्वांटाइजेशन का उपयोग करना बहुत सरल है, क्योंकि इन कार्यों को समाहित किया गया है और डिज़ाइन किए गए कॉलिंग इंटरफेस बहुत सरल और उपयोग में आसान हैं। आप विभिन्न आवश्यक कार्यों को क्रियान्वित करने के लिए बहुत कम कोड का उपयोग कर सकते हैं।
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)
}
}
प्लेटफ़ॉर्म द्वारा प्रदान की गई टेम्पलेट लाइब्रेरी “ड्राइंग लाइन लाइब्रेरी” का उपयोग करके, K-लाइन चार्ट बनाना बहुत आसान है:

अभी और भी कई विशेषताएं हैं जिन्हें खोजा और विकसित किया जाना है!
यदि आप इसे क्रियान्वित करने के लिए ऊपर बताई गई गो भाषा (या पायथन आदि) का उपयोग करते हैं, तो नए छात्रों को सीधे तौर पर हतोत्साहित किया जा सकता है।_< डेरीबिट विकल्पों पर नमूना रणनीति के लिए, देखें: https://www.fmz.com/strategy/179475