FMZ Quant telah membuka antarmuka API platform yang diperluas untuk mendukung panggilan programatis ke berbagai fungsi Platform Perdagangan FMZ Quant.
Platform Perdagangan Kuantum FMZ mendukung manajemen izin dari
diperluas antarmuka API, dan izin dariAPI KEY
dapat diatur. Pada API KEY
.
Anda dapat mengedit kotak input API KEY
, dan masukkan*
simbol untuk memungkinkan semuaAntarmuka API yang diperluasjika Anda ingin menentukan izin antarmuka tertentu, Anda perlu memasukkan nama fungsi API yang ditingkatkan. gunakan koma untuk memisahkan, misalnya:GetRobotDetail,DeleteRobot
Ini memberikan ini.API KEY
izin untuk memanggilDapatkan informasi terperinci perdagangan langsunginterface danHapus perdagangan langsung interface.
PeraturanAPI KEY
halaman manajemen juga memungkinkan Anda untukmengubah,
tidak aktif, hapusYang diciptakanAPI KEY
.
Contoh struktur yang dikembalikan oleh antarmuka API yang diperluas adalah sebagai berikut:
"code":0,
"data":{
// ...
}
}
Peraturancode
field is: Kode status hasil panggilan yang dikembalikan ketika antarmuka API diperpanjang dipanggil.
Deskripsi | Kode |
---|---|
Eksekusi yang sukses | 0 |
KEY API yang salah | 1 |
Tanda tangan yang salah | 2 |
Kesalahan nonce | 3 |
Metode yang salah | 4 |
Parameter yang salah | 5 |
Kesalahan internal yang tidak diketahui | 6 |
PeraturanGetRobotList
antarmukaGetRobotDetail
antarmuka
danGetRobotLogs
data kembali antarmuka distatus
bidang untuk: kode status perdagangan langsung.
Status | Kode |
---|---|
Tidak aktif | 0 |
Dalam operasi | 1 |
Berhenti | 2 |
Ditandatangani keluar | 3 |
Berhenti | 4 |
Strategi ini memiliki kesalahan. | 5 |
Status | Kode |
---|---|
Strategi telah berakhir, dan silakan hubungi penulis untuk membelinya lagi | -1 |
Tidak ada docker yang ditemukan | -2 |
Kesalahan kompilasi strategi | -3 |
Perdagangan langsung sudah berjalan | -4 |
Saldo yang tidak cukup | -5 |
Jumlah strategi bersamaan melebihi batas | -6 |
Ada dua metode verifikasi ketika memanggil antarmuka API diperpanjang, mendukungtoken
verifikasi dan verifikasi langsung.
Penggunaanmd5
metode enkripsi untuk memverifikasi, contohPython
, Golang
panggilan bahasa:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import json
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
try:
import md5
import urllib2
from urllib import urlencode
except:
import hashlib as md5
import urllib.request as urllib2
from urllib.parse import urlencode
accessKey = '' # your API KEY
secretKey = ''
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()
# Note: for the timeout problem of "urllib2.urlopen" function, you can set the timeout time; for example, urllib2.urlopen ('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8'), timeout = 10), that is, set timeout for 10 seconds
return json.loads(urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))
# Return the docker list
print(api('GetNodeList'))
# Return the exchange list
print(api('GetPlatformList'))
# GetRobotList(offset, length, robotStatus, label), passing "-1" means obtaining all
print(api('GetRobotList', 0, 5, -1, 'member2'))
# CommandRobot(robotId, cmd) sends command to live trading
print(api('CommandRobot', 123, 'ok'))
# StopRobot(robotId) returns the live trading status code
print(api('StopRobot', 123))
# RestartRobot(robotId) returns the live trading status code
print(api('RestartRobot', 123))
# GetRobotDetail(robotId) returns detailed live trading information
print(api('GetRobotDetail', 123))
package main
import (
"fmt"
"time"
"encoding/json"
"crypto/md5"
"encoding/hex"
"net/http"
"io/ioutil"
"strconv"
"net/url"
)
// Fill in your own FMZ platform api key
var apiKey string = ""
// Fill in your own FMZ platform secret key
var secretKey string = ""
var baseApi string = "https://www.fmz.com/api/v1"
func api(method string, args ... interface{}) (ret interface{}) {
// Process args
jsonStr, err := json.Marshal(args)
if err != nil {
panic(err)
}
params := map[string]string{
"version" : "1.0",
"access_key" : apiKey,
"method" : method,
"args" : string(jsonStr),
"nonce" : strconv.FormatInt(time.Now().UnixNano() / 1e6, 10),
}
data := fmt.Sprintf("%s|%s|%s|%v|%s", params["version"], params["method"], params["args"], params["nonce"], secretKey)
h := md5.New()
h.Write([]byte(data))
sign := h.Sum(nil)
params["sign"] = hex.EncodeToString(sign)
// http request
client := &http.Client{}
// request
urlValue := url.Values{}
for k, v := range params {
urlValue.Add(k, v)
}
urlStr := urlValue.Encode()
request, err := http.NewRequest("GET", baseApi + "?" + urlStr, nil)
if err != nil {
panic(err)
}
resp, err := client.Do(request)
if err != nil {
panic(err)
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
ret = string(b)
return
}
func main() {
settings := map[string]interface{}{
"name": "hedge test",
"strategy": 104150,
// K-line period parameter, "60" means 60 seconds
"period": 60,
"node" : 73938,
"appid": "member2",
"exchanges": []interface{}{
map[string]interface{}{
"eid": "Exchange",
"label" : "test_bjex",
"pair": "BTC_USDT",
"meta" : map[string]interface{}{
// Fill in the access key
"AccessKey": "",
// Fill in the secret key
"SecretKey": "",
"Front" : "http://127.0.0.1:6666/exchange",
},
},
},
}
method := "RestartRobot"
fmt.Println("Call interface:", method)
ret := api(method, 124577, settings)
fmt.Println("main ret:", ret)
}
Ini mendukung verifikasi tanpatoken
(lalu)secret_key
langsung), Anda dapat menghasilkan URL yang dapat diakses secara langsung.
contoh, URL yang langsung memberikan instruksi interaktif untuk
perdagangan langsung, yang dapat digunakan untukTradingView
atauWebHook
untuk kasus lain.CommandRobot(RobotId, Cmd)
fungsi, parameternonce
tidak memerlukan verifikasi, dan frekuensi akses dan
waktu kunjungan antarmuka tidak terbatas.
Sebagai contoh,AccessKey
dari ekstensi yang dibuatAPI KEY
adalah:xxx
danSecretKey
adalah:yyy
. Lihat tautan berikut untuk mengirim pesan perintah interaktif ke
perdagangan langsung dengan ID perdagangan langsung186515
, pesan
content adalah string:"ok12345"
.
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=[186515,"ok12345"]
Dalam keadaan bahwa verifikasi langsung didukung,
hanyaCommandRobot
antarmuka didukung untuk mendapatkanBody
data dalam permintaan.WebHook URL
dariTradingView
:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=[186515,+""]
Perhatikan pengaturan sesuai dengan format berikut:args=[130350,+""]
, di mana130350
adalah perdagangan langsungID
dari FMZ Quant Trading Platform.
Setel di kotak pesan dariTrading View
(yang diminta
Format JSON
{"close": {{close}}, "name": "aaa"}
Perdagangan langsung denganID
dari186515
dapat menerima string perintah interaktif:{"close": 39773.75, "name": "aaa"}
.
Format teks:
BTCUSDTPERP Crossing 39700.00 close: {{close}}
Perdagangan langsung denganID
dari186515
dapat menerima string perintah interaktif:BTCUSDTPERP Crossing 39700.00 close: 39739.4
.
Contoh dariPython
& Golang
panggilan bahasa:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
try:
import urllib2
except:
import urllib.request as urllib2
accessKey = 'your accessKey'
secretKey = 'your secretKey'
def api(method, *args):
return json.loads(urllib2.urlopen(('https://www.fmz.com/api/v1?access_key=%s&secret_key=%s&method=%s&args=%s' % (accessKey, secretKey, method, json.dumps(list(args)))).replace(' ', '')).read().decode('utf-8'))
# If APIKEY does not have the interface permission, the call to
print(api('RestartRobot', 186515)) will fail, and the returned data
is: {'code': 4, 'data': None}
# print(api('RestartRobot', 186515))
# Printed Id: the live trading details of 186515
print(api('GetRobotDetail', 186515))
package main
import (
"fmt"
"encoding/json"
"net/http"
"io/ioutil"
"net/url"
)
// Fill in your own FMZ platform api key
var apiKey string = "your access_key"
// Fill in your own FMZ platform secret key
var secretKey string = "your secret_key"
var baseApi string = "https://www.fmz.com/api/v1"
func api(method string, args ... interface{}) (ret interface{}) {
jsonStr, err := json.Marshal(args)
if err != nil {
panic(err)
}
params := map[string]string{
"access_key" : apiKey,
"secret_key" : secretKey,
"method" : method,
"args" : string(jsonStr),
}
// http request
client := &http.Client{}
// request
urlValue := url.Values{}
for k, v := range params {
urlValue.Add(k, v)
}
urlStr := urlValue.Encode()
request, err := http.NewRequest("GET", baseApi + "?" + urlStr, nil)
if err != nil {
panic(err)
}
resp, err := client.Do(request)
if err != nil {
panic(err)
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
ret = string(b)
return
}
func main() {
method := "GetRobotDetail"
fmt.Println("Call interface:", method)
ret := api(method, 186515)
fmt.Println("main ret:", ret)
}
Gunakan API diperpanjang pada FMZ Quant untuk mewujudkan
Antarmuka API diperluas dari FMZ Quant Trading Platform
Tambahkan parameter kueri (dipisahkan dengan?
) langsung setelah permintaanhttps://www.fmz.com/api/v1
Berikut adalah parameter permintaan yang dinyatakan menggunakanPython
:
{
"version" : "1.0",
"access_key": "xxx",
"method" : "GetNodeList",
"args" : [],
"nonce" : 1516292399361,
"sign" : "085b63456c93hfb243a757366600f9c2"
}
Bidang | Panduan |
---|---|
versi | Nomor versi. |
akses_key | AccessKey, aplikasi untuk itu di halaman manajemen akun. |
metode | Metode panggilan tertentu. |
args | Daftar parameter dari metode tertentu yang dipanggil. |
nonce | Stempel waktu, dalam milidetik, memungkinkan kesalahan 1 jam dari stempel waktu standar. Nonce harus lebih besar dari nilai nonce akses terakhir. |
tanda | Signature. |
Setiap nama parameter dipisahkan oleh karakter&
, dan nama parameter dan nilai yang terkait dengan simbol=
. URL permintaan lengkap (mengambilmethod=GetNodeList
sebagai contoh):
https://www.fmz.com/api/v1?access_key=xxx&nonce=1516292399361&args=%5B%5D&sign=085b63456c93hfb243a757366600f9c2&version=1.0&method=GetNodeList
Perhatikan bahwa tidak adasecret_key
parameter di antara parameter permintaan.
Metode tanda tangan
Peraturansign
parameter dalam parameter permintaan dienkripsi sebagai berikut, sesuai dengan format:
version + "|" + method + "|" + args + "|" + nonce + "|" + secretKey
Setelah mengikat string, gunakanMD5
algoritma enkripsi untuk mengenkripsi string dan mengubahnya menjadi nilai string data heksadesimal, disebut nilai parametersign
Untuk bagian tanda tangan, lihatPython
antarmuka API ekstensi kodeCara Pemeriksaan :
# Parameter
d = {
'version': '1.0',
'access_key': accessKey,
'method': method,
'args': json.dumps(list(args)),
'nonce': int(time.time() * 1000),
}
# Calculate "sign" signature
d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
PeraturanGetNodeList
metode digunakan untuk mendapatkan daftar pelabuhan
di akun Platform Perdagangan Kuantum FMZ yang sesuai denganAPI KEY
dalam permintaan.
{
"code": 0,
"data": {
"result": {
"all": 1,
"nodes": [{
"build": "3.7",
"city": "...",
"created": "2024-11-08 09:21:08",
"date": "2024-11-08 16:37:16",
"forward": "...",
"guid": "...",
"host": "node.fmz.com:9902",
"id": 123,
"ip": "...",
"is_owner": true,
"loaded": 0,
"name": "MacBook-Pro-2.local",
"online": true,
"os": "darwin/amd64",
"peer": "...",
"public": 0,
"region": "...",
"tunnel": false,
"version": "...",
"wd": 0
}]
},
"error": null
}
}
Deskripsi bidang nilai yang dikembalikan (arti harfiahnya jelas dan tidak akan diulang):
ecs_
danunit_
, yang mencatat informasi yang relevan dari server docker penyebaran satu klik (nama operator, konfigurasi, status, dll), siklus penagihan, harga dan informasi lainnya, yang tidak akan diulang di sini.Tidak ada parameter
GetRobotGroupList()
mengembalikan daftar pengelompokan perdagangan langsung
dari akun FMZ Quant Trading Platform yang sesuai denganAPI KEY
dalam permintaan.
{
"code": 0,
"data": {
"result": {
"items": [{
"id": 3417,
"name": "Test"
}, {
"id": 3608,
"name": "Live trading demo"
}]
},
"error": null
}
}
items
field hanya mencatat kelompok yang baru dibuat.items
.Tidak ada parameter
GetPlatformList()
mengembalikan daftar bursa yang memiliki
telah ditambahkan oleh akun Platform Perdagangan Kuantum FMZ yang sesuai
untukAPI KEY
dalam permintaan.
{
"code": 0,
"data": {
"result": {
"all": 2,
"platforms": [{
"category": "加密货币||Crypto",
"date": "2023-12-07 13:44:52",
"eid": "Binance",
"id": 123,
"label": "Binance",
"logo": "...",
"name": "币安现货|Binance",
"stocks": ["BTC_USDT", "LTC_USDT", "ETH_USDT", "ETC_USDT", "BTC_TUSD", "ETH_TUSD", "BNB_TUSD"],
"website": "..."
}, {
"category": "通用协议|Custom Protocol",
"date": "2020-11-09 11:23:48",
"eid": "Exchange",
"id": 123,
"label": "XX Exchange REST Protocol",
"logo": "...",
"name": "通用协议|Custom Protocol",
"stocks": ["BTC_USDT", "ETH_USDT"],
"website": ""
}]
},
"error": null
}
}
Tidak ada parameter
PeraturanGetRobotList
metode digunakan untuk mendapatkan daftar perdagangan langsung di bawah akun FMZ Quant Trading Platform yang sesuai denganAPI KEY
dalam permintaan.
{
"code": 0,
"data": {
"result": {
"all": 53,
"robots": [{
"date": "2017-12-25 09:29:27",
"end_time": "2017-12-28 17:44:21",
"id": 66054,
// If the value is 1, the live trading is a virtual platform live trading
"is_sandbox": 1,
"name": "C++ test strategy",
"node_guid": "705d9aaaaaaaa93b49baaaaa787581cb087",
"profit": 0,
"public": 0,
"refresh": 151345645647000,
"start_time": "2017-12-28 17:44:15",
"status": 3,
"strategy_id": 65365,
"strategy_isowner": true,
"strategy_name": "C++ Version Docker API Test Strategy(cryptocurrency futures and spot markets)",
"wd": 0
}, ...
]
},
"error": null
}
}
Pengaturan penghapusan permintaan panggilan.
penghapusan
palsu
nomor
Pengaturan panjang pertanyaan paging.
panjang
palsu
nomor
Tentukan status perdagangan langsung yang akan ditanyakan, lihat antarmuka API yang diperluasKode Perdagangan Langsung, lulus-1
untuk mendapatkan semua perdagangan hidup.
robotStatus
palsu
nomor
Tentukan label khusus dari perdagangan langsung yang ingin Anda kueri, dan Anda dapat menyaring semua perdagangan langsung dari label ini.
label
palsu
string
AmbilPython
Languageprint(api('GetRobotList', 'member2'))
: cetak informasi dari semua perdagangan langsung dengan label khususmember2
. print(api('GetRobotList', 0, 5, -1, 'member2'))
: halaman dari 0 sampai 5 dan daftar hingga 5 robot berlabel denganmember2
.
PeraturanCommandRobot
metode ini digunakan untuk mengirim perintah interaksi ke perdagangan langsung di bawah akun FMZ Quant Trading Platform yang sesuai denganAPI KEY
ID perdagangan langsung yang menerima perintah interaksi adalah ID perdagangan langsung yang ditentukan olehrobotId
parameter, dan perintah interaksi dikembalikan olehGetCommand()
fungsi yang dipanggil dalam strategi untuk menangkapnya.
{
// The API request was successfully executed
"code": 0,
"data": {
// However, sending a command to live trading that is not running returns failure
"result": false,
"error": null
}
}
ParameterrobotId
digunakan untuk menentukan ID dari perdagangan hidup yang menerima perintah interaktif.GetRobotList
metode untuk mendapatkan informasi perdagangan langsung di bawah akun, yang berisi ID perdagangan langsung.
robotId
benar
nomor
Parametercmd
adalah perintah interaktif yang dikirim ke bot; perintah akan ditangkap oleh fungsiGetCommand()
, yang memicu logika interaktif dalam strategi. Untuk implementasi spesifik logika interaksi dalam kode strategi, silakan lihatGetCommand()
Fungsi dalamFMZ Quant Trading Platform API ManualAku tidak tahu.
cmd
benar
string
StopRobot(RobotId)
digunakan untuk memintaAPI KEY
ID perdagangan langsung untuk berhenti berjalan adalah ID perdagangan langsung yang ditentukan olehrobotId
parameter.
{
"code": 0,
"data": {
// 2 means stopping
"result": 2,
"error": null
}
}
ParameterrobotId
digunakan untuk menentukan ID perdagangan langsung yang akan dihentikan.GetRobotList
metode untuk mendapatkan informasi perdagangan langsung di bawah akun, yang berisi ID perdagangan langsung.
robotId
benar
nomor
PeraturanRestartRobot
metode ini digunakan untuk memulai kembali perdagangan langsung di bawahAPI KEY
ID perdagangan langsung yang dimulainya kembali adalah ID perdagangan langsung yang ditentukan olehrobotId
parameter.
{
"code": 0,
"data": {
// 1 means running
"result": 1,
"error": null
}
}
PeraturanrobotId
parameter digunakan untuk menentukan ID dari perdagangan hidup yang akan dimulai kembali.GetRobotList
metode untuk mendapatkan informasi perdagangan langsung di bawah akun, yang berisi ID perdagangan langsung.
robotId
benar
nomor
Parameter konfigurasi perdagangan langsung, parametersettings
formatnya adalah sebagai berikut:
{
"name": "hedge test",
// Strategy parameter
"args": [["Interval", 500]],
// Strategy ID, which can be obtained with "GetStrategyList" method
"strategy": 25189,
// K-line period parameter, "60" means 60 seconds
"period": 60,
// Specify on which docker to run; if the attribute is not written, it will be automatically assigned to run
"node" : 51924,
// Custom field
"appid": "member2",
"exchanges": [
// ZB; "pid" can be obtained by "GetPlatformList" method
{"pid": 15445, "pair": "ETH_BTC"},
// OKX; 2 exchange objects are configured
{"pid": 13802, "pair": "BCH_BTC"},
// In addition to the platforms ("pid" identification) configured by the FMZ dashboard, you can also set exchange configuration information that has not been configured to operate live trading
{"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}},
{"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}}
]
}
Ketika Anda menggunakan informasi sensitif, seperti platformAPI KEY
, termasuk"meta":{"AccessKey":"xxx","SecretKey":"yyy"}
dalam konfigurasieid
, Anda harus tahu bahwa FMZ tidak menyimpan data. data akan dikirim langsung ke program docker, sehingga informasi ini harus dikonfigurasi setiap kali live trading dibuat atau di-restart.
Untuk memulai kembali perdagangan hidup yang menggunakan plugin untuk mendukung pertukaran, ketika mengkonfigurasisettings
parameter, Anda harus membuat pengaturan berikut untukexchanges
atribut:
{"eid": "Exchange", "label" : "testXXX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "1234", "Front" : "http://127.0.0.1:6666/XXX"}}
label
Atribut ini adalah untuk mengatur label untuk objek pertukaran diakses olehprotokol umum, yang dapat diperoleh denganexchange.GetLabel()
fungsi dalam strategi.
pengaturan palsu Objek JSON
Jika perdagangan langsung dibuat oleh API yang diperluas, API yang diperluasRestartRobot (RobotId, Settings)
harus digunakan untuk memulai kembali, dansettings
parameter harus dilewatkan. Perdagangan langsung yang dibuat di halaman platform dapat di-restart melalui API yang diperluas atau dengan mengklik tombol di halaman. Anda dapat melewati atau tidak melewatisettings
Jika Anda hanya melewatiRobotId
parameter, memulai perdagangan langsung sesuai dengan pengaturan perdagangan langsung saat ini.
PeraturanGetRobotDetail
metode ini digunakan untuk mendapatkan rincian perdagangan langsung di bawah akun FMZ Quant Trading Platform yang sesuai denganAPI KEY
ID perdagangan langsung yang akan diambil adalah ID perdagangan langsung yang ditentukan olehrobotId
parameter.
{
"code": 0,
"data": {
"result": {
"robot": {
// Next payment time, namely the effective cut-off time after the current payment
"charge_time": 1561992608,
// Elapsed Time
"charged": 3600,
// Amount consumed (0.125 CNY = 12500000 / 1e8)
"consumed": 12500000,
"date": "2019-07-01 21:50:08",
"debug": "{\"Nano\":1561989722431145193,\"Stderr\":\"\",\"Stdout\":\"\"}",
// Stop time
"end_time": "2019-07-01 22:02:02",
// The docker ID assigned when live trading is running; if it is automatic, the value is -1
"fixed_id": 85960,
"id": 150288,
"is_deleted": 0,
// Whether it has the permission to manage live trading
"is_manager": true,
// Whether it is a simulation trading
"is_sandbox": 0,
// Live trading name
"name": "Spread monitoring2",
// Docker ID
"node_id": 85960,
// The exchange objects configured by live trading
"pexchanges": {
// 14703 is pid, and "GateIO" is exchange name
"14703": "GateIO",
"15445": "ZB",
"42960": "OKEX",
"44314": "Huobi"
},
// label information of the exchange object configured by live trading
"plabels": {
"14703": "Gate.IO (old name: BTER)",
"15445": "ZB",
"42960": "OKEX spot V3 test",
"44314": "Huobi - newest test"
},
"profit": 0,
// Whether to show public
"public": 0,
// Recent active time
"refresh": 1561989724000,
"robot_args": "[[\"TickInterval\",500],[\"StrOnePair\",\"spot:Huobi:spot;spot:OKEX:spot;false;60;5;0;0\"],[\"StrTwoPair\",\"spot:ZB:spot;spot:GateIO:spot;false;60;5;0;0\"],[\"StrThreePair\",\"null\"],[\"StrFourPair\",\"null\"],[\"StrSixPair\",\"null\"],[\"StrFivePair\",\"null\"],[\"ResetChart\",false]]",
"start_time": "2019-07-01 22:00:54",
// Live trading status
"status": 4,
"strategy_args": "[[\"TickInterval\",\"Detection frequency (ms)\",\"This is millisecond. Don't set it too small.\",500],[\"StrOnePair\",\"Combination1\",\"Spread Combination\",\"spot:Huobi:spot;spot:OKCoin:spot;false;60;5;0;0\"],[\"StrTwoPair\",\"Combination2\",\"Spread Combination\",\"future:Futures_OKCoin:this_week;spot:OKCoin:spot;false;60;5;0;0\"],[\"StrThreePair\",\"Combination3\",\"Spread Combination\",\"future:Futures_OKCoin:this_week;future:Futures_OKCoin:quarter;true;60;5;0;0\"],[\"StrFourPair\",\"Combination4\",\"Spread Combination\",\"null\"],[\"StrSixPair\",\"Combination6\",\"Combination\",\"null\"],[\"StrFivePair\",\"Combination5\",\"Combination\",\"null\"],[\"ResetChart\",\"whether to clear the previous chart\",\"clear the previous chart\",false]]",
// Configured exchange objects, set trading pair information
"strategy_exchange_pairs": "[60,[44314,42960,15445,14703],[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]]",
// Strategy ID
"strategy_id": 21337,
// Strategy's last modification time
"strategy_last_modified": "2018-11-29 12:07:58",
// Strategy name
"strategy_name": "Digital currency spread monitoring and analysis",
"summary": "Polling time consuming: 500ms\n`[{\"type\":\"table\",\"title\":\"pair basic data\",\"cols\":[\"ID\",\"NameA - NameB\",\"SymbolA - SymbolB\",\"UpdCycle\",\"isUSD\",\"Collect\"],\"rows\":[[\"0 \",\"Huobi/OKEX\",\"spot/spot\",60,false,\"612ms\"],[\"1 \",\"ZB/GateIO\",\"spot/spot\",60,false,\"501ms\"]]},{\"type\":\"table\",\"title\":\"pair ticker data\",\"cols\":[\"ID\",\"NameA - NameB\",\"SymbolA - SymbolB\",\"A_Bids1\",\"B_Asks1\",\"Plus\",\"A_Asks1\",\"B_Bids1\",\"Minus\"],\"rows\":[[\"0 \",\"Huobi/OKEX\",\"spot/spot\",10518.02,10525.1,-7.08,10520,10523,-3],[\"1 \",\"ZB/GateIO\",\"spot/spot\",285.68,286,-0.32,285.8,285.85,-0.05]]},{\"type\":\"table\",\"title\":\"pair statistical data\",\"cols\":[\"ID\",\"NameA - NameB\",\"SymbolA - SymbolB\",\"Maximum spread\",\"Minimum spread\",\"Mean positive premium\",\"Mean negative premium\"],\"rows\":[[\"0 \",\"Huobi/OKEX\",\"spot/spot\",0,-3,0,-1.47],[\"1 \",\"ZB/GateIO\",\"spot/spot\",0.03,-0.05,0.03,-0.05]]}]`\n",
// Whether to enable offline alert
"wd": 0
}
},
"error": null
}
}
PeraturanrobotId
parameter digunakan untuk menentukan ID dari perdagangan langsung yang rincian harus diperoleh.GetRobotList
metode untuk mendapatkan informasi tentang perdagangan langsung di bawah akun, yang berisi ID perdagangan langsung.
robotId
benar
nomor
Peraturansummary
atribut dalam data yang dikembalikan (informasi pada bilah status bot; dikemas dalam cache selama 10 detik; bukan data terbaru) saat ini memiliki batas jumlah data (data dikemas dalam cache).
Batas jumlah data adalah 200KB, dan data berlebih akan dipotong. Jika Anda membutuhkan lebih banyak data informasi bilah status, Anda dapat menggunakanGetRobotLogs
antarmuka untuk mendapatkan (ketikaGetRobotLogs
mendapatkan informasi dari status bar, bidangsummary
adalah data terbaru).
Deskripsi atribut daristrategy_exchange_pairs
, contoh data berikut:
[60,[44314,42960,15445,14703],[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]]
Data pertama60
mewakili periode K-line default yang ditetapkan oleh perdagangan langsung adalah 1 menit, yaitu 60 detik.[44314,42960,15445,14703]
adalah objek pertukaranpid
dikonfigurasi untuk perdagangan langsung (sesuai dengan urutan penambahan).[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]
adalah pasangan perdagangan yang ditetapkan untuk objek pertukaran yang dikonfigurasi dengan perdagangan langsung (dalam urutan penjumlahan dan dalam korespondensi satu-ke-satu denganpid
).
PeraturanGetAccount
metode digunakan untuk memperoleh informasi akun yang sesuai denganAPI KEY
dalam permintaan akun Platform Perdagangan Quant FMZ.
{
"code": 0,
"data": {
"result": {
"username": "littlelittledream",
"level": 0,
"consumed": 3235500000,
"invitation_code": "1545967",
"points": 25,
// The value here, due to precision control, is expressed in integer. To convert it to actual value, you need to divide it by 1e8 (i.e. 10 to the 8th power), and the actual result here is: 65.421
"balance": 6542100000
},
"error": None
}
}
PeraturanGetExchangeList
metode ini digunakan untuk memperoleh daftar bursa dan informasi konfigurasi yang diperlukan yang didukung oleh FMZ Quant Trading Platform.
{
"code": 0,
"data": {
"result": {
"exchanges": [{
"website": "https://www.huobi.pro/",
"name": "Huobi",
"priority": 1,
"meta": "[{"desc": "Access Key", "required": true, "type": "string", "name": "AccessKey", "label": "Access Key"}, {"encrypt": true, "name": "SecretKey", "required": true, "label": "Secret Key", "type": "password", "desc": "Secret Key"}]",
"eid": "Huobi",
"logo": "huobi.png",
"id": 1
}, {
"website": "https://www.kex.com/",
"name": "KEX",
"priority": -99,
"meta": "[{"desc": "Access Key", "required": true, "type": "string", "name": "AccessKey", "label": "Access Key"}, {"encrypt": true, "name": "SecretKey", "required": true, "label": "Secret Key", "type": "password", "desc": "Secret Key"}, {"encrypt": true, "required": true, "type": "password", "name": "Password", "label": "Trading Password"}]",
"eid": "KEX",
"logo": "",
"id": 43
},
...
]
},
"error": null
}
}
PeraturanDeleteNode(Nid)
metode digunakan untuk menghapus node docker yang sesuai denganAPI KEY
ID node docker yang dihapus adalah ID docker yang ditentukan olehnid
parameter.
{
"code":0,
"data":{
"result":true,
"error":null
}
}
Peraturannid
parameter digunakan untuk menentukan ID dari docker yang akan dihapus.GetNodeList
metode untuk mendapatkan informasi tentang pelabuhan dari akun.
tidak
benar
Nomor
PeraturanDeleteRobot(RobotId, DeleteLogs)
metode digunakan untuk menghapus perdagangan langsung yang sesuai denganAPI KEY
ID perdagangan langsung yang dihapus adalah ID perdagangan langsung yang ditentukan olehrobotId
parameter.
// Return value after successful deletion
{
"code": 0,
"data": {
"result": 0,
"error": null
}
}
ParameterrobotId
digunakan untuk menentukan ID perdagangan langsung yang akan dihapus.GetRobotList
metode untuk mendapatkan informasi perdagangan langsung di bawah akun, yang berisi ID perdagangan langsung.
robotId
benar
nomor
PeraturandeleteLogs
Parameter digunakan untuk mengatur apakah akan menghapus log perdagangan langsung, jika melewati nilai benar (misalnya:true
), log perdagangan langsung dihapus.
deleteLogs
benar
bool
PeraturanGetStrategyList()
metode digunakan untuk memperoleh informasi strategi yang sesuai denganAPI KEY
dalam permintaan akun Platform Perdagangan Quant FMZ.
{
"code": 0,
"data": {
"result": {
"strategies": [{
"category": 0,
"username": "yifidslei",
"is_owner": true,
"name": "fmz simulation trading test strategy",
"language": 0,
"hasToken": false,
"args": "[]",
"is_buy": false,
"public": 0,
"last_modified": "2018-01-18 12:36:03",
"date": "2018-01-17 09:19:32",
"forked": 0,
"id": 63372
}, {
"category": 20,
"username": "bifndslez",
"is_owner": true,
"name": "Plot library",
"language": 0,
"hasToken": false,
"args": "[]",
"is_buy": false,
"public": 0,
"last_modified": "2017-05-08 09:44:18",
"date": "2017-04-19 10:38:14",
"forked": 0,
"id": 39677
},
...
],
"all": 20
},
"error": null
}
}
PeraturanNewRobot
metode ini digunakan untuk membuat perdagangan langsung di bawahAPI KEY
yang sesuai dengan akun Platform Perdagangan Kuantum FMZ dalam permintaan.
// Create live trading successfully
{
"code": 0,
"data": {
"result": 74260,
"error": null
}
}
Parameter konfigurasi perdagangan langsung,settings
format parameter adalah sebagai berikut:
{
"name": "hedge test",
/*
Strategy parameters; the order does not have to be in correspondence with the parameter order, but the name must be the same as the parameter name
Note: the second element in the parameter array ["MAType", 0, 75882] is an array including three elements,
in which the first one "MAType" is the parameter on the pattern referred by the live trading-binding strategy
The second one "0" is the specific value set by the parameter "MAType".
The third element, 75882, is the ID of the template to which the MAType parameter belongs, and is used to identify which template the parameter belongs to
*/
"args": [["Interval", 500], ["MAType", 0, 75882]],
// Strategy ID, which can be obtained by "GetStrategyList" method
"strategy": 25189,
// K-line period parameter; "60" indicates 60 seconds
"period": 60,
// It can be specified to run on which docker; no writing of the attribute will lead to automatic assignment
"node" : 52924,
// Custom field
"appid": "member2",
// Specify live trading group
"group": 1122,
"exchanges": [
// ZB; "pid" can be obtained by "GetPlatformList" method
{"pid": 15445, "pair": "ETH_BTC"},
// OKEX
{"pid": 13802, "pair": "BCH_BTC"},
// In addition to the exchanges configured by the FMZ dashboard (pid identification), you can also set exchange configuration information that has not been configured to operate the live trading
{"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}},
{"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}}
]
}
pengaturan benar Objek JSON
Ketika Anda menggunakan informasi sensitif, seperti platformAPI KEY
, termasuk"meta":{"AccessKey":"xxx","SecretKey":"yyy"}
dalam konfigurasieid
, Anda harus tahu FMZ tidak menyimpan data.
Data akan dikirim langsung ke program docker, sehingga informasi ini harus dikonfigurasi setiap kali perdagangan langsung dibuat atau dihidupkan kembali.
Jika Anda ingin membuat perdagangan hidup yang menggunakan plugin untuk mendukung platform, ketika mengkonfigurasisettings
parameter, Anda harus membuat pengaturan berikut untukexchanges
atribut:
{"eid": "Exchange", "label" : "testXXX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "1234", "Front" : "http://127.0.0.1:6666/XXX"}}
label
Atribut adalah untuk mengatur label untuk objek pertukaran diakses oleh protokol umum saat ini, yang dapat diperoleh olehexchange.GetLabel()
fungsi dalam strategi.
PeraturanPluginRun
metode digunakan untuk memanggilalat debugfungsi dari Platform Perdagangan Kuantum FMZ.
{
"code": 0,
"data": {
"result": "...",
"error": null
}
}
Parameter pengaturan dalam alat debugging,settings
konfigurasi, termasuk kode uji dalamsource
Atribut.settings
Format parameter adalah sebagai berikut:
# K-line period parameter, "60" indicates 60 seconds
"period": 60,
"source": "function main() {Log("Hello FMZ")}",
# The docker ID can specify which docker to run the bot on; if the value is -1, it means automatic assignment
"node" : 54913,
"exchanges": [
{"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}},
{"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}}
]
} ```
settings
true
JSON object
```{"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}}```
```{"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}}```
For the ```exchanges``` attribute in the ```settings```, the attribute only needs to be set to 1, when calling the ```PluginRun``` interface (for only one exchange object can be supported when you use the "Debug Tool" page).
No error will be reported when you set 2 exchange objects in ```settings```, but an error will be reported when the second exchange object is accessed in the code.
### GetRobotLogs
The ```GetRobotLogs``` method is used to get the log information of the live trading under the FMZ Quant Trading Platform account corresponding to the ```API KEY``` in the request. The Id of the live trading platform to be obtained is the live trading platform Id specified by the ```robotId``` parameter.
{\cH00FFFF}
// Struktur data kedua dalam log adalah catatan log dalam tabel log strategi di basis data perdagangan hidup
// Struktur data ketiga dalam log adalah catatan log dalam tabel log strategi di basis data perdagangan langsung
The ```robotId``` parameter is used to specify the Id of the live trading for which the log information is to be obtained. You can use the ```GetRobotList``` method to obtain information about the live trading under the account, which contains the live trading Id.
robotId
true
number
The ```logMinId``` parameter is used to specify the minimum Id of the Log.
logMinId
true
number
The ```logMaxId``` parameter is used to specify the maximum Id of the Log.
logMaxId
true
number
The ```logOffset``` parameter is used to set the offset, after determining the range by ```logMinId``` and ```logMaxId```, offset based on the ```logOffset``` (how many records are skipped). Start as the starting position for fetching data.
logOffset
true
number
The parameter ```logLimit``` is used to set the number of data records to be selected after the starting position is determined.
logLimit
true
number
The ```profitMinId``` parameter is used to set the minimum Id of the profit log.
profitMinId
true
number
The parameter ```profitMaxId``` is used to set the maximum Id of the profit log.
profitMaxId
true
number
The parameter ```profitOffset``` is used to set the offset (how many records are skipped) as the starting position.
profitOffset
true
number
The parameter ```profitLimit``` is used to set the number of data records to be selected after the starting position is determined.
profitLimit
true
number
The parameter ```chartMinId``` is used to set the minimum Id of the chart data record.
chartMinId
true
number
The parameter ```chartMaxId``` is used to set the maximum Id of the chart data record.
chartMaxId
true
number
The parameter ```chartOffset``` is used to set the offset.
chartOffset
true
number
The parameter ```chartLimit``` is used to set the number of records to obtain.
chartLimit
true
number
The parameter ```chartUpdateBaseId``` is used to set the base Id after the query is updated.
chartUpdateBaseId
true
number
The parameter ```chartUpdateDate``` is used to set the data record update timestamp, and it will filter out records greater than this timestamp.
chartUpdateDate
true
number
The parameter ```summaryLimit``` is used to set the number of bytes of status bar data to be queried. The parameter is of integer type for querying the status bar data of the live trading.
Setting to "0" means there is no need to query the status bar information, and setting to non-zero number indicates the number of bytes of the status bar information to be queried (the interface does not limit the data quantity, so you can specify a larger ```summaryLimit``` parameter to get all status bar information). The status bar data is stored in the returned data ```summary```.
summaryLimit
true
number
- The strategy log table in the database
The ```Arr``` attribute value in the first element of the ```Logs``` attribute value (array structure) in the return data (log data) is described as follows:
| id | logType | eid | orderId | price | amount | extra | date | contractType | direction |
| - | - | - | - | - | - | - | - | - | - |
| 3977 | 3 | "Futures_OKCoin" | "" | 0 | 0 | "Sell(688.9, 2): 20016" | 1526954372591 | "" | "" |
| 3976 | 5 | "" | "" | 0 | 0 | "OKCoin:this_week too many positions, long: 2" | 1526954372410 | "" | "" |
```extra``` is the attached message of the printed log.
The specific log types represented by the ```logType``` values are described as follows:
| logType: | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| - | - | - | - | - | - | - | - |
| Meaning of logType: | BUY | SALE | RETRACT | ERROR | PROFIT | MESSAGE | RESTART |
- Log table of the profit chart in the database
The data in the chart's log table is consistent with the profit log in the strategy log table.
Take one of the log data as an example:
[202, 2515.44, 1575896700315]
```202``` is log ```ID```; ```2515.44``` is profit value; ```1575896700315``` is timestamp.
- Chart log table in the database
Take one of the log data as an example:
[23637, 0,
```23637``` is the log ```ID```, ```0``` is the index of the chart data series, and the last data ```"{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"``` is the log data; This data is the K-line data on the chart.
Perpustakaan Bawah Tanah
Terminal Perdagangan