সাম্প্রতিক সময়ে অনেক এক্সচেঞ্জ ডিজিটাল মুদ্রার বিকল্পের এই ডেরাইভেটিভের ট্রেডিং ফাংশনটি চালু করেছে, যা traditionalতিহ্যবাহী বিকল্পের মতো, বিকল্প ট্রেডিং এবং ফিউচার ট্রেডিংয়ের সাথে মিলিত, যা অনেকগুলি ট্রেডিং কৌশল, ট্রেডিং পদ্ধতিকে একত্রিত করতে পারে। যদিও বাজারে অনেকগুলি ওপেন সোর্স পরিমাণযুক্ত ট্রেডিং সরঞ্জাম রয়েছে, তবে এই সরঞ্জামগুলির জন্য ফ্রেমওয়ার্কের অন্তর্নিহিত বোঝার প্রয়োজন, ফ্রেমওয়ার্কের প্রোগ্রামিং ভাষার সাথে পরিচিত হতে হবে বা নিজেরাই জটিল সেটআপ, কনফিগারেশন, সংশোধন করতে হবে।
发明者量化(FMZ.COM)在早期架构设计时,就考虑了各种金融衍生品量化、程序化交易的支持,非常快捷的接入了期权交易。期权交易基本上和期货交易类似,甚至更加简单。并且没有增加新接口,熟悉使用FMZ的用户不会增加其它学习成本,只用把期权合约当做期货合约一样设置,就可以对期权合约进行行情获取,下单、撤单、查询持仓等操作。
আমরা ডেরিবিত এক্সচেঞ্জের একটি বিকল্প চুক্তির উদাহরণ দিচ্ছি, যেমন আমরা বর্তমান একটি বিকল্প চুক্তির সূচক মূল্য পেতে চাই।
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"])
}
আপনি দেখতে পাচ্ছেন যে এই তথ্যটি পাওয়ার জন্য N টি বেশি কোড লেখা হয়েছে।
এফএমজেড-এর মাধ্যমে আমরা দুটি সহজ বাক্য দিয়ে কাজটি করেছি।
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)
}
}
প্ল্যাটফর্মের দেওয়া টেমপ্লেট লাইব্রেরি "ড্রাইং লাইন ক্লাস লাইব্রেরি" ব্যবহার করে, K-লাইন চার্টগুলি সহজেই তৈরি করা যায়ঃ
আপনি কি জানেন যে, আপনি যদি আপনার কম্পিউটারে একটি নতুন ডিভাইস তৈরি করতে চান তবে আপনি কি এটি ব্যবহার করতে পারেন?
যদি সরাসরি উপরে উল্লিখিত Go ভাষা (অথবা পাইথন ইত্যাদি) ব্যবহার করা হয়, তাহলে নতুন শিক্ষার্থীদের সরাসরি প্রত্যাখ্যান করা হবে >_< ডেরিবিতের বিকল্প অপারেশনের জন্য উদাহরণ কৌশল সম্পর্কে আরও দেখুনঃhttps://www.fmz.com/strategy/179475