पूरे नेटवर्क के लिए एक शक्तिशाली, लचीला और उपयोग करने में आसान मात्रात्मक ट्रेडिंग प्लेटफॉर्म के रूप में, एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म का उपयोग करने के लिए बहुत कम बाधाएं हैं, और रोबोट प्रोग्राम कम संसाधन लेता है। लेकिन हम अभी भी उम्मीद करते हैं कि रोबोट को चलाने की आवश्यकता होने पर शुरू कर सकता है और जब उसे चलाने की आवश्यकता नहीं होती है तो रोक सकता है। उदाहरण के लिए, कमोडिटी वायदा के कार्यक्रम और मात्रात्मक ट्रेडिंग के संचालन के दौरान पूरे दिन के अधिकांश भाग के लिए गैर-खोलने का समय होता है। इस तरह, हम उम्मीद करते हैं कि रोबोट केवल खुलने के समय पर चलेगा, और यह केवल पैसे बचाने के लिए हर दिन खुलने के समय पर चलेगा। क्या यह रोमांचक नहीं है? इस आवश्यकता को पूरा करने के लिए, हम एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर चलने वाले रणनीति रोबोट को लिखने के लिए पायथन भाषा का उपयोग कर सकते हैं, और रोबोट को एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म के विस्तारित एपीआई इंटरफ़ेस के माध्यम से नियमित अंतराल पर रोबोट की शुरुआत और रोक को नियंत्रित करने दें।
वास्तव में, पूरा कोड बहुत सरल है. एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म एक्सटेंशन एपीआई इंटरफ़ेस को कॉल करने का उदाहरण सीधे इस्तेमाल किया जा सकता है।
पता:https://www.fmz.com/api#simpleउदाहरण
उदाहरण में फ़ंक्शन का सीधे उपयोग करेंःdef api (method, *args)
इंटरफेस हम कॉल करने की जरूरत भी बहुत सरल है. निम्नलिखित दो इंटरफेस का उपयोग किया जाता है (एफएमजेड दस्तावेज़ में पाया जा सकता है)
पुनः आरंभ करेंरोबोट
रोबोट इंटरफेस को पुनरारंभ करें और रोबोट आईडी में पैरामीटर पास करें।
विशिष्ट उपयोगid
कॉल करने के लिएःapi ('RestartRobot', id)
रोकोरोबोट
रोबोट इंटरफ़ेस को रोकने के लिए, मापदंडों भी रोबोट हैंID
.
रोबोटID
:
एफएमजेड क्वांट ट्रेडिंग प्लेटफ़ॉर्म एक्सटेंशन एपीआई को कॉल करने के लिए, आपको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', 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)
स्क्रीनशॉटः
रणनीतिक पता:https://www.fmz.com/strategy/184600
उदाहरण के लिए, एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म