ہیلو سب، میں
اس مضمون میں بنیادی طور پر متعارف کرایا گیا ہے:
1) AccessKey اور SecretKey (جسے آگے AK اور SK کہا جائے گا) کے لئے درخواست دیں۔ ہم ایف ایم زیڈ کی سرکاری ویب سائٹ پر [اکاؤنٹ] -> [اے پی کیو] -> [نیا ایپی کیو بنائیں] کے مینو میں درخواست دیتے ہیں ، اور پھر اے کے اور ایس کے کا ایک گروپ حاصل کرتے ہیں اور ریکارڈ کرتے ہیں۔ (ایف ایم زیڈ میں اے کے اور ایس کے نظر آتے ہیں ، ہم کسی بھی وقت [اے پی آئی انٹرفیس] مینو میں اے کے اور ایس کے کے مکمل ڈیٹا کو دیکھ سکتے ہیں۔)
2) توسیع API دستاویز کے مطابق تیار سب سے پہلے، کی درخواست API کے اہم اقدامات پر نظر آتے ہیں.
https://www.fmz.com/api/v1
{
'version' : '1.0', //Custom version number
'access_key': '8a148320e0bxxxxxxxxxxxxxx19js99f', //AK
'method' : 'GetNodeList', //The specific method to call
'args' : [], //List of parameters for the specific method algorithm
'nonce' : 1516292399361, //Timestamp, in milliseconds
'sign' : '085b63456c93hfb243a757366600f9c2' //Signature (need to be encrypted according to the above 5 parameters to obtain, as discussed below)
}
Take the GetNodeList method as an example:
https://www.fmz.com/api/v1?
access_key=8a148320e0bxxxxxxxxxxxxxx19js99f&
nonce=1516292399361&
args=%5B%5D&
sign=085b63456c93hfb243a757366600f9c2&
version=1.0&
method=GetNodeList
After the parameters are spliced in the following order, the MD5 encryption algorithm is used to encrypt the string and convert it to a hexadecimal data string value, which is used as the value of the parameter sign.
version + "|" + method + "|" + args + "|" + nonce + "|" + secretKey
var URL = "https://www.fmz.com/api/v1?";
var AK = "b3a53d3XXXXXXXXXXXXXXXXXXX866fe5";//Replace here with your own AccessKey
var SK = "1d9ddd7XXXXXXXXXXXXXXXXXXX85be17";//Replace here with your own SecretKey
function main() {
//Get 5 basic parameter objects
var param = getParam("1.0.0",AK,getArgs());
Log("param:",param);
//Get the result after md5 encryption of splicing parameters
var md5Result = md5(param);
//Assign the encryption result to the basic parameter object
param.sign = md5Result;
//Get the URL of the request api
var finalUrl = getFinalUrl(param);
Log("finalUrl:",finalUrl);
//Execute the request and print the results
var info = HttpQuery(finalUrl);
Log("info:",info);
}
//Get 5 basic parameter objects
function getParam(version,ak,args){
return {
'version': version,
'access_key': ak,
'method': 'GetNodeList',
'args': JSON.stringify(args),
'nonce': new Date().getTime()
}
}
//Execute md5 encryption
function md5(param){
var paramUrl = param.version+"|"+param.method+"|"+param.args+"|"+param.nonce+"|"+SK
Log("paramUrl:",paramUrl);
return Hash("md5", "hex", paramUrl)
}
//Get the final request URL
function getFinalUrl(param){
return URL+"access_key="+AK+"&nonce="+param.nonce+"&args="+param.args+"&sign="+param.sign+"&version="+param.version+"&method="+param.method;
}
//The naming method of... args is not supported in js, so the arguments keyword is used instead to obtain the parameter array
function getArgs(){
return [].slice.call(arguments);
}
مندرجہ بالا کوڈ کی بنیاد پر، ہم روبوٹ کے درمیان پیغام مواصلات حاصل کرنے کے لئے کمانڈ روبوٹ طریقہ استعمال کریں گے.
سب سے پہلے، کمانڈ روبوٹ (روبوٹ آئی ڈی، سی ایم ڈی) کے طریقہ کار کی طرف سے کی ضرورت ہے کہ دو پیرامیٹرز پر ایک نظر ڈالیں:
پیرامیٹر کا نام | قسم | معنی |
---|---|---|
روبوٹ | int | روبوٹ ID، جو GetRobotList (...) یا روبوٹ کی تفصیلات کے صفحے پر حاصل کیا جا سکتا ہے |
سی ایم ڈی | تار | روبوٹ کو پیغام بھیجا گیا |
اب جب کہ ہم پیرامیٹر کا مطلب جانتے ہیں، چلیں کال کرنے کا طریقہ کار نافذ کریں۔
روبوٹ کی تفصیلات کے صفحے پر روبوٹ کی شناخت حاصل کریں
Cmd پیغام حاصل کرنے کا طریقہ لاگو کریں
//Get message header information
function getMessageBody(toUserName,msgType,content){
return ({
"toUserName":toUserName,//Who to send to
"fromUserName":AOKE_INFO,//Source
"createTime": new Date().getTime(),//Current timestamp
"msgType":msgType,//Message Type
"content":content,//Message content
"msgId":Math.random().toString(36).slice(-8)//Message ID
})
}
//Get message body trend information (data of message header content field)
function getCtaDate(symbol,timeCycle,direction,nowCycleTime){
return {
"symbol":symbol,//Trading currency
"timeCycle":timeCycle,//Trend cycle
"direction":direction,//Current entry direction, 0: berish, 1: bullish
"createTime":new Date().getTime(),//Current timestamp
"nowCycleTime":nowCycleTime//Start time of current cycle
}
}
//Get messages before sending them
var sendMessage = getMessageBody("Test object",'CTARemind',getCtaDate('BTC_USDT','120','0','2020-05-1620:00:00'));
//Get the robot ID and message body through the getArgs() method, and pass in the basic parameters.
var param = getParam("1.0.0",AK,getArgs(17777,sendMessage));
function main(){
while(true) {
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(1000)
}
}
پیغام کامیابی سے بھیجا گیا:
پیغام کامیابی سے موصول ہوا:
اسی طرح، ہم سب سے پہلے اگلے دو طریقوں کے پیرامیٹر کی وضاحت پر نظر آتے ہیں GetRobotList ((آفسیٹ، لمبائی، robotStatus، لیبل):
پیرامیٹر کا نام | قسم | معنی |
---|---|---|
آفسیٹ | int | سوال کا صفحہ نمبر |
لمبا | int | سوال کے صفحے کی ڈیٹا کی لمبائی |
روبوٹاسٹیٹس | int | تمام حاصل کرنے کے لئے - 1 میں منتقل |
لیبل | تار | اپنی مرضی کے مطابق ٹیگ اس ٹیگ کے ساتھ تمام روبوٹ فلٹر کر سکتے ہیں |
GetRobotDetail(RobotId):
پیرامیٹر کا نام | قسم | معنی |
---|---|---|
روبوٹ | int | روبوٹ کی شناخت |
//Get robot list information
var robotListJson = getAPIInfo('GetRobotList',getArgs(OFF_SET,PAGE_LENGTH,-1));
var robotList = robotListJson.data.result.robots;
//Get robot detail information
var robotDetailJson = getAPIInfo('GetRobotDetail',getArgs(robotId));
var robotDetail = robotDetailJson.data.result.robot;
function getLogPrient(infoArr){
return table = {
type: 'table',
title: 'Oak Quant robot display',
cols: [''Robot ID', 'Robot name', 'Strategy name', 'Next deduction time', 'Consumed time ms', 'Consumed amount CNY', 'Latest active time', 'Publish or not'],
rows: infoArr
};
}
var URL = "https://www.fmz.com/api/v1?";
var AK = "b3a53d3XXXXXXXXXXXXXXXXXXX866fe5";//Replace here with your own AccessKey
var SK = "1d9ddd7XXXXXXXXXXXXXXXXXXX85be17";//Replace here with your own SecretKey
var OFF_SET = 0;//Page number subscript of query
var PAGE_LENGTH = 5;//Data length of the query page
function main() {
LogReset();
while(true){
//Get robot list information
var robotListJson = getAPIInfo('GetRobotList',getArgs(OFF_SET,PAGE_LENGTH,-1));
//Get the robot list information
var robotList = robotListJson.data.result.robots;
//Create an array to display robot information
var infoArr = new Array();
var infoArr_index = 0;
for (index = 0; index < robotList.length; index++) {
var robot = robotList[index];
//Get the robot ID of the current loop
var robotId = robot.id;
//Get robot detail information
var robotDetailJson = getAPIInfo('GetRobotDetail',getArgs(robotId));
var robotDetail = robotDetailJson.data.result.robot;
//Convert details to array objects
var arr = getLogPrientItem(robotDetail);
infoArr[infoArr_index] = arr;
infoArr_index++;
}
Log("infoArr:",infoArr);
LogStatus('`' + JSON.stringify(getLogPrient(infoArr)) + '`');
Sleep(30000);
}
}
function getLogPrient(infoArr){
return table = {
type: 'table',
title: 'Oak Quant robot display',
cols: [''Robot ID', 'Robot name', 'Strategy name', 'Next deduction time', 'Consumed time ms', 'Consumed amount CNY', 'Latest active time', 'Publish or not'],
rows: infoArr
};
}
//Get API information by parameters
function getAPIInfo(method,dateInfo){
//Get 5 basic parameter objects
var param = getParam("1.0.0",AK,method,dateInfo);
//Log("param:",param);
//Get the result after md5 encryption of splicing parameters
var md5Result = md5(param);
//Assign the encryption result to the basic parameter object
param.sign = md5Result;
//Get the URL of the request api
var finalUrl = getFinalUrl(param);
//Log("finalUrl:",finalUrl);
//Execute the request and print the results
var info = HttpQuery(finalUrl);
//Log("info:",info);
return JSON.parse(info);
}
//Get the object of the basic 5 parameters
function getParam(version,ak,method,args){
return {
'version': version,
'access_key': ak,
'method': method,
'args': JSON.stringify(args),
'nonce': new Date().getTime()
}
}
//Execute md5 encryption
function md5(param){
var paramUrl = param.version+"|"+param.method+"|"+param.args+"|"+param.nonce+"|"+SK
//Log("paramUrl:",paramUrl);
return Hash("md5", "hex", paramUrl)
}
//Get the final request URL
function getFinalUrl(param){
return URL+"access_key="+AK+"&nonce="+param.nonce+"&args="+param.args+"&sign="+param.sign+"&version="+param.version+"&method="+param.method;
}
//The naming method of... args is not supported in js, so the arguments keyword is used instead to obtain the parameter array
function getArgs(){
return [].slice.call(arguments);
}
//Get the display details object: ['Robot ID', 'Robot Name', 'Strategy Name', 'Next Deduction Time', 'Time Consumed ms', 'Amount Consumed CNY', 'Latest Active Time', 'Whether to Publish'],
function getLogPrientItem(robotDetail){
var itemArr = new Array();
var iteArr_index = 0;
itemArr[iteArr_index++] = robotDetail.id;
itemArr[iteArr_index++] = robotDetail.name;
itemArr[iteArr_index++] = robotDetail.strategy_name;
itemArr[iteArr_index++] = robotDetail.charge_time;
itemArr[iteArr_index++] = robotDetail.charged;
itemArr[iteArr_index++] = robotDetail.consumed/1e8;
itemArr[iteArr_index++] = robotDetail.refresh;
itemArr[iteArr_index++] = robotDetail.public == 0?"Published":"Unpublished";
return itemArr;
}
اصل توسیع میں ، زیادہ سے زیادہ دلچسپ افعال کا احساس کیا جاسکتا ہے۔ مثال کے طور پر ، کمانڈ روبوٹ طریقہ کار کا استعمال کرتے ہوئے ، ہر روبوٹ روبوٹ اے کو دل کی دھڑکن کا پتہ لگانے کا پیغام بھیجتا ہے۔ اگر روبوٹ اے کو معلوم ہوتا ہے کہ کسی مشین میں دل کی دھڑکن نہیں ہے ، لیکن روبوٹ ابھی بھی چل رہا ہے تو ، وہ ایف ایم زیڈ سروس کے ذریعے الارم دے سکتا ہے۔ اس طرح ، _C ((() مردہ لوپ جیسے الارم سے بچنے سے بچ سکتے ہیں جو جعلی موت کے منظرناموں کی پروگرامنگ کا باعث بنتے ہیں۔ مجھے امید ہے کہ اس بار میرے تعارف کے ذریعے، ایف ایم زیڈ پلیٹ فارم میں مزید اور زیادہ دلچسپ افعال تیار اور کھولے جا سکتے ہیں. آخر میں ، میں ایف ایم زیڈ پلیٹ فارم اور تمام عظیم لوگوں جیسے شیاوکسیومینگ ، مسٹر ژانگ اور مسٹر زیڈ کا ان کی حمایت اور مدد کے لئے شکریہ ادا کرنا چاہتا ہوں۔ شکریہ۔