Sebagai platform perdagangan kuantitatif yang kuat, fleksibel dan mudah digunakan di seluruh dunia, inventor platform perdagangan kuantitatif meskipun penggunaan ambang batasnya sangat rendah dan program robot memakan sedikit sumber daya. Sebagai contoh, ketika melakukan program perdagangan berjangka komoditas, waktu buka tidak menempati sebagian besar hari. Jadi kita sangat berharap robot hanya beroperasi pada waktu buka, setiap hari hanya beroperasi pada waktu buka. Untuk kebutuhan ini, kita dapat menggunakan bahasa Python untuk menulis strategi robot yang berjalan di platform perdagangan kuantitatif FMZ, sehingga robot ini dapat melewati Penemu memperluas antarmuka API untuk platform perdagangan kuantitatif, yang secara otomatis mengontrol start dan stop robot.
Pada kenyataannya, seluruh kode sangat sederhana, dan contoh yang disebut inventor kuantitatif platform perdagangan untuk memperluas antarmuka API dapat digunakan langsung.
Alamat:https://www.fmz.com/api#简单的例子
Fungsi yang digunakan secara langsung dalam contoh:def api(method, *args)
Interface yang kita butuhkan untuk memanggilnya juga sangat sederhana, dengan dua interface berikut (bisa dicek di dokumen FMZ)
Perangkat lunak
Setelah mengaktifkan kembali antarmuka robot, parameter dapat ditransfer ke ID robot.
Penggunaan khususid
"Saya tidak tahu apa yang akan terjadi", katanya.api('RestartRobot', id)
StopRobot
Hentikan antarmuka robot, parameternya juga robotID
。
RobotID
Lihat, dapatkan, gambar:
Aplikasi ini dapat digunakan untuk mengkoneksikan informasi yang dibutuhkan oleh pengguna.API KEY
Saya tidak tahu.
Anda dapat membuat akun Anda sendiri dalam manajemen akun.API KEY
Saya tidak tahu.
Kita akanAPI KEY
Ini adalah salah satu dari beberapa strategi yang digunakan oleh Google.
Mengakses akun inventor di platform perdagangan kuantitatifAPI KEY
Gambar:
Yang tersisa adalah menulis logika waktu, yang juga sangat sederhana, dan mengatur parameter waktu:
["175708,14:55:33-15:10:33", ...]
Anda dapat mengatur lebih banyak hal yang sama."175708,14:55:33-15:10:33"
Perangkat lunak ini memiliki beberapa fitur yang berbeda.
Parameter waktu adalah string JSON yang akan diselesaikan dalam kode kebijakan, diselesaikan sebagai daftar. Setiap elemen dalam daftar adalah seperangkat pengaturan start/stop robot.
Ini adalah:
"175708,14:55:33-15:10:33"
Bagian sebelum koma ditulis dengan titik koma.175708
Untuk robot ID, bagian di belakang koma adalah start time/stop time.
Contoh di atas adalah robot dengan ID: 175708, dimulai pada pukul 14:55:33 dan berhenti pada pukul 15:10:33.
Kemudian strategi berputar-putar, dengan setiap putaran mencari waktu saat ini, dan kemudian memutuskan apakah perlu memicu memulai atau menghentikan robot berdasarkan perbandingan waktu saat ini dan waktu penjadwalan. Jika dipicu, panggil api (RestartRobot button, id) atau api (StopRobot button, id) untuk memulai atau menghentikan robot.
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("字符串配置错误:分隔符号,")
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
Robot yang dioperasikan oleh strategi ini:
Alamat kebijakan:https://www.fmz.com/strategy/184600
Sebagai gantinya, penemu API ekstensi untuk platform perdagangan kuantitatif juga sangat kuat, dan tidak ada masalah dengan API ekstensi ini untuk platform perdagangan kuantitatif mereka sendiri berdasarkan platform FMZ. Desain robot pencetak waktu ini relatif sederhana, hanya tidak memiliki otak untuk memulai waktu, untuk berhenti waktu, dan tidak termasuk memulai apakah berhasil, pemeriksaan, uji ulang yang tidak normal, dan lain-lain mekanisme, yang tertarik dapat menambahkan fungsi, memperluas. Strategi hanya untuk referensi belajar