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