Sebagai platform dagangan kuantitatif yang kuat dan mudah digunakan, platform dagangan kuantitatif pencipta walaupun menggunakan ambang yang sangat rendah dan program robot mengambil sedikit sumber. Sebagai contoh, dalam program perdagangan berjangka komoditi dan kuantiti, masa tidak terbuka mengambil sebahagian besar hari. Jadi kita sangat berharap bahawa hanya robot yang beroperasi pada waktu buka, setiap hari hanya beroperasi pada waktu buka. Untuk keperluan ini, kita boleh menggunakan bahasa Python untuk menulis bot strategi yang berjalan di platform perdagangan kuantiti FMZ, dan membiarkan robot ini melalui Pencipta memperluas antara muka API untuk platform dagangan kuantitatif, mengawal permulaan dan penghentian bot pada masa yang sama.
Sebenarnya, kodnya sangat mudah dan boleh digunakan secara langsung dengan memanggil contoh pencipta untuk memperluas API platform perdagangan kuantitatif.
Alamat:https://www.fmz.com/api#简单的例子
Fungsi yang digunakan secara langsung dalam contoh:def api(method, *args)
Antara muka yang kita perlukan untuk memanggil juga sangat mudah, menggunakan dua antara muka berikut ((boleh dicari di dokumen FMZ)
Mulakan semulaRobot
Menghidupkan semula antara muka bot, parameter boleh dihantar ke ID bot.
Penggunaan khususid
Di sini, anda boleh menghubungi:api('RestartRobot', id)
StopRobot
Hentikan antara muka robot, parameter juga robotID
。
RobotID
Lihat, dapatkan, gambar skrin:
Panggilan Pencipta Platform Perdagangan Kuantitatif Peningkatan API yang diperlukan untuk menggunakan Pencipta Platform Perdagangan KuantitatifAPI KEY
Saya tidak tahu apa yang berlaku.
Anda boleh membuat akaun anda sendiri dalam pengurusan akaun anda.API KEY
Saya tidak tahu apa yang berlaku.
Kita akanAPI KEY
Perkhidmatan ini digunakan sebagai parameter untuk strategi.
Memperoleh akaun inventor dalam platform pertukaran kuantitatifAPI KEY
Gambar skrin:
Yang tinggal ialah menulis logik masa, yang juga sangat mudah, dan menetapkan parameter masa:
["175708,14:55:33-15:10:33", ...]
Perwakilan boleh menetapkan lebih banyak yang serupa."175708,14:55:33-15:10:33"
Peranti yang digunakan adalah:
Parameter waktu adalah satu senar JSON yang akan diselesaikan dalam kod dasar sebagai senarai. Setiap elemen dalam senarai adalah satu set bot memulakan / menghentikan tetapan.
Maksudnya:
"175708,14:55:33-15:10:33"
Di mana bahagian sebelum koma ditempatkan sebagai titik koma.175708
Untuk ID bot, bahagian di belakang koma adalah masa permulaan / berhenti.
Contoh di atas adalah bot ID: 175708, bermula pada pukul 14:55:33 dan berhenti pada pukul 15:10:33.
Kemudian, strategi ini berputar-putar, mencari masa semasa setiap kali, dan kemudian menilai sama ada perlu mencetuskan permulaan atau penghentian bot berdasarkan perbandingan masa semasa dan masa penentuan masa. Jika mencetuskan, panggil api (RestartRobot button, id) atau api (StopRobot button, id) untuk memulakan atau menghentikan bot.
Kode strategi penuh:
# -*- 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)
Gambar gambar
Robot yang digunakan oleh strategi ini:
Alamat strategi:https://www.fmz.com/strategy/184600
Sebagai percubaan, API pelanjutan bagi platform dagangan kuantitatif juga sangat kuat, dan tidak ada masalah untuk menggunakan API pelanjutan ini untuk platform dagangan kuantitatif sendiri berdasarkan platform FMZ. Reka bentuk robot pemasa ini agak mudah, hanya tidak mempunyai otak untuk memulakan masa, berhenti pada masa, dan tidak memasukkan mekanisme permulaan sama ada berjaya, pemeriksaan, cubaan semula yang luar biasa, dan sebagainya, yang berminat dapat menambah fungsi, memperluaskan. Strategi untuk rujukan pembelajaran sahaja