Sebagai platform perdagangan kuantitatif yang kuat, fleksibel dan mudah digunakan untuk seluruh rangkaian, Platform Dagangan Kuantiti FMZ mempunyai halangan yang sangat rendah untuk digunakan, dan program robot mengambil sedikit sumber. Sebagai contoh, masa yang tidak dibuka menyumbang kepada sebahagian besar sepanjang hari ketika menjalankan program dan perdagangan kuantitatif niaga hadapan komoditi. Dengan cara ini, kami berharap bahawa robot hanya akan berjalan pada waktu pembukaan, dan bahawa ia hanya akan berjalan pada waktu pembukaan setiap hari untuk menjimatkan wang. Bukankah menarik? Untuk memenuhi keperluan ini, kita boleh menggunakan bahasa Python untuk menulis robot strategi yang berjalan di Platform Dagangan FMZ Quant, dan biarkan robot mengawal permulaan dan berhenti robot pada selang waktu yang tetap melalui antara muka API lanjutan Platform Dagangan FMZ Quant.
Malah, keseluruhan kod sangat mudah. contoh memanggil sambungan API antara muka Platform Dagangan Kuantum FMZ boleh digunakan secara langsung.
Alamat:https://www.fmz.com/api#simplecontoh
Gunakan fungsi dalam contoh secara langsung:def api (method, *args)
Antara muka yang perlu kita panggil juga sangat mudah. dua antara muka berikut digunakan (boleh didapati dalam dokumen FMZ)
Mulakan semulaRobot
Mulakan semula antara muka robot dan masukkan parameter ke dalam ID robot.
Penggunaan khususid
untuk memanggil:api ('RestartRobot', id)
StopRobot
Untuk menghentikan antara muka robot, parameter juga robotID
.
RobotID
:
Untuk memanggil FMZ Quant Trading Platform sambungan API, anda perlu menggunakanAPI KEY
daripada Platform Dagangan Kuantum FMZ.
Anda boleh menjana API KEY anda sendiri dalam pengurusan akaun.
Kita melaluiAPI KEY
sebagai parameter strategi.
Tangkapan skrin mendapatkan akaun Platform Dagangan Kuantum FMZAPI KEY
:
Selebihnya adalah menulis logik masa, yang juga sangat mudah.
["175708,14:55:33-15:10:33", ...]
Elipsis menunjukkan bahawa lebih banyak tetapan seperti"175708,14:55:33-15:10:33"
boleh ditetapkan.
Parameter masa adalah rentetan JSON, yang akan dianalisis ke dalam senarai dalam kod strategi. Setiap elemen dalam senarai adalah satu set tetapan permulaan / berhenti robot.
Iaitu:
"175708,14:55:33-15:10:33"
Mereka dipisahkan dengan koma.175708
adalah robot ID, dan bahagian selepas koma adalah masa permulaan / berhenti masa.
Dalam contoh di atas, robot dengan ID 175708 bermula pada 14:55:33 dan berhenti pada 15:10:33.
Kemudian, dalam strategi, robot akan terus berputar. Setiap putaran putaran pertama akan mendapatkan masa semasa, dan kemudian menilai sama ada untuk mencetuskan permulaan atau berhenti robot mengikut perbandingan antara masa semasa dan masa penyesuaian.
Jika dicetuskan, panggil api ('RestartRobot', id) atau api (
Kod strategi lengkap:
# -*- 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)
Tangkapan skrin:
Alamat strategi:https://www.fmz.com/strategy/184600
Sebagai contoh, FMZ Quant Trading Platform