4
ফোকাস
1271
অনুসারী

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

তৈরি: 2020-02-14 21:56:58, আপডেট করা হয়েছে: 2023-10-10 21:13:38
comments   4
hits   3047

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

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

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

আপনি যদি একটি প্রয়োজন আছে, শুধু এটা করতে!

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

ঠিকানা: https://www.fmz.com/api#%E7%AE%80%E5%8D%95%E7%9A%84%E4%BE%8B%E5%AD%90

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

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

  • StopRobot রোবট ইন্টারফেস বন্ধ করুন, প্যারামিটারগুলিও রোবট।ID

রোবটIDদেখুন, প্রাপ্ত করুন, স্ক্রিনশট: নিয়মিতভাবে গ্যাজেট শুরু বা বন্ধ করতে পরিমাণগত ট্রেডিং রোবট বাস্তবায়ন করতে পাইথন ব্যবহার করুন

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

যা বাকি আছে তা হল টাইমিং লজিক লেখা, যা টাইমিং প্যারামিটার সেট করাও খুব সহজ।

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

রোবট প্যারামিটার সেটিংস:

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

কৌশল চালানো:

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

এই কৌশল দ্বারা পরিচালিত রোবট: নিয়মিতভাবে গ্যাজেট শুরু বা বন্ধ করতে পরিমাণগত ট্রেডিং রোবট বাস্তবায়ন করতে পাইথন ব্যবহার করুন

কৌশল ঠিকানা: https://www.fmz.com/strategy/184600

শেষ

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