সাম্প্রতিককালে, অনেক এক্সচেঞ্জ ধারাবাহিকভাবে একটি ডেরাইভেটিভ হিসাবে ডিজিটাল মুদ্রা বিকল্পের ট্রেডিং ফাংশন খুলেছে। ঐতিহ্যগত বিকল্পগুলির মতো, বিকল্প ট্রেডিং এবং ফিউচার ট্রেডিং অনেক ট্রেডিং কৌশল এবং পদ্ধতি গঠনের জন্য একত্রিত করা যেতে পারে। যদিও বাজারে অনেকগুলি ওপেন সোর্স পরিমাণগত ট্রেডিং সরঞ্জাম রয়েছে, তবে এই সরঞ্জামগুলি প্রায়শই অন্তর্নিহিত কাঠামোটি বুঝতে, কাঠামোটি লেখার জন্য প্রোগ্রামিং ভাষার সাথে পরিচিত হতে বা ম্যানুয়ালি জটিল ডিবাগিং, কনফিগারেশন এবং সংশোধন সম্পাদন করতে হবে। এটি প্রোগ্রাম ট্রেডিং এবং পরিমাণগত ট্রেডিংয়ের নতুনদের জন্য খুব সুবিধাজনক নয়। ট্রেডিং কৌশল এবং ট্রেডিং ধারণাগুলিতে প্রচুর সময় ব্যয় করা উচিত ছিল এবং প্রোগ্রাম ডিবাগিং এবং প্রোগ্রামিং ভাষা শেখার জন্য বিনিয়োগ করা হয়েছে।
প্রাথমিক স্থাপত্য নকশায়, এফএমজেড কোয়ান্ট (FMZ.COM) বিভিন্ন আর্থিক ডেরাইভেটিভ পরিমাণ এবং প্রোগ্রাম ট্রেডিং সমর্থন বিবেচনা করে, এবং দ্রুত বিকল্প ট্রেডিং অ্যাক্সেস। বিকল্প ট্রেডিং মূলত ফিউচার ট্রেডিং অনুরূপ, বা এমনকি সহজ। উপরন্তু, কোন নতুন ইন্টারফেস নেই। ব্যবহারকারীরা যারা FMZ প্ল্যাটফর্মের সাথে পরিচিত অন্যান্য শেখার খরচ বৃদ্ধি করবে না। তারা শুধুমাত্র বাজার তথ্য পেতে, অর্ডার স্থাপন, অর্ডার বাতিল, অনুসন্ধান অবস্থান, এবং তাই পেতে একটি ফিউচার চুক্তি হিসাবে বিকল্প চুক্তি সেট করতে পারেন।
উদাহরণস্বরূপ ডেরিবিত এক্সচেঞ্জের অপশন কন্ট্রাক্ট নেওয়া যাক। উদাহরণস্বরূপ, আমাদের বর্তমান অপশন কন্ট্রাক্টের সূচক মূল্য পেতে হবে।
গো ভাষায় বাস্তবায়িতঃ
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