Type/to search
8
Follow
1364
Followers
गैजेट को शुरू या बंद करने के लिए मात्रात्मक ट्रेडिंग रोबोट को लागू करने के लिए पायथन का उपयोग करें
Discussions
Created 2020-02-14 21:56:58  Updated 2023-10-10 21:13:38
 4
 3273

img

गैजेट को शुरू या बंद करने के लिए मात्रात्मक ट्रेडिंग रोबोट को लागू करने के लिए पायथन का उपयोग करें

संपूर्ण नेटवर्क पर एक शक्तिशाली, लचीले और उपयोग में आसान मात्रात्मक ट्रेडिंग प्लेटफॉर्म के रूप में, इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म के उपयोग की सीमा बहुत कम है और रोबोट प्रोग्राम बहुत कम संसाधन लेता है। लेकिन हम अब भी आशा करते हैं कि रोबोट को तब चालू किया जा सकेगा जब उसे चलाने की आवश्यकता होगी और तब रोका जा सकेगा जब उसे चलाने की आवश्यकता नहीं होगी।
उदाहरण के लिए, कमोडिटी वायदा के क्रमादेशित और मात्रात्मक व्यापार करते समय, दिन का अधिकांश समय गैर-बाज़ार खुलने के समय में व्यतीत होता है। इस तरह, हम रोबोट को केवल बाज़ार खुलने के समय ही चलाने की उम्मीद करते हैं। यह सोचना रोमांचक है कि इसे हर दिन केवल बाज़ार खुलने के समय ही चलाने से कितनी लागत बचाई जा सकती है। इस आवश्यकता को पूरा करने के लिए, हम पायथन का उपयोग करके एक रणनीति रोबोट लिख सकते हैं जो FMZ मात्रात्मक ट्रेडिंग प्लेटफॉर्म पर चलता है।
आविष्कारक के मात्रात्मक ट्रेडिंग प्लेटफॉर्म का विस्तारित API इंटरफ़ेस एक निश्चित समय पर रोबोट के प्रारंभ और समापन को नियंत्रित करता है।

जब मांग हो तो बस करो!

वास्तव में, पूरा कोड बहुत सरल है। आविष्कारक के मात्रात्मक व्यापार मंच विस्तारित एपीआई इंटरफ़ेस को कॉल करने का उदाहरण सीधे इस्तेमाल किया जा सकता है

पता: https://www.fmz.com/api#简单的例子

उदाहरण में दिए गए फ़ंक्शन का सीधे उपयोग करें:def api(method, *args)
हमें जिस इंटरफ़ेस को कॉल करना है वह भी बहुत सरल है, निम्नलिखित दो इंटरफ़ेस का उपयोग करके (FMZ दस्तावेज़ में पाया जा सकता है)

  • RestartRobot
    रोबोट इंटरफ़ेस को पुनः आरंभ करें और रोबोट आईडी को पैरामीटर के रूप में पास करें।
    विशिष्ट उपयोग करेंid, आप इसे इस तरह कह सकते हैं:api('RestartRobot', id)

  • StopRobot
    रोबोट इंटरफ़ेस बंद करो, पैरामीटर भी रोबोट हैंID

    रोबोटIDदेखें, प्राप्त करें, स्क्रीनशॉट:
    img

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म एक्सटेंशन एपीआई को कॉल करने के लिए, आपको इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म का उपयोग करना होगा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', 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

निष्कर्ष

शुरुआती बिंदु के रूप में, इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म का विस्तारित API बहुत शक्तिशाली है। FMZ प्लेटफ़ॉर्म पर आधारित अपना खुद का क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म बनाने के लिए इन विस्तारित API का उपयोग करना पूरी तरह से संभव है।
इस टाइमिंग रोबोट का डिज़ाइन अपेक्षाकृत सरल है। यह बस समय आने पर शुरू और बंद हो जाता है। इसमें कोई भी तंत्र शामिल नहीं है जैसे कि स्टार्टअप सफल है या नहीं, सत्यापन, असामान्य पुनः प्रयास, आदि। जो लोग रुचि रखते हैं वे फ़ंक्शन जोड़ सकते हैं और विस्तार कर सकते हैं यह।
यह रणनीति केवल सीखने के संदर्भ के लिए है

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)