پیتھون کا استعمال کرتے ہوئے ایک مقداری ٹریڈنگ روبوٹ ٹائمنگ شروع یا سٹاپ گیجٹ لاگو کریں

مصنف:لیدیہ, تخلیق: 2022-12-20 14:35:09, تازہ کاری: 2023-09-20 10:21:21

img

پیتھون کا استعمال کرتے ہوئے ایک مقداری ٹریڈنگ روبوٹ ٹائمنگ شروع یا سٹاپ گیجٹ لاگو کریں

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

اگر ضرورت ہے تو، چلو یہ کرتے ہیں!

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

ایڈریس:https://www.fmz.com/api#simpleمثال

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

  • روبوٹ دوبارہ شروع کریں روبوٹ انٹرفیس دوبارہ شروع کریں اور روبوٹ ID میں پیرامیٹرز میں منتقل. مخصوص استعمالidکال کرنے کے لئے:api ('RestartRobot', id)

  • روبوٹ کو روکیں روبوٹ انٹرفیس کو روکنے کے لئے، پیرامیٹرز بھی روبوٹ ہیںID. روبوٹID:

img

FMZ کوانٹ ٹریڈنگ پلیٹ فارم توسیع API کال کرنے کے لئے، آپ کو استعمال کرنے کی ضرورت ہےAPI KEYایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کا۔ آپ اپنے اکاؤنٹ مینجمنٹ میں اپنی API کلید پیدا کر سکتے ہیں. ہم گزر جاتے ہیںAPI KEYایک حکمت عملی پیرامیٹر کے طور پر. FMZ کوانٹ ٹریڈنگ پلیٹ فارم اکاؤنٹ حاصل کرنے کا اسکرین شاٹAPI KEY:

img

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

["175708,14:55:33-15:10:33", ...]

ellipses کے زیادہ ترتیبات کی طرح اشارہ کرتا ہے"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 پر رک جاتا ہے.

پھر ، حکمت عملی میں ، روبوٹ گھومتا رہے گا۔ ہر گول گھومنے سے پہلے موجودہ وقت مل جائے گا ، اور پھر فیصلہ کیا جائے گا کہ موجودہ وقت اور ٹائمنگ ٹائم کے مابین موازنہ کے مطابق روبوٹ کو اسٹارٹ یا اسٹاپ کرنا ہے۔ اگر ٹرگر کیا جاتا ہے تو، روبوٹ کو شروع کرنے اور روکنے کے لئے اے پی آئی ('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("String configuration error: delimiter,")
        param["id"] = arr[0]
        param["isProcessOpenThisDay"] = False
        param["isProcessCloseThisDay"] = False

        arr = arr[1].split("-")
        if len(arr) != 2:
            raise Exception("String configuration error: delimiter-")

        begin = arr[0]
        arrBegin = begin.split(":")
        if len(arrBegin) != 3:
            raise Exception("String configuration error: start time separator:")
        
        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("String configuration error: end time separator:")            
        
        param["end"] = {}
        param["end"]["hour"] = float(arrEnd[0])
        param["end"]["min"] = float(arrEnd[1])
        param["end"]["sec"] = float(arrEnd[2])
        arrParams.append(param)

    # Test
    Log("Output parameters", 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", "Did you perform a start today", "Did you perform a stop today"],
            "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("Robot ID:", arrParams[i]["id"], "Execution started, please log in to the platform to check if it started successfully", "Extended API return value:", 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("Robot ID:", arrParams[i]["id"], "Execution stopped, please log in to the platform to check if it stopped successfully", "Extended API return value:", 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 اب بھی بہت طاقتور ہے۔ ان توسیع شدہ APIs کے ساتھ ایف ایم زیڈ پلیٹ فارم پر مبنی اپنا مقداری تجارتی پلیٹ فارم بنانا کوئی مسئلہ نہیں ہے۔ ٹائمنگ روبوٹ ڈیزائن میں آسان ہے ، یہ وقت پر شروع ہوتا ہے اور وقت پر رک جاتا ہے۔ اس میں ایسے طریقہ کار شامل نہیں ہیں جیسے اسٹارٹ اپ کامیاب ہے ، معائنہ ، استثناء دوبارہ کوشش ، وغیرہ۔ اگر آپ دلچسپی رکھتے ہیں تو ، آپ افعال شامل کرسکتے ہیں اور ان کو بڑھا سکتے ہیں۔ یہ حکمت عملی صرف حوالہ کے لیے ہے۔


متعلقہ

مزید