পাইথন ব্যবহার করে একটি পরিমাণগত ট্রেডিং রোবট সময়সূচী শুরু বা স্টপ গ্যাজেট বাস্তবায়ন

লেখক:লিডিয়া, সৃষ্টিঃ ২০২২-১২-২০ 14:35:09, আপডেটঃ ২০২৩-০৯-২০ 10:21:21

img

পাইথন ব্যবহার করে একটি পরিমাণগত ট্রেডিং রোবট সময়সূচী শুরু বা স্টপ গ্যাজেট বাস্তবায়ন

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

যদি প্রয়োজন হয়, তাহলে আমরা এটা করব!

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

ঠিকানা:https://www.fmz.com/api#simpleউদাহরণ

উদাহরণে ফাংশনটি সরাসরি ব্যবহার করুনঃdef api (method, *args)আমাদের যে ইন্টারফেসটি কল করতে হবে তাও খুব সহজ। নিম্নলিখিত দুটি ইন্টারফেস ব্যবহার করা হয় (এফএমজেড ডকুমেন্টে পাওয়া যাবে)

  • রবট পুনরায় চালু করুন রোবট ইন্টারফেস পুনরায় চালু করুন এবং রোবট আইডিতে প্যারামিটারগুলি পাস করুন। নির্দিষ্ট ব্যবহারidকল করার জন্যঃapi ('RestartRobot', id)

  • বন্ধ করুনরোবট রোবট ইন্টারফেস বন্ধ করার জন্য, পরামিতি এছাড়াও রোবট হয়ID. রোবটID:

img

FMZ কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম এক্সটেনশন এপিআই কল করার জন্য, আপনি ব্যবহার করতে হবেAPI KEYএফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের। আপনি অ্যাকাউন্ট ম্যানেজমেন্টে আপনার নিজের API কী তৈরি করতে পারেন। আমরা পার হচ্ছি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রোবট আইডি, এবং কমা পরে অংশ শুরু / স্টপ সময়। উপরের উদাহরণে, আইডি 175708 সহ রোবটটি 14:55:33 এ শুরু হয় এবং 15:10:33 এ বন্ধ হয়।

তারপর, কৌশল, রোবট ঘোরানো রাখা হবে. প্রতিটি বৃত্তাকার ঘূর্ণন প্রথম বর্তমান সময় পাবেন, এবং তারপর বর্তমান সময় এবং টাইমিং সময় মধ্যে তুলনা অনুযায়ী রোবট শুরু বা বন্ধ ট্রিগার কিনা বিচার। যদি ট্রিগার করা হয়, তাহলে এপিআই ('RestartRobot', id) বা এপিআই (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

শেষ

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


সম্পর্কিত

আরো