
সম্প্রতি, অনেক এক্সচেঞ্জ ক্রমাগতভাবে ডিজিটাল কারেন্সি অপশন ডেরিভেটিভস-এর ট্রেডিং ফাংশন খুলেছে। যদিও বাজারে অনেকগুলি ওপেন সোর্স পরিমাণগত ট্রেডিং টুল রয়েছে, এই টুলগুলির জন্য প্রায়ই অন্তর্নিহিত কাঠামো বোঝার প্রয়োজন হয়, ফ্রেমওয়ার্ক লেখার জন্য প্রোগ্রামিং ভাষার সাথে পরিচিত হতে হয়, অথবা আপনাকে ম্যানুয়ালি জটিল ডিবাগিং, কনফিগারেশন এবং পরিবর্তনগুলি করতে হয়। এটি নতুনদের জন্য খুব সুবিধাজনক নয় যারা প্রোগ্রাম্যাটিক ট্রেডিং এবং পরিমাণগত ট্রেডিং শুরু করছে। অনেক সময় যা ট্রেডিং কৌশল এবং ট্রেডিং ধারণার উপর ফোকাস করা উচিত প্রোগ্রাম ডিবাগিং এবং প্রোগ্রামিং ভাষা শেখার জন্য বিনিয়োগ করা হয়।
এর প্রাথমিক আর্কিটেকচার ডিজাইনে, ইনভেনটর কোয়ান্টিফিকেশন (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) # 打印需要的数据,观察
}

আপনি দেখতে পাচ্ছেন, কোডের মাত্র কয়েকটি লাইনে, প্রয়োজনীয় ডেটা সহজেই পাওয়া যায়।
এটি শুধুমাত্র এক্সচেঞ্জের স্বাক্ষরবিহীন পাবলিক এপিআই ইন্টারফেসে অ্যাক্সেস করা আরও জটিল হবে।
প্রতিটি ইন্টারফেসকে স্বাক্ষর, পরামিতি ইত্যাদির প্রচুর প্রক্রিয়াকরণ করতে হবে:
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)
}
}
প্ল্যাটফর্ম দ্বারা প্রদত্ত টেমপ্লেট লাইব্রেরি “ড্রয়িং লাইন লাইব্রেরি” ব্যবহার করে, একটি কে-লাইন চার্ট আঁকা খুব সহজ:

অন্বেষণ এবং বিকাশ আরো বৈশিষ্ট্য আছে!
যদি এটি উপরের মতো গো ভাষা (বা পাইথন, ইত্যাদি) ব্যবহার করে সরাসরি প্রয়োগ করা হয়, তাহলে নতুন ছাত্ররা সরাসরি নিরুৎসাহিত হতে পারে >_< Deribit বিকল্প অপারেশনের জন্য বিস্তারিত উদাহরণ কৌশলের জন্য, অনুগ্রহ করে দেখুন: https://www.fmz.com/strategy/179475