এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের ব্যাকটেস্টিং সিস্টেম কাস্টম ডেটা উত্সগুলিকে সমর্থন করে, ব্যাকটেস্টিং সিস্টেমGET
ব্যাকটেস্টের জন্য একটি বাহ্যিক ডেটা উত্স পাওয়ার জন্য একটি কাস্টম URL (সর্বজনীনভাবে অ্যাক্সেসযোগ্য URL) অনুরোধ করার পদ্ধতি। অতিরিক্ত অনুরোধ পরামিতিগুলি নিম্নরূপঃ
প্যারামিটার | অর্থ | ব্যাখ্যা |
---|---|---|
প্রতীক | প্রতীকের নাম | স্পট মার্কেটের তথ্য, যেমনঃBTC_USDT , ফিউচার মার্কেটের তথ্য যেমনঃBTC_USDT.swap , ফিউচার চিরস্থায়ী চুক্তি তহবিলের হার সংক্রান্ত তথ্য যেমনঃBTC_USDT.funding , ফিউচার পারপেক্ট কন্ট্রাক্টের মূল্য সূচকের তথ্য যেমনঃBTC_USDT.index |
ইড | বিনিময় | যেমন OKX, Futures_OKX |
গোলাকার | তথ্যের নির্ভুলতা | সত্য মানে কাস্টম ডেটা উত্স দ্বারা ফিড করা ডেটাতে নির্দিষ্ট নির্ভুলতা সংজ্ঞায়িত করা হয়। কাস্টম ডেটা উত্সের কাছে এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম ব্যাকটেস্টিং সিস্টেম দ্বারা প্রেরিত অনুরোধটি স্থির করা হয়ঃround=true |
সময়কাল | কে-লাইন ডেটা পিরিয়ড (মিলিসেকেন্ড) | যেমনঃ60000 একটি ১ মিনিটের সময়কাল |
গভীরতা | গভীরতা স্তর | 1-20 |
বাণিজ্য | ডেটা বিভক্ত করা প্রয়োজন কিনা | true ((1) / false ((0) |
থেকে | শুরু সময় | ইউনিক্স টাইমস্ট্যাম্প |
থেকে | শেষ সময় | ইউনিক্স টাইমস্ট্যাম্প |
বিস্তারিত | প্রতীক বিবরণ জন্য তথ্য অনুরোধ | সত্য মানে এটি একটি কাস্টম ডেটা উত্স দ্বারা সরবরাহ করা প্রয়োজন। কাস্টম ডেটা উত্সের কাছে FMZ কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম ব্যাকটেস্টিং সিস্টেম দ্বারা প্রেরিত অনুরোধটি স্থির করা হয়ঃdetail=true |
কাস্টম | – | এই প্যারামিটার উপেক্ষা করা যেতে পারে |
যখন স্পট এক্সচেঞ্জ এবং ফিউচার এক্সচেঞ্জ অবজেক্টের ডেটা উত্স একটি কাস্টম ডেটা উত্স (ফিডার) এ সেট করা থাকে, তখন ব্যাকটেস্টিং সিস্টেম কাস্টম ডেটা উত্স পরিষেবাতে একটি অনুরোধ পাঠায়ঃ
http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Bitget&from=1351641600&period=86400000&round=true&symbol=BTC_USDT&to=1611244800&trades=1
http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Futures_OKX&from=1351641600&period=86400000&round=true&symbol=BTC_USDT.swap&to=1611244800&trades=1
ফেরত ফরম্যাট নিম্নলিখিত দুটি ফরম্যাটের মধ্যে একটি হতে হবে (যা সিস্টেম স্বয়ংক্রিয়ভাবে স্বীকৃতি দেবে):
সিমুলেশন লেভেল টিক, নিচে JSON ডেটার একটি উদাহরণ দেওয়া হল:
{
"detail": {
"eid": "Binance",
"symbol": "BTC_USDT",
"alias": "BTCUSDT",
"baseCurrency": "BTC",
"quoteCurrency": "USDT",
"marginCurrency": "USDT",
"basePrecision": 5,
"quotePrecision": 2,
"minQty": 0.00001,
"maxQty": 9000,
"minNotional": 5,
"maxNotional": 9000000,
"priceTick": 0.01,
"volumeTick": 0.00001,
"marginLevel": 10
},
"schema":["time", "open", "high", "low", "close", "vol"],
"data":[
[1564315200000, 9531300, 9531300, 9497060, 9497060, 787],
[1564316100000, 9495160, 9495160, 9474260, 9489460, 338]
]
}
বট লেভেল টিক, নিম্নলিখিত JSON ডেটার একটি উদাহরণঃ
টিক-লেভেল ব্যাকটেস্ট ডেটা (বাজারের গভীরতার তথ্য ধারণ করে, এবং গভীরতার বিন্যাসটি[price, volume]
এর গভীরতা একাধিক স্তরের হতে পারে,asks
দামের ক্রমবর্ধমান আদেশের জন্য,bids
দামের হ্রাসের জন্য) ।
{
"detail": {
"eid": "Binance",
"symbol": "BTC_USDT",
"alias": "BTCUSDT",
"baseCurrency": "BTC",
"quoteCurrency": "USDT",
"marginCurrency": "USDT",
"basePrecision": 5,
"quotePrecision": 2,
"minQty": 0.00001,
"maxQty": 9000,
"minNotional": 5,
"maxNotional": 9000000,
"priceTick": 0.01,
"volumeTick": 0.00001,
"marginLevel": 10
},
"schema":["time", "asks", "bids", "trades", "close", "vol"],
"data":[
[1564315200000, [[9531300, 10]], [[9531300, 10]], [[1564315200000, 0, 9531300, 10]], 9497060, 787],
[1564316100000, [[9531300, 10]], [[9531300, 10]], [[1564316100000, 0, 9531300, 10]], 9497060, 787]
]
}
ক্ষেত্র | বর্ণনা |
---|---|
বিস্তারিত | অনুরোধকৃত তথ্যের ধরণ সম্পর্কে বিস্তারিত তথ্য, |
যার মধ্যে রয়েছে মুদ্রার নাম, ট্রেডিং মুদ্রা, নির্ভুলতা, ন্যূনতম অর্ডার পরিমাণ ইত্যাদি স্কিমা. এটি ডাটাতে কলামের বৈশিষ্ট্য নির্দিষ্ট করে অ্যারে, যা বড় অক্ষর সংবেদনশীল এবং শুধুমাত্র সময় সীমাবদ্ধ, খোলা, উচ্চ, নিম্ন, বন্ধ, ভোল, জিজ্ঞাসা, বিড, ট্রেডস ডাটা। কলামের কাঠামো, স্কিম অনুযায়ী রেকর্ড করা ডাটা। সেটিংস.
বিস্তারিত ক্ষেত্র
ক্ষেত্র | বর্ণনা |
---|---|
ইড | এক্সচেঞ্জ আইডি, দয়া করে মনে রাখবেন যে স্পট এবং একটি ভবিষ্যৎ |
কিছু এক্সচেঞ্জের বিভিন্ন ইড থাকে। | |
প্রতীক | ট্রেডিং প্রোডাক্ট কোড |
উপনাম | এক্সচেঞ্জের প্রতীক বর্তমান |
ট্রেডিং প্রোডাক্ট কোড | |
বেস মুদ্রা | ট্রেডিং মুদ্রা |
উদ্ধৃতিমুদ্রা | মুদ্রা |
মার্জিনমুদ্রা | মার্জিন মুদ্রা |
বেসপ্রিসিশন | লেনদেনের মুদ্রার সঠিকতা |
উদ্ধৃতিপরিষ্কারতা | মূল্য নির্ধারণের মুদ্রা সঠিকতা |
মিনিট | ন্যূনতম অর্ডার পরিমাণ |
সর্বাধিক | সর্বাধিক অর্ডার পরিমাণ |
নূন্যতম | ন্যূনতম অর্ডার পরিমাণ |
maxনোটিকাল | সর্বোচ্চ অর্ডার পরিমাণ |
দাম টিক | দামের লাফ |
ভলিউমচিহ্ন | অর্ডার পরিমাণের সর্বনিম্ন পরিবর্তন মান (একটি লাফ |
অর্ডার পরিমাণ) | |
মার্জিন লেভেল | ফিউচার লিভারেজ ভ্যালু |
চুক্তিপ্রকার | স্থায়ী চুক্তির জন্য নির্ধারিতঃswap , |
ব্যাকটেস্ট সিস্টেম তহবিল হার এবং মূল্য সূচক পাঠাতে থাকবে অনুরোধ।
বিশেষ কলাম বৈশিষ্ট্যasks
, bids
, trades
:
ক্ষেত্র | বর্ণনা | মন্তব্যসমূহ |
---|---|---|
জিজ্ঞাসা / দরপত্র | [মূল্য, পরিমাণ],...] | উদাহরণস্বরূপ, |
পত্রিকাLive Trading Level Tick
তথ্যের উদাহরণঃ[[9531300, 10]]
∙∙
∙ ∙ ∙ ∙ ∙ ∙ ∙ ∙ ∙
উদাহরণস্বরূপ,Live Trading Level Tick
তথ্যের উদাহরণঃ[[1564315200000, 0, 9531300, 10]]
|
ফিউচার এক্সচেঞ্জে স্থায়ী চুক্তি ব্যাকটেস্টিং করার সময়, কাস্টম
তথ্য উৎস এছাড়াও অতিরিক্ত অর্থায়ন হার এবং মূল্য তথ্য প্রয়োজন
ব্যাকটেস্টিং সিস্টেম অনুরোধ পাঠাতে থাকবে
শুধুমাত্র যখন অনুরোধকৃত বাজার তথ্য ফেরত দেওয়া হয় তখনই অর্থায়নের হার
এবং ফেরত কাঠামোর বিস্তারিত ক্ষেত্রের মধ্যে রয়েছে"contractType": "swap"
কী-ভ্যালু জোড়া।
যখন ব্যাকটেস্টিং সিস্টেমটি অর্থায়ন হার সংক্রান্ত তথ্য পায়, তখন এটি দামের সূচক সংক্রান্ত তথ্যের জন্য অনুরোধ পাঠাতে থাকবে।
তহবিলের হার সংক্রান্ত তথ্যের কাঠামো নিম্নরূপঃ
{
"detail": {
"eid": "Futures_Binance",
"symbol": "BTC_USDT.funding",
"alias": "BTC_USDT.funding",
"baseCurrency": "BTC",
"quoteCurrency": "USDT",
"marginCurrency": "",
"basePrecision": 8,
"quotePrecision": 8,
"minQty": 1,
"maxQty": 10000,
"minNotional": 1,
"maxNotional": 100000000,
"priceTick": 1e-8,
"volumeTick": 1e-8,
"marginLevel": 10
},
"schema": [
"time",
"open",
"high",
"low",
"close",
"vol"
],
"data": [
[
1584921600000,
-16795,
-16795,
-16795,
-16795,
0
],
[
1584950400000,
-16294,
-16294,
-16294,
-16294,
0
]
// ...
]
}
ব্যাকটেস্টিং থেকে একটি তহবিলের হার তথ্য অনুরোধের উদাহরণ সিস্টেম হলঃ
http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Futures_Binance&from=1351641600&period=86400000&round=true&symbol=BTC_USDT.funding&to=1611244800&trades=0
দামের সূচকের তথ্যের কাঠামো নিম্নরূপঃ
{
"detail": {
"eid": "Futures_Binance",
"symbol": "BTC_USDT.index",
"alias": "BTCUSDT",
"baseCurrency": "BTC",
"quoteCurrency": "USDT",
"contractType": "index",
"marginCurrency": "USDT",
"basePrecision": 3,
"quotePrecision": 1,
"minQty": 0.001,
"maxQty": 1000,
"minNotional": 0,
"maxNotional": 1.7976931348623157e+308,
"priceTick": 0.1,
"volumeTick": 0.001,
"marginLevel": 10,
"volumeMultiple": 1
},
"schema": [
"time",
"open",
"high",
"low",
"close",
"vol"
],
"data": [
[1584921600000, 58172, 59167, 56902, 58962, 0],
[1584922500000, 58975, 59428, 58581, 59154, 0],
// ...
]
}
ব্যাকটেস্টিং দ্বারা প্রেরিত একটি মূল্য সূচক তথ্য অনুরোধের উদাহরণ সিস্টেম হলঃ
http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Futures_Binance&from=1351641600&period=86400000&round=true&symbol=BTC_USDT.index&to=1611244800&trades=0
তথ্য উৎস ঠিকানা উল্লেখ করুন, যেমন,http://120.24.2.20:9090/data
. কাস্টম ডাটা উৎস সেবা প্রোগ্রাম ব্যবহার করে লেখা হয়Golang
:
package main
import (
"fmt"
"net/http"
"encoding/json"
)
func Handle (w http.ResponseWriter, r *http.Request) {
// e.g. set on backtest DataSourse: http://xxx.xx.x.xx:9090/data
// request: GET http://xxx.xx.x.xx:9090/data?custom=0&depth=20&detail=true&eid=OKX&from=1584921600&period=86400000&round=true&symbol=BTC_USDT&to=1611244800&trades=1
// http://xxx.xx.x.xx:9090/data?custom=0&depth=20&detail=true&eid=Futures_Binance&from=1599958800&period=3600000&round=true&symbol=BTC_USDT.swap&to=1611244800&trades=0
fmt.Println("request:", r)
// response
defer func() {
// response data
/* e.g. data
{
"detail": {
"eid": "Binance",
"symbol": "BTC_USDT",
"alias": "BTCUSDT",
"baseCurrency": "BTC",
"quoteCurrency": "USDT",
"marginCurrency": "USDT",
"basePrecision": 5,
"quotePrecision": 2,
"minQty": 0.00001,
"maxQty": 9000,
"minNotional": 5,
"maxNotional": 9000000,
"priceTick": 0.01,
"volumeTick": 0.00001,
"marginLevel": 10
},
"schema": [
"time",
"open",
"high",
"low",
"close",
"vol"
],
"data": [
[1610755200000, 3673743, 3795000, 3535780, 3599498, 8634843151],
[1610841600000, 3599498, 3685250, 3385000, 3582861, 8015772738],
[1610928000000, 3582499, 3746983, 3480000, 3663127, 7069811875],
[1611014400000, 3662246, 3785000, 3584406, 3589149, 7961130777],
[1611100800000, 3590194, 3641531, 3340000, 3546823, 8936842292],
[1611187200000, 3546823, 3560000, 3007100, 3085013, 13500407666],
[1611273600000, 3085199, 3382653, 2885000, 3294517, 14297168405],
[1611360000000, 3295000, 3345600, 3139016, 3207800, 6459528768],
[1611446400000, 3207800, 3307100, 3090000, 3225990, 5797803797],
[1611532800000, 3225945, 3487500, 3191000, 3225420, 8849922692]
]
}
*/
// /* Simulation level Tick
ret := map[string]interface{}{
"detail": map[string]interface{}{
"eid": "Binance",
"symbol": "BTC_USDT",
"alias": "BTCUSDT",
"baseCurrency": "BTC",
"quoteCurrency": "USDT",
"marginCurrency": "USDT",
"basePrecision": 5,
"quotePrecision": 2,
"minQty": 0.00001,
"maxQty": 9000,
"minNotional": 5,
"maxNotional": 9000000,
"priceTick": 0.01,
"volumeTick": 0.00001,
"marginLevel": 10,
},
"schema": []string{"time","open","high","low","close","vol"},
"data": []interface{}{
[]int64{1610755200000, 3673743, 3795000, 3535780, 3599498, 8634843151}, // 1610755200000 : 2021-01-16 08:00:00
[]int64{1610841600000, 3599498, 3685250, 3385000, 3582861, 8015772738}, // 1610841600000 : 2021-01-17 08:00:00
[]int64{1610928000000, 3582499, 3746983, 3480000, 3663127, 7069811875},
[]int64{1611014400000, 3662246, 3785000, 3584406, 3589149, 7961130777},
[]int64{1611100800000, 3590194, 3641531, 3340000, 3546823, 8936842292},
[]int64{1611187200000, 3546823, 3560000, 3007100, 3085013, 13500407666},
[]int64{1611273600000, 3085199, 3382653, 2885000, 3294517, 14297168405},
[]int64{1611360000000, 3295000, 3345600, 3139016, 3207800, 6459528768},
[]int64{1611446400000, 3207800, 3307100, 3090000, 3225990, 5797803797},
[]int64{1611532800000, 3225945, 3487500, 3191000, 3225420, 8849922692},
},
}
// */
/* Bot level Tick
ret := map[string]interface{}{
"detail": map[string]interface{}{
"eid": "Binance",
"symbol": "BTC_USDT",
"alias": "BTCUSDT",
"baseCurrency": "BTC",
"quoteCurrency": "USDT",
"marginCurrency": "USDT",
"basePrecision": 5,
"quotePrecision": 2,
"minQty": 0.00001,
"maxQty": 9000,
"minNotional": 5,
"maxNotional": 9000000,
"priceTick": 0.01,
"volumeTick": 0.00001,
"marginLevel": 10,
},
"schema": []string{"time", "asks", "bids", "trades", "close", "vol"},
"data": []interface{}{
[]interface{}{1610755200000, []interface{}{[]int64{9531300, 10}}, []interface{}{[]int64{9531300, 10}}, []interface{}{[]int64{1610755200000, 0, 9531300, 10}}, 9497060, 787},
[]interface{}{1610841600000, []interface{}{[]int64{9531300, 15}}, []interface{}{[]int64{9531300, 15}}, []interface{}{[]int64{1610841600000, 0, 9531300, 11}}, 9497061, 789},
},
}
*/
b, _ := json.Marshal(ret)
w.Write(b)
}()
}
func main () {
fmt.Println("listen http://localhost:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe(":9090", nil)
}
পরীক্ষার কৌশল,JavaScript
উদাহরণঃ
/*backtest
start: 2021-01-16 08:00:00
end: 2021-01-22 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"OKX","currency":"BTC_USDT","feeder":"http://120.24.2.20:9090/data"}]
args: [["number",2]]
*/
function main() {
var ticker = exchange.GetTicker()
var records = exchange.GetRecords()
Log(exchange.GetName(), exchange.GetCurrency())
Log(ticker)
Log(records)
}
ব্যাকটেস্ট সেটিংস সংরক্ষণ করুন
স্থানীয় ব্যাকটেস্ট ইঞ্জিন