Type/to search
8
Follow
1364
Followers
ایک گیجٹ کو شروع کرنے یا روکنے کے لیے ایک مقداری تجارتی روبوٹ کو لاگو کرنے کے لیے ازگر کا استعمال کریں۔
Discussions
Created 2020-02-14 21:56:58  Updated 2023-10-10 21:13:38
 4
 3273

img

ایک گیجٹ کو شروع کرنے یا روکنے کے لیے ایک مقداری تجارتی روبوٹ کو لاگو کرنے کے لیے ازگر کا استعمال کریں۔

پورے نیٹ ورک پر ایک طاقتور، لچکدار اور استعمال میں آسان مقداری تجارتی پلیٹ فارم کے طور پر، انوینٹر کوانٹیٹیو ٹریڈنگ پلیٹ فارم کے استعمال کے لیے بہت کم حد ہے اور روبوٹ پروگرام بہت کم وسائل لیتا ہے۔ لیکن ہم اب بھی امید کرتے ہیں کہ روبوٹ کو اس وقت شروع کیا جا سکتا ہے جب اسے چلانے کی ضرورت ہو اور جب اسے چلانے کی ضرورت نہ ہو تو اسے روکا جا سکے۔
مثال کے طور پر، کموڈٹی فیوچرز کی پروگرام شدہ اور مقداری تجارت کرتے وقت، دن کے بیشتر حصے میں غیر منڈی کھلنے کا وقت ہوتا ہے۔ اس طرح، ہم بہت زیادہ امید کرتے ہیں کہ روبوٹ کو صرف مارکیٹ کھلنے کے اوقات میں ہی چلنے دیا جائے گا، یہ سوچنا بہت دلچسپ ہے کہ اسے روزانہ کھلنے کے اوقات میں چلانے سے کتنی قیمت بچائی جا سکتی ہے۔ اس ضرورت کو پورا کرنے کے لیے، ہم ایک حکمت عملی روبوٹ لکھنے کے لیے Python کا استعمال کر سکتے ہیں جو FMZ مقداری تجارتی پلیٹ فارم پر چلتا ہے۔
موجد کے مقداری تجارتی پلیٹ فارم کا توسیعی API انٹرفیس ایک مقررہ وقت پر روبوٹ کے آغاز اور رکنے کو کنٹرول کرتا ہے۔

جب کوئی مطالبہ ہو تو بس کرو!

درحقیقت، پورا کوڈ بہت آسان ہے موجد کے مقداری تجارتی پلیٹ فارم کے توسیع شدہ API انٹرفیس کو کال کرنے کی مثال براہ راست استعمال کی جا سکتی ہے۔

پتہ: https://www.fmz.com/api#简单的例子

مثال میں فنکشن کو براہ راست استعمال کریں:def api(method, *args)
ہمیں جس انٹرفیس کو کال کرنے کی ضرورت ہے وہ بھی بہت آسان ہے، درج ذیل دو انٹرفیس کا استعمال کرتے ہوئے (FMZ دستاویز میں پایا جا سکتا ہے)

  • RestartRobot
    روبوٹ انٹرفیس کو دوبارہ شروع کریں اور پیرامیٹر کے طور پر روبوٹ ID میں پاس کریں۔
    مخصوص استعمال کریں۔id، آپ اسے اس طرح کہہ سکتے ہیں:api('RestartRobot', id)

  • StopRobot
    روبوٹ انٹرفیس کو روکیں، پیرامیٹرز بھی روبوٹ ہیں۔ID

    روبوٹIDدیکھیں، حاصل کریں، اسکرین شاٹ:
    img

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

صرف وقت کی منطق لکھنا باقی ہے، جو کہ ٹائمنگ کے پیرامیٹرز کو سیٹ کرنا بھی بہت آسان ہے۔

["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)

روبوٹ پیرامیٹر کی ترتیبات:

img

حکمت عملی آپریشن:

اسکرین شاٹ
img

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

حکمت عملی کا پتہ: https://www.fmz.com/strategy/184600

نتیجہ

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

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