एक शक्तिशाली, लचीला और आसानी से उपयोग करने योग्य क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म के रूप में, आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म का उपयोग बहुत कम है और रोबोट प्रोग्राम बहुत कम संसाधनों का उपयोग करते हैं। लेकिन हम अभी भी चाहते हैं कि रोबोट को चलाने की आवश्यकता होने पर शुरू किया जाए, न कि चलाने पर बंद किया जाए। उदाहरण के लिए, कमोडिटी फ्यूचर्स प्रोग्रामिंग और क्वांटिफाइड ट्रेडिंग में, गैर-बजार समय पूरे दिन का एक बड़ा हिस्सा है। इसलिए हम बहुत चाहते हैं कि रोबोट केवल बाजार समय पर चले, और हर दिन केवल बाजार समय पर चलना और लागत बचाने के बारे में सोचना रोमांचक है। इस आवश्यकता के लिए, हम पायथन भाषा का उपयोग कर सकते हैं एक रणनीति रोबोट लिखने के लिए जो एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर चलता है, ताकि यह रोबोट पारित हो सके। आविष्कारकों ने एक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म के लिए एक विस्तारित एपीआई इंटरफ़ेस बनाया, जो समय पर रोबोट को शुरू करने और बंद करने को नियंत्रित करता है।
वास्तव में पूरा कोड बहुत सरल है, और आप सीधे आविष्कारक को कॉल करके उपयोग कर सकते हैं
पताःhttps://www.fmz.com/api#简单的例子
सीधे उदाहरण में फ़ंक्शन का उपयोग करेंःdef api(method, *args)
हमें कॉल करने के लिए इंटरफेस की भी आवश्यकता है जो कि सरल है, निम्नलिखित दो इंटरफेस ((FMZ दस्तावेज़ पर खोज करने के लिए उपलब्ध है) के साथ।
रिस्टार्ट रोबोट
रोबोट इंटरफेस को पुनरारंभ करें और रोबोट आईडी के लिए पैरामीटर भेजें।
विशिष्ट उपयोगid
इस तरह से कॉल करेंःapi('RestartRobot', id)
रोबोट रोकें
रोबोट इंटरफेस को रोकें, पैरामीटर भी रोबोट हैंID
。
रोबोटID
यह एक बहुत ही दिलचस्प लेख है।
आविष्कारकों के लिए क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म का उपयोग करने के लिए आवश्यक एपीआई का विस्तार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
रोबोट आईडी के लिए, अल्पविराम के बाद का भाग प्रारंभ समय/बंद समय है।
उदाहरण के लिए, आईडीः 175708 रोबोट, 14:55:33 शुरू, 15:10:33 बंद।
इसके बाद रणनीति में लगातार घूमने की कोशिश की जाती है, प्रत्येक घूमने पर वर्तमान समय प्राप्त किया जाता है, और फिर वर्तमान समय और समयबद्ध समय के बीच तुलना के आधार पर, यह तय किया जाता है कि क्या रोबोट को शुरू या बंद करने की आवश्यकता है। यदि यह ट्रिगर हो जाता है, तो रोबोट को शुरू करने या रोकने के लिए एपीआई (RestartRobot button, id) या एपीआई (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)
स्क्रीनशॉट
इस रणनीति द्वारा संचालित रोबोटः
इस रणनीति का पताःhttps://www.fmz.com/strategy/184600
इसके अलावा, एफएमजेड प्लेटफॉर्म पर आधारित एपीआई का उपयोग करके अपने स्वयं के क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म के लिए कोई समस्या नहीं है। इस टाइमर रोबोट का डिजाइन अपेक्षाकृत सरल है, केवल समय पर शुरू करने के लिए दिमाग नहीं है, समय पर बंद हो जाता है, और शुरू करने के लिए सफल या नहीं, जांच, असामान्य पुनः प्रयास, आदि तंत्र शामिल नहीं है, जो रुचि रखते हैं, कार्यक्षमता को बढ़ा सकते हैं और विस्तार कर सकते हैं। रणनीति केवल सीखने के लिए है।