مقداری تجارت کی مقبولیت اور ترقی کے ساتھ ، سرمایہ کاروں کو اکثر بڑی تعداد میں رواں اکاؤنٹس کا نظم و نسق کرنے کی ضرورت ہوتی ہے ، جو تجارتی فیصلوں ، نگرانی اور عمل درآمد کے لئے بڑے چیلنجوں کا باعث بنتی ہے۔ انتظامی کارکردگی کو بہتر بنانے اور آپریشنل مشکلات کو کم کرنے کے ل FM ، ایف ایم زیڈ پر تاجر گروپ کنٹرول مینجمنٹ کے لئے ایف ایم زیڈ کے توسیع شدہ API کا استعمال کرسکتے ہیں۔ اس مضمون میں ، ہم مقداری تجارت میں ایف ایم زیڈ کے توسیع شدہ API کے استعمال کے فوائد اور موثر گروپ کنٹرول مینجمنٹ کے حصول کے طریقوں پر تبادلہ خیال کریں گے۔
بہت سے صارفین کے اپنے کسٹمر لائیو اکاؤنٹس ہیں جن کا انتظام اور دیکھ بھال کرنے کی ضرورت ہے۔ جب بہت سارے کسٹمر لائیو اکاؤنٹس ہوتے ہیں تو ، ان کا انتظام کرنے کے لئے زیادہ آسان طریقہ کی ضرورت ہوتی ہے (دسوں یا سینکڑوں تک کم سے کم) ۔ ایف ایم زیڈ ایک طاقتور توسیعی API فراہم کرتا ہے۔ گروپ کنٹرول مینجمنٹ کے لئے اس کا استعمال ایک مثالی انتخاب بن گیا ہے۔
ایف ایم زیڈ کے توسیع شدہ اے پی پی کے ذریعے ، آپ مرکزی طور پر تمام رواں اکاؤنٹس کی تجارتی سرگرمیوں اور اثاثوں کی حالت کی نگرانی کرسکتے ہیں۔ چاہے یہ ہر اکاؤنٹ کی پوزیشنوں کی جانچ پڑتال ہو ، تاریخی تجارتی ریکارڈ ، یا اکاؤنٹس کی منافع اور نقصان کی حیثیت کی حقیقی وقت کی نگرانی ، ان سب کو حاصل کیا جاسکتا ہے۔
// Global variable
var isLogMsg = true // Control whether the log is printed
var isDebug = false // Debug mode
var arrIndexDesc = ["all", "running", "stop"]
var descRobotStatusCode = ["In idle", "Running", "Stopping", "Exited", "Stopped", "Strategy error"]
var dicRobotStatusCode = {
"all" : -1,
"running" : 1,
"stop" : 4,
}
// Extended log function
function LogControl(...args) {
if (isLogMsg) {
Log(...args)
}
}
// FMZ extended API call function
function callFmzExtAPI(accessKey, secretKey, funcName, ...args) {
var params = {
"version" : "1.0",
"access_key" : accessKey,
"method" : funcName,
"args" : JSON.stringify(args),
"nonce" : Math.floor(new Date().getTime())
}
var data = `${params["version"]}|${params["method"]}|${params["args"]}|${params["nonce"]}|${secretKey}`
params["sign"] = Encode("md5", "string", "hex", data)
var arrPairs = []
for (var k in params) {
var pair = `${k}=${params[k]}`
arrPairs.push(pair)
}
var query = arrPairs.join("&")
var ret = null
try {
LogControl("url:", baseAPI + "/api/v1?" + query)
ret = JSON.parse(HttpQuery(baseAPI + "/api/v1?" + query))
if (isDebug) {
LogControl("Debug:", ret)
}
} catch(e) {
LogControl("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message)
}
Sleep(100) // Control frequency
return ret
}
// Obtain all live trading information of the specified strategy Id.
function getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, robotStatusCode, maxRetry) {
var retryCounter = 0
var length = 100
var offset = 0
var arr = []
if (typeof(maxRetry) == "undefined") {
maxRetry = 10
}
while (true) {
if (retryCounter > maxRetry) {
LogControl("Exceeded the maximum number of retries", maxRetry)
return null
}
var ret = callFmzExtAPI(accessKey, secretKey, "GetRobotList", offset, length, robotStatusCode)
if (!ret || ret["code"] != 0) {
Sleep(1000)
retryCounter++
continue
}
var robots = ret["data"]["result"]["robots"]
for (var i in robots) {
if (robots[i].strategy_id != strategyId) {
continue
}
arr.push(robots[i])
}
if (robots.length < length) {
break
}
offset += length
}
return arr
}
function main() {
var robotStatusCode = dicRobotStatusCode[arrIndexDesc[robotStatus]]
var robotList = getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, robotStatusCode)
if (!robotList) {
Log("Failed to obtain live trading data")
}
var robotTbl = {"type": "table", "title": "live trading list", "cols": [], "rows": []}
robotTbl.cols = ["live trading Id", "live trading name", "live trading status", "strategy name", "live trading profit"]
_.each(robotList, function(robotInfo) {
robotTbl.rows.push([robotInfo.id, robotInfo.name, descRobotStatusCode[robotInfo.status], robotInfo.strategy_name, robotInfo.profit])
})
LogStatus(_D(), "`" + JSON.stringify(robotTbl) + "`")
}
حکمت عملی پیرامیٹر ڈیزائن:
براہ راست تجارت پر چل رہا ہے:
گروپ کنٹرول مینجمنٹ ایک کلک کے ساتھ ٹرانزیکشنز کو انجام دینے میں بہت آسان بناتا ہے۔ آپ ہر اکاؤنٹ کو انفرادی طور پر کھولنے کی ضرورت کے بغیر بیک وقت متعدد رواں تجارتی اکاؤنٹس پر پوزیشن خرید ، فروخت اور بند کرسکتے ہیں۔ اس سے نہ صرف عملدرآمد کی کارکردگی میں بہتری آتی ہے ، بلکہ آپریشنل غلطیوں کے امکان کو بھی کم کیا جاتا ہے۔
لائیو ٹریڈنگ اکاؤنٹس کی فہرست حاصل کرنے کے بعد ، ہم ان اکاؤنٹس کو کمانڈ بھیج سکتے ہیں اور پہلے سے طے شدہ کارروائیوں کا ایک سلسلہ انجام دے سکتے ہیں۔ مثال کے طور پر: لائیو اکاؤنٹ میں پوزیشنوں کی کلیئرنگ ، لائیو اکاؤنٹ میں تحفظ کو روکنا ، لائیو اکاؤنٹ میں موڈ سوئچ کرنا۔ یہ سب ایف ایم زیڈ کی توسیعی API کے ذریعے حاصل کیا جاسکتا ہے۔CommandRobot
.
ہم کوڈ لکھنے کے لئے جاری ہے کے طور پر، ہم صرف توسیع API انٹرفیس پر کچھ تعاملات اور کالز شامل کرنے کی ضرورت ہےCommandRobot
ہمارے بنیادی کام میں:
function main() {
var robotStatusCode = dicRobotStatusCode[arrIndexDesc[robotStatus]]
var robotList = getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, robotStatusCode)
if (!robotList) {
Log("Failed to obtain live trading data")
}
var robotTbl = {"type": "table", "title": "live trading list", "cols": [], "rows": []}
robotTbl.cols = ["live trading Id", "live trading name", "live trading status", "strategy name", "live trading profit"]
_.each(robotList, function(robotInfo) {
robotTbl.rows.push([robotInfo.id, robotInfo.name, descRobotStatusCode[robotInfo.status], robotInfo.strategy_name, robotInfo.profit])
})
LogStatus(_D(), "`" + JSON.stringify(robotTbl) + "`")
while(true) {
LogStatus(_D(), ", Waiting to receive interactive commands", "\n", "`" + JSON.stringify(robotTbl) + "`")
var cmd = GetCommand()
if (cmd) {
var arrCmd = cmd.split(":")
if (arrCmd.length == 1 && cmd == "coverAll") {
_.each(robotList, function(robotInfo) {
var strCmd = "Clearance" // You can define the required message format
if (robotInfo.status != 1) { // Only the "live" trading platform can receive commands.
return
}
var ret = callFmzExtAPI(accessKey, secretKey, "CommandRobot", parseInt(robotInfo.id), strCmd)
LogControl("Send command to the live trading board with id: ", robotInfo.id, ":", strCmd, ", execution result:", ret)
})
}
}
Sleep(1000)
}
}
گروپ کنٹرول کی حکمت عملی نے
ایف ایم زیڈ کے توسیع شدہ API کے ساتھ ، آپ آسانی سے حکمت عملی کے پیرامیٹرز کی بیچ میں ترمیم کو نافذ کرسکتے ہیں ، اور بیچ شروع کرسکتے ہیں یا براہ راست تجارت کو روک سکتے ہیں۔
مقداری تجارت میں ، گروپ کنٹرول مینجمنٹ کے لئے ایف ایم زیڈ
بڑی تعداد میں لائیو اکاؤنٹس کا انتظام کرنے والے تاجروں کے لئے ، ایف ایم زیڈ