
پورے نیٹ ورک پر ایک طاقتور، لچکدار اور استعمال میں آسان مقداری تجارتی پلیٹ فارم کے طور پر، انوینٹر کوانٹیٹیو ٹریڈنگ پلیٹ فارم کے استعمال کے لیے بہت کم حد ہے اور روبوٹ پروگرام بہت کم وسائل لیتا ہے۔ لیکن ہم اب بھی امید کرتے ہیں کہ روبوٹ کو اس وقت شروع کیا جا سکتا ہے جب اسے چلانے کی ضرورت ہو اور جب اسے چلانے کی ضرورت نہ ہو تو اسے روکا جا سکے۔ مثال کے طور پر، کموڈٹی فیوچرز کی پروگرام شدہ اور مقداری تجارت کرتے وقت، دن کے بیشتر حصے میں غیر منڈی کھلنے کا وقت ہوتا ہے۔ اس طرح، ہم بہت زیادہ امید کرتے ہیں کہ روبوٹ کو صرف مارکیٹ کھلنے کے اوقات میں ہی چلنے دیا جائے گا، یہ سوچنا بہت دلچسپ ہے کہ اسے روزانہ کھلنے کے اوقات میں چلانے سے کتنی قیمت بچائی جا سکتی ہے۔ اس ضرورت کو پورا کرنے کے لیے، ہم ایک حکمت عملی روبوٹ لکھنے کے لیے Python کا استعمال کر سکتے ہیں جو FMZ مقداری تجارتی پلیٹ فارم پر چلتا ہے۔ موجد کے مقداری تجارتی پلیٹ فارم کا توسیعی API انٹرفیس ایک مقررہ وقت پر روبوٹ کے آغاز اور رکنے کو کنٹرول کرتا ہے۔
درحقیقت، پورا کوڈ بہت آسان ہے موجد کے مقداری تجارتی پلیٹ فارم کے توسیع شدہ API انٹرفیس کو کال کرنے کی مثال براہ راست استعمال کی جا سکتی ہے۔
پتہ: https://www.fmz.com/api#%E7%AE%80%E5%8D%95%E7%9A%84%E4%BE%8B%E5%AD%90
مثال میں فنکشن کو براہ راست استعمال کریں:def api(method, *args)
ہمیں جس انٹرفیس کو کال کرنے کی ضرورت ہے وہ بھی بہت آسان ہے، درج ذیل دو انٹرفیس کا استعمال کرتے ہوئے (FMZ دستاویز میں پایا جا سکتا ہے)
RestartRobot
روبوٹ انٹرفیس کو دوبارہ شروع کریں اور پیرامیٹر کے طور پر روبوٹ ID میں پاس کریں۔
مخصوص استعمال کریں۔id، آپ اسے اس طرح کہہ سکتے ہیں:api('RestartRobot', id)
StopRobot
روبوٹ انٹرفیس کو روکیں، پیرامیٹرز بھی روبوٹ ہیں۔ID。
روبوٹIDدیکھیں، حاصل کریں، اسکرین شاٹ:

Inventor Quantitative Trading Platform extension API کو کال کرنے کے لیے، آپ کو Inventor Quantitative Trading Platform استعمال کرنے کی ضرورت ہے۔API KEY。
آپ اکاؤنٹ مینجمنٹ میں اپنا خود بنا سکتے ہیں۔API KEY。
ہم نے ڈال دیا۔API KEYحکمت عملی کے پیرامیٹر کے طور پر پاس کیا گیا۔
موجد مقداری تجارتی پلیٹ فارم اکاؤنٹ حاصل کریں۔API KEYاسکرین شاٹ:

صرف وقت کی منطق لکھنا باقی ہے، جو کہ ٹائمنگ کے پیرامیٹرز کو سیٹ کرنا بھی بہت آسان ہے۔
["175708,14:55:33-15:10:33", ...]
بیضوی اشارہ کرتا ہے کہ زیادہ مماثلت ہے۔"175708,14:55:33-15:10:33"ترتیبات
ٹائمنگ پیرامیٹر ایک JSON سٹرنگ ہے، جسے پالیسی کوڈ میں ایک فہرست میں پارس کیا جاتا ہے۔ فہرست میں موجود ہر عنصر روبوٹ اسٹارٹ/اسٹاپ سیٹنگز کا ایک سیٹ ہے۔
ابھی:
"175708,14:55:33-15:10:33"
کوما ان کو الگ کرنے کے لیے استعمال ہوتے ہیں۔ کوما سے پہلے کا حصہ175708روبوٹ ID ہے، اور کوما کے بعد کا حصہ آغاز کا وقت/اسٹاپ ٹائم ہے۔
مندرجہ بالا مثال میں، ID 175708 والا روبوٹ 14:55:33 پر شروع ہوا اور 15:10:33 پر رک گیا۔
پھر حکمت عملی تلاش کرتی رہتی ہے، ہر بار اسے پہلے موجودہ وقت ملتا ہے، اور پھر موجودہ وقت کا مقررہ وقت کے ساتھ موازنہ کرتا ہے تاکہ یہ معلوم کیا جا سکے کہ آیا روبوٹ کے آغاز یا رکنے کو متحرک کرنا ضروری ہے۔ اگر ٹرگر ہو جائے تو روبوٹ کو شروع کرنے یا روکنے کے لیے api(‘RestartRobot’, id) یا api(‘StopRobot’, id) کو کال کریں۔
مکمل حکمت عملی کوڈ:
# -*- coding: utf-8 -*-
import time
import json
try:
import md5
import urllib2
from urllib import urlencode
except:
import hashlib as md5
import urllib.request as urllib2
from urllib.parse import urlencode
def api(method, *args):
d = {
'version': '1.0',
'access_key': accessKey,
'method': method,
'args': json.dumps(list(args)),
'nonce': int(time.time() * 1000),
}
d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
return json.loads(urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))
RobotParams = json.loads(strRobotParams)
def main():
global RobotParams
arrParams = []
nowDay = 0
strPush = ""
if isPushMsg:
strPush = "@"
for i in range(len(RobotParams)):
param = {}
arr = RobotParams[i].split(",")
if len(arr) != 2:
raise Exception("字符串配置错误:分隔符号,")
param["id"] = arr[0]
param["isProcessOpenThisDay"] = False
param["isProcessCloseThisDay"] = False
arr = arr[1].split("-")
if len(arr) != 2:
raise Exception("字符串配置错误:分隔符号-")
begin = arr[0]
arrBegin = begin.split(":")
if len(arrBegin) != 3:
raise Exception("字符串配置错误:起始时间分隔符号:")
param["begin"] = {}
param["begin"]["hour"] = float(arrBegin[0])
param["begin"]["min"] = float(arrBegin[1])
param["begin"]["sec"] = float(arrBegin[2])
end = arr[1]
arrEnd = end.split(":")
if len(arrEnd) != 3:
raise Exception("字符串配置错误:结束时间分隔符号:")
param["end"] = {}
param["end"]["hour"] = float(arrEnd[0])
param["end"]["min"] = float(arrEnd[1])
param["end"]["sec"] = float(arrEnd[2])
arrParams.append(param)
# 测试
Log("输出参数", arrParams, "#FF0000")
while True:
nowTime = time.localtime(time.time())
nowHour = nowTime.tm_hour
nowMin = nowTime.tm_min
nowSec = nowTime.tm_sec
tbl = {
"type" : "table",
"title" : "msg",
"cols" : ["id", "begin", "end", "今天是否执行过启动", "今天是否执行过停止"],
"rows" : []
}
for i in range(len(arrParams)):
tbl["rows"].append([arrParams[i]["id"], json.dumps(arrParams[i]["begin"]), json.dumps(arrParams[i]["end"]), arrParams[i]["isProcessOpenThisDay"], arrParams[i]["isProcessCloseThisDay"]])
if nowDay != nowTime.tm_mday:
arrParams[i]["isProcessOpenThisDay"] = False
arrParams[i]["isProcessCloseThisDay"] = False
if arrParams[i]["isProcessOpenThisDay"] == False:
if nowTime.tm_hour == arrParams[i]["begin"]["hour"] and nowTime.tm_min >= arrParams[i]["begin"]["min"] and nowTime.tm_sec >= arrParams[i]["begin"]["sec"]:
ret = api('RestartRobot', int(arrParams[i]["id"]))
arrParams[i]["isProcessOpenThisDay"] = True
Log("机器人ID:", arrParams[i]["id"], "执行启动,请登录平台检查是否启动成功", "扩展API返回值:", ret, strPush)
if arrParams[i]["isProcessCloseThisDay"] == False:
if nowTime.tm_hour == arrParams[i]["end"]["hour"] and nowTime.tm_min >= arrParams[i]["end"]["min"] and nowTime.tm_sec >= arrParams[i]["end"]["sec"]:
ret = api('StopRobot', int(arrParams[i]["id"]))
arrParams[i]["isProcessCloseThisDay"] = True
Log("机器人ID:", arrParams[i]["id"], "执行停止,请登录平台检查是否停止成功", "扩展API返回值:", ret, strPush)
if nowDay != nowTime.tm_mday:
nowDay = nowTime.tm_mday
LogStatus(_D(), nowTime, "\n`" + json.dumps(tbl) + "`")
Sleep(500)

اسکرین شاٹ

اس حکمت عملی سے چلنے والے روبوٹ:

حکمت عملی کا پتہ: https://www.fmz.com/strategy/184600
نقطہ آغاز کے طور پر، انوینٹر مقداری تجارتی پلیٹ فارم کا توسیعی API بہت طاقتور ہے FMZ پلیٹ فارم کی بنیاد پر اپنا مقداری تجارتی پلیٹ فارم بنانے کے لیے ان توسیع شدہ APIs کا استعمال کرنا مکمل طور پر ممکن ہے۔ اس ٹائمنگ روبوٹ کا ڈیزائن نسبتاً آسان ہے جب یہ وقت آتا ہے تو اس میں کوئی میکانزم شامل نہیں ہوتا ہے جیسے کہ سٹارٹ اپ کامیاب ہے، تصدیق، غیر معمولی دوبارہ کوشش وغیرہ۔ یہ حکمت عملی صرف حوالہ سیکھنے کے لیے ہے۔