وسائل لوڈ ہو رہے ہیں... لوڈنگ...

پیتھون کا استعمال کرتے ہوئے کیوٹیفیکیشن ٹریڈنگ روبوٹ ٹائمنگ شروع یا روکنے کے لئے ٹولز

مصنف:ایجاد کاروں کی مقدار - خواب, تخلیق: 2020-02-14 21:56:58, تازہ کاری: 2023-10-10 21:13:38

img

پیتھون کا استعمال کرتے ہوئے کیوٹیفیکیشن ٹریڈنگ روبوٹ ٹائمنگ شروع یا روکنے کے لئے ٹولز

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

اگر ضرورت ہو تو، بس کرو!

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

ایڈریس:https://www.fmz.com/api#简单的例子

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

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

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

    روبوٹIDاس کے علاوہ ، اس کے بارے میں مزید جانیں:img

انوینٹر کوالٹی ٹریڈنگ پلیٹ فارم کو کال کریں API توسیع انوینٹر کوالٹی ٹریڈنگ پلیٹ فارم کا استعمال کرنے کی ضرورت ہے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: 175708 روبوٹ ہے، 14:55:33 شروع، 15:10:33 بند.

اس کے بعد حکمت عملی میں مسلسل گھومنا پڑتا ہے ، ہر گھومنے میں پہلے موجودہ وقت حاصل ہوتا ہے ، اور پھر موجودہ وقت اور ٹائمنگ وقت کے مقابلے کے مطابق فیصلہ کیا جاتا ہے کہ آیا روبوٹ کو شروع کرنے یا روکنے کی ضرورت ہے۔ اگر یہ کام کرتا ہے تو ، روبوٹ کو شروع کرنے یا روکنے کے لئے API (RestartRobot button, id) یا API (StopRobot button, 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 پلیٹ فارم پر مبنی ہے. اس ٹائمر روبوٹ کا ڈیزائن نسبتا simple آسان ہے ، جس میں صرف دماغ نہیں ہوتا ہے کہ وقت پر شروع ہوتا ہے ، وقت پر رک جاتا ہے ، اور اس میں شامل نہیں ہوتا ہے کہ آیا شروع کرنا کامیاب ہے ، جانچ پڑتال ، غیر معمولی دوبارہ کوشش ، وغیرہ۔ حکمت عملی صرف تعلیمی حوالہ کے لیے ہے۔


متعلقہ

مزید