পাইথন ব্যবহার করে পরিমাণগত লেনদেন রোবট টাইমিং শুরু বা থামাতে টুলটিপ

লেখক:ছোট্ট স্বপ্ন, তৈরিঃ 2020-02-14 21:56:58, আপডেটঃ 2023-10-10 21:13:38

img

পাইথন ব্যবহার করে পরিমাণগত লেনদেন রোবট টাইমিং শুরু বা থামাতে টুলটিপ

একটি শক্তিশালী, নমনীয় এবং সহজেই ব্যবহারযোগ্য পরিমাণগত ট্রেডিং প্ল্যাটফর্ম হিসাবে, উদ্ভাবকগণের পরিমাণগত ট্রেডিং প্ল্যাটফর্মগুলি খুব কম ব্যবহারের থ্রেশহোল্ড এবং রোবোটিক প্রোগ্রামগুলি খুব কম সংস্থান গ্রহণ করে। তবে আমরা এখনও আশা করি যে রোবটগুলি যখন চালানো দরকার তখন শুরু করা উচিত, যখন চালানো বন্ধ করা দরকার না। উদাহরণস্বরূপ, কমোডিটি ফিউচার প্রোগ্রামিং এবং কোয়ালিফাইড ট্রেডিংয়ের ক্ষেত্রে, অফ-মার্কেট সময়টি দিনের বেশিরভাগ সময় নেয়। সুতরাং আমরা খুব আশা করি যে কেবলমাত্র রোবটটি খোলা সময় চলবে, প্রতিদিন কেবলমাত্র খোলা সময় চলবে। এই চাহিদার জন্য, আমরা পাইথন ভাষা ব্যবহার করে একটি কৌশল রোবট লিখতে পারি যা FMZ কোয়ালিফাইড ট্রেডিং প্ল্যাটফর্মে চলবে এবং এই রোবটটিকে পাস করতে হবে। উদ্ভাবকরা একটি পরিমাণগত ট্রেডিং প্ল্যাটফর্মের জন্য একটি বর্ধিত এপিআই ইন্টারফেস তৈরি করেছেন যা বটগুলিকে সময়মতো চালু এবং বন্ধ করে দেয়।

যদি চাহিদা থাকে, কাজ করুন!

আসলে, পুরো কোডটি খুব সহজ, এবং আপনি সরাসরি ইনভেন্টরদের কোয়ালিফাইড ট্রেডিং প্ল্যাটফর্ম এক্সটেনশন এপিআই ইন্টারফেসের উদাহরণগুলি কল করতে পারেন।

ঠিকানাঃ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রোবট আইডির জন্য, একটি কমার পিছনে অংশটি শুরু / বন্ধের সময়। উদাহরণস্বরূপ, আইডি হলঃ ১৭৫৭০৮, ১৪ঃ৫৫ঃ৩৩ শুরু, ১৫ঃ১০ঃ৩৩ বন্ধ।

তারপর কৌশলটি ঘুরতে থাকে, প্রতিটি ঘুরতে ঘুরতে বর্তমান সময়টি পায়, এবং তারপরে বর্তমান সময় এবং সময় নির্ধারণের সময়গুলির তুলনা করে সিদ্ধান্ত নেয় যে রোবটটি শুরু বা বন্ধ করার প্রয়োজন কিনা। যদি এটি সক্রিয় হয়, তাহলে একটি 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

শেষ

এফএমজেড প্ল্যাটফর্মের উপর ভিত্তি করে এই এক্সটেনশন এপিআইগুলি তাদের নিজস্ব পরিমাণগত ট্রেডিং প্ল্যাটফর্ম হিসাবে ব্যবহার করার জন্য সম্পূর্ণ সমস্যা নেই। এই টাইমার রোবটটির নকশা তুলনামূলকভাবে সহজ, এটি কেবল সময় শুরু করার জন্য মস্তিষ্কবিহীন, সময় বন্ধ হওয়ার জন্য, এবং শুরু করা সফল কিনা, পরীক্ষা, ব্যতিক্রমী পুনরায় চেষ্টা, ইত্যাদি প্রক্রিয়া অন্তর্ভুক্ত করে না। কৌশল শুধুমাত্র শিক্ষার জন্য।


সম্পর্কিত

আরো