Type/to search
8
Follow
1364
Followers
Menggunakan API lanjutan FMZ untuk mencapai pengurusan kawalan kumpulan yang cekap dalam perdagangan kuantitatif
Discussions
Created 2023-11-19 20:57:18  Updated 2025-05-16 16:49:59
 0
 1184

img

Dengan populariti dan perkembangan perdagangan kuantitatif, pelabur biasanya perlu mengurus sejumlah besar akaun nyata, yang membawa cabaran besar kepada membuat keputusan, pemantauan dan pelaksanaan perdagangan. Untuk meningkatkan kecekapan pengurusan dan mengurangkan kesukaran operasi, peniaga di FMZ boleh menggunakan API lanjutan FMZ untuk pengurusan kawalan kumpulan. Artikel ini akan meneroka kelebihan menggunakan API lanjutan FMZ dalam perdagangan kuantitatif dan cara untuk mencapai pengurusan kawalan kumpulan yang cekap.

Ramai pengguna mempunyai akaun pelanggan mereka sendiri yang perlu diurus dan diselenggarakan Apabila terdapat sejumlah besar akaun pelanggan, cara pengurusan dan penyelenggaraan yang lebih mudah diperlukan (sekurang-kurangnya sedozen akaun, dan paling banyak ratusan akaun). FMZ menyediakan API lanjutan yang berkuasa, dan pengurusan kawalan kumpulan melalui API lanjutan FMZ menjadi pilihan yang ideal.

Pemantauan berpusat

Melalui API lanjutan FMZ, anda boleh memantau aktiviti dagangan dan status aset semua akaun sebenar secara berpusat. Sama ada ia menyemak kedudukan setiap akaun, rekod transaksi sejarah atau pemantauan masa nyata keadaan untung dan rugi akaun, ia boleh dicapai.

javascript
// 全局变量 var isLogMsg = true // 控制日志是否打印 var isDebug = false // 调试模式 var arrIndexDesc = ["all", "running", "stop"] var descRobotStatusCode = ["空闲中", "运行中", "停止中", "已退出", "被停止", "策略有错误"] var dicRobotStatusCode = { "all" : -1, "running" : 1, "stop" : 4, } // 扩展的日志函数 function LogControl(...args) { if (isLogMsg) { Log(...args) } } // FMZ扩展API调用函数 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) // 控制频率 return ret } // 获取指定策略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("超过最大重试次数", 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("获取实盘数据失败") } var robotTbl = {"type": "table", "title": "实盘列表", "cols": [], "rows": []} robotTbl.cols = ["实盘Id", "实盘名称", "实盘状态", "策略名称", "实盘收益"] _.each(robotList, function(robotInfo) { robotTbl.rows.push([robotInfo.id, robotInfo.name, descRobotStatusCode[robotInfo.status], robotInfo.strategy_name, robotInfo.profit]) }) LogStatus(_D(), "`" + JSON.stringify(robotTbl) + "`") }

Reka bentuk parameter strategi:

img

Reka Bentuk Interaksi:

img

Operasi cakera sebenar:

img

Pelaksanaan satu klik

Pengurusan kawalan kumpulan menjadikannya sangat mudah untuk melaksanakan transaksi dengan satu klik. Anda boleh membeli, menjual, menutup kedudukan dan operasi lain pada berbilang pesanan sebenar pada masa yang sama tanpa perlu membuka pesanan sebenar yang berbeza satu demi satu. Ini bukan sahaja meningkatkan kecekapan pelaksanaan, tetapi juga mengurangkan kemungkinan ralat operasi.

Selepas mendapatkan maklumat senarai masa nyata, kami boleh menghantar arahan kepada pasaran masa nyata untuk melaksanakan satu siri operasi yang telah ditetapkan. Contohnya: pembubaran masa nyata, perlindungan penggantungan masa nyata dan penukaran mod masa nyata. Ini boleh dilanjutkan melalui FMZ APICommandRobotcapai.

Kami terus menulis kod, cuma tambah beberapa interaksi dan lanjutkan antara muka API dalam fungsi utamaCommandRobotPanggilannya:

javascript
function main() { var robotStatusCode = dicRobotStatusCode[arrIndexDesc[robotStatus]] var robotList = getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, robotStatusCode) if (!robotList) { Log("获取实盘数据失败") } var robotTbl = {"type": "table", "title": "实盘列表", "cols": [], "rows": []} robotTbl.cols = ["实盘Id", "实盘名称", "实盘状态", "策略名称", "实盘收益"] _.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(), ", 等待接收交互命令", "\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 = "清仓" // 可以定义所需的消息格式 if (robotInfo.status != 1) { // 只有”活着“的实盘才能接收命令 return } var ret = callFmzExtAPI(accessKey, secretKey, "CommandRobot", parseInt(robotInfo.id), strCmd) LogControl("向id:", robotInfo.id, "的实盘发送命令:", strCmd, ", 执行结果:", ret) }) } } Sleep(1000) } }

img

Strategi kawalan kumpulan kemudiannya menghantar arahan kepada "Ujian 1 A" dan "Ujian 1 B".

img

img

Penyegerakan Dasar

Menggunakan API lanjutan FMZ, anda boleh mengubah suai parameter strategi dalam kelompok dengan mudah dan memulakan serta menghentikan dagangan sebenar dalam kelompok.
Disebabkan oleh panjang artikel, kami akan membincangkan secara terperinci cara membatch mengubah suai parameter strategi dan memulakannya dalam artikel seterusnya.

Kesimpulan

Dalam dagangan kuantitatif, dengan menggunakan API lanjutan FMZ untuk pengurusan kawalan kumpulan, pedagang boleh memantau, melaksanakan dan melaraskan berbilang akaun nyata dengan lebih cekap. Pendekatan pengurusan berpusat ini bukan sahaja meningkatkan kecekapan operasi, tetapi juga membantu untuk melaksanakan kawalan risiko dan penyegerakan strategi dengan lebih baik.
Bagi peniaga yang menguruskan sejumlah besar akaun nyata, API lanjutan FMZ menyediakan mereka alat yang berkuasa dan fleksibel, menjadikan dagangan kuantitatif lebih mudah dan terkawal.

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)