Sebagai platform perdagangan kuantitatif yang kuat, fleksibel dan mudah digunakan untuk seluruh jaringan, FMZ Quant Trading Platform memiliki hambatan yang sangat rendah untuk digunakan, dan program robot memakan sedikit sumber daya. Sebagai contoh, waktu non-pembukaan menyumbang sebagian besar dari seluruh hari ketika melakukan program dan perdagangan kuantitatif komoditas berjangka. Dengan cara ini, kami berharap bahwa robot hanya akan berjalan pada waktu pembukaan, dan bahwa ia hanya akan berjalan pada waktu pembukaan setiap hari untuk menghemat uang. Bukankah itu menarik? Untuk memenuhi persyaratan ini, kita dapat menggunakan bahasa Python untuk menulis robot strategi yang berjalan di FMZ Quant Trading Platform, dan biarkan robot mengontrol awal dan berhenti robot pada interval reguler melalui antarmuka API diperpanjang dari FMZ Quant Trading Platform.
Pada kenyataannya, seluruh kode sangat sederhana. Contoh memanggil antarmuka API ekstensi FMZ Quant Trading Platform dapat digunakan secara langsung.
Alamatnya:https://www.fmz.com/api#simplecontoh
Gunakan fungsi dalam contoh secara langsung:def api (method, *args)
Antarmuka yang kita butuhkan untuk memanggil juga sangat sederhana. dua antarmuka berikut digunakan (dapat ditemukan di dokumen FMZ)
RestartRobot
Mulai kembali antarmuka robot dan masukkan parameter ke robot ID.
Penggunaan khususid
untuk memanggil:api ('RestartRobot', id)
StopRobot
Untuk menghentikan antarmuka robot, parameter juga robotID
Aku tidak tahu.
RobotID
:
Untuk memanggil FMZ Quant Trading Platform ekstensi API, Anda perlu menggunakanAPI KEY
dari platform perdagangan kuantum FMZ.
Anda dapat menghasilkan API KEY Anda sendiri dalam manajemen akun.
Kita melewatiAPI KEY
sebagai parameter strategi.
Screenshot dari mendapatkan akun FMZ Quant Trading PlatformAPI KEY
:
Sisanya adalah menulis logika waktu, yang juga sangat sederhana.
["175708,14:55:33-15:10:33", ...]
Elipsis menunjukkan bahwa lebih banyak pengaturan seperti"175708,14:55:33-15:10:33"
dapat diatur.
Parameter waktu adalah string JSON, yang akan dianalisis ke dalam daftar dalam kode strategi.
Artinya:
"175708,14:55:33-15:10:33"
Mereka dipisahkan oleh koma. Bagian sebelum koma175708
adalah robot ID, dan bagian setelah koma adalah waktu awal / berhenti waktu.
Dalam contoh di atas, robot dengan ID 175708 dimulai pada pukul 14:55:33 dan berhenti pada pukul 15:10:33.
Kemudian, dalam strategi, robot akan terus berputar. Setiap putaran putaran pertama akan mendapatkan waktu saat ini, dan kemudian menilai apakah akan memicu memulai atau menghentikan robot sesuai dengan perbandingan antara waktu saat ini dan waktu penyetelan.
Jika dipicu, hubungi api ('RestartRobot', id) atau api (
Kode 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)
Potongan layar:
Alamat strategi:https://www.fmz.com/strategy/184600
Sebagai contoh, FMZ Quant Trading Platform