Les ressources ont été chargées... Je charge...

Explication de l'interface API étendue

  • L'interface API étendue de la plateforme de négociation quantitative FMZ Ajouter les paramètres de requête (séparés par?) de la demande immédiatementhttps://www.fmz.com/api/v1Les paramètres de demande exprimés à l'aide dePython:

    {
        "version"   : "1.0",
        "access_key": "xxx",
        "method"    : "GetNodeList",
        "args"      : [],
        "nonce"     : 1516292399361,
        "sign"      : "085b63456c93hfb243a757366600f9c2"
    }
    
    Les champs Directions de conduite
    version Numéro de version.
    accès_clé AccessKey, demandez-le sur la page de gestion de compte.
    méthode La méthode d'appel spécifique.
    les args La liste des paramètres de la méthode spécifique appelée.
    nonce L'horodatage, en millisecondes, permet une erreur d'une heure par rapport à l'horodatage standard.
    signe Signature.

    Chaque nom de paramètre est séparé par le caractère&, et les noms et valeurs des paramètres sont reliés au symbole=. L'URL complète de la demande (en prenantmethod=GetNodeListà titre d'exemple):

    https://www.fmz.com/api/v1?access_key=xxx&nonce=1516292399361&args=%5B%5D&sign=085b63456c93hfb243a757366600f9c2&version=1.0&method=GetNodeList
    

    Notez qu'il n'y a passecret_keyparamètre parmi les paramètres de demande.

  • Méthode de signature Lesignle paramètre du paramètre de demande est chiffré comme suit, selon le format:

    version + "|" + method + "|" + args + "|" + nonce + "|" + secretKey
    

    Après avoir concaténé des chaînes, utilisezMD5algorithme de chiffrement pour chiffrer la chaîne et la convertir en une valeur de chaîne de données hexadécimale, désignée par la valeur du paramètresign. pour la partie relative à la signature, voir lePythonInterface de l'API d'extension de codeMéthodes de vérification :

    # 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()
    

Obtenez une liste de nœuds

LeGetNodeListla méthode est utilisée pour obtenir la liste des dockers dans le cadre du compte de la plateforme de négociation quantitative FMZ correspondant auAPI KEYdans la demande.

{
    "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
    }
}

Description des champs de valeurs renvoyées (la signification littérale est évidente et ne sera pas répétée):

  • tous: le nombre de dockers associés au compte courant.
  • les nœuds: enregistre les détails du nœud dock.
    • construire: numéro de version.
    • ville: la ville où vous vous trouvez.
    • is_owner: vrai indique un dock privé, faux indique un dock public.
    • chargé: Chargement, nombre d'instances de stratégie.
    • public: 0 indique un dock privé, 1 un dock public.
    • région: situation géographique.
    • version: informations détaillées sur la version du docker.
    • wd: Activer ou non l'alarme hors ligne, 0 signifie non activé. Le docker de déploiement en un clic contient des informations supplémentaires.ecs_etunit_, qui enregistre les informations pertinentes du serveur docker de déploiement en un clic (nom de l'opérateur, configuration, statut, etc.), cycle de facturation, prix et autres informations, qui ne seront pas répétées ici.

Aucun paramètre

Réservez la liste des groupes

GetRobotGroupList()renvoie la liste des groupes de négociation en direct du compte de la plateforme de négociation quantitative FMZ correspondant auAPI KEYdans la demande.

{
    "code": 0,
    "data": {
        "result": {
            "items": [{
                "id": 3417,
                "name": "Test"
            }, {
                "id": 3608,
                "name": "Live trading demo"
            }]
        },
        "error": null
    }
}
  • les éléments: informations sur les regroupements de négociation en direct.
    • Id: Groupe de négociation en direct Id.
    • nom: nom du groupe de négociation en direct. LeitemsLe champ n'enregistre que les groupes nouvellement créés.items.

Aucun paramètre

Remplissez la liste des plateformes

GetPlatformList()renvoie la liste des bourses qui ont ont été ajoutés par le compte de la plateforme de négociation quantitative FMZ correspondant à laAPI KEYdans la demande.

{
    "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
    }
}

Aucun paramètre

Je suis en train d' écrire une lettre à GetRobot.

LeGetRobotListCette méthode est utilisée pour obtenir la liste des transactions en direct sous le compte de la plateforme de négociation quantitative FMZ correspondant à laAPI KEYdans la demande.

{
    "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
    }
}

Le réglage de décalage de la requête de paging. décalage faux Numéro Le réglage de la longueur de la requête de page. longueur faux Numéro Spécifier l'état de la négociation en direct à interroger, se référer à l'interface API étendueCode de négociation en directPassez.-1pour obtenir tous les échanges en direct. robotStatus faux Numéro Spécifiez l'étiquette personnalisée du trading en direct que vous souhaitez interroger, et vous pouvez filtrer tous les transactions en direct de cette étiquette. étiquette faux chaîne

Prends lePythonL'interface API étendue du langageMéthodes de vérificationà titre d'exemple:print(api('GetRobotList', 'member2')): imprimer les informations de toutes les opérations en direct avec l'étiquette personnaliséemember2. print(api('GetRobotList', 0, 5, -1, 'member2')): pages de 0 à 5 et liste jusqu'à 5 robotsmember2.

CommanderRobot

LeCommandRobotCette méthode est utilisée pour envoyer une commande d'interaction à la transaction en direct sous le compte de la plateforme de négociation quantitative FMZ correspondant à laAPI KEYL'ID de la transaction en direct recevant la commande d'interaction est l'ID de transaction en direct spécifié par lerobotIdparamètre, et la commande d'interaction est renvoyée par leGetCommand()fonction appelée dans la stratégie pour la capturer.

{
    // 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
    }
}

Le paramètrerobotIdest utilisé pour spécifier l'ID du trading en direct qui reçoit la commande interactive.GetRobotListméthode permettant d'obtenir les informations relatives aux transactions en direct sous le compte, qui contient l'identifiant des transactions en direct. robotId vrai Numéro Le paramètrecmdest la commande interactive envoyée au bot; la commande sera capturée par la fonctionGetCommand(), qui déclenche la logique interactive dans la stratégie.GetCommand()fonction dans leManuel de l'API de la plateforme de négociation quantique FMZ- Je ne sais pas. Cmd vrai chaîne

ArrêtezRobot

StopRobot(RobotId)est utilisé pour demander leAPI KEYL'identifiant de négociation en temps réel à arrêter est l'identifiant de négociation en temps réel spécifié par lerobotId parameter.

{
    "code": 0,
    "data": {
        // 2 means stopping
        "result": 2,           
        "error": null
    }
}

Le paramètrerobotIdest utilisé pour spécifier l'ID de la négociation en direct à arrêter.GetRobotListméthode permettant d'obtenir les informations relatives aux transactions en direct sous le compte, qui contient l'identifiant des transactions en direct. robotId vrai Numéro

Redémarrer le robot

LeRestartRobotLa méthode est utilisée pour redémarrer les transactions en direct dans le cadre duAPI KEYL'identifiant de la négociation en direct redémarrée est l'identifiant de la négociation en direct spécifié par lerobotId parameter.

{
    "code": 0,
    "data": {
        // 1 means running
        "result": 1,          
        "error": null
    }
}

LerobotIdLe paramètre est utilisé pour spécifier l'ID de la négociation en direct à redémarrer.GetRobotListméthode permettant d'obtenir les informations relatives aux transactions en direct sous le compte, qui contient l'identifiant des transactions en direct. robotId vrai Numéro Les paramètres de la configuration de négociation en direct, les paramètressettingsle format est le suivant:

{
    "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"}}
    ]
}

Lorsque vous utilisez des informations sensibles, telles que la plateformeAPI KEY, y compris"meta":{"AccessKey":"xxx","SecretKey":"yyy"}dans la configuration deeid, vous devez savoir que FMZ ne stocke pas les données. Les données seront envoyées directement au programme docker, donc ces informations doivent être configurées chaque fois que le trading en direct est créé ou redémarré.

Pour redémarrer le commerce en direct qui utilise le plugin pour soutenir l'échange, lors de la configuration dusettingsparamètre, vous devez effectuer les réglages suivants pour leexchangesattribut:

{"eid": "Exchange", "label" : "testXXX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "1234", "Front" : "http://127.0.0.1:6666/XXX"}}

labelL'attribut est de définir une étiquette pour l'objet d'échange accessible par le système actuel.Protocole général, qui peut être obtenue par leexchange.GetLabel()Le rôle de l'entreprise dans la stratégie.

paramètres faux Objet JSON

Si le trading en direct est créé par l'API étendue, l'API étendueRestartRobot (RobotId, Settings)doit être utilisé pour redémarrer, et lesettingsLe trading en direct créé sur la page de la plateforme peut être redémarré via l'API étendue ou en cliquant sur le bouton sur la page.settingsParamètre. Si vous passez seulement leRobotIdparamètre, démarrer la négociation en direct selon les paramètres de négociation en direct actuels.

GetRobotDétails

LeGetRobotDetailCette méthode est utilisée pour obtenir les détails de la négociation en direct sous le compte de la plateforme de négociation quantitative FMZ correspondant à laAPI KEYL'identifiant de la transaction en direct à récupérer est l'identifiant de la transaction en direct spécifié par lerobotId 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
    }
}

LerobotIdLe paramètre est utilisé pour spécifier l'Id du commerce en direct pour lequel les détails doivent être obtenus.GetRobotListméthode permettant d'obtenir des informations sur les transactions en direct sous le compte, qui contient l'identifiant des transactions en direct. robotId vrai Numéro

Lesummaryl'attribut dans les données renvoyées (informations sur la barre d'état du bot; mis en cache pendant 10 secondes; pas les données les plus récentes) a actuellement une limite de quantité de données (données mises en cache). Si vous avez besoin de plus de données de la barre d'état, vous pouvez utiliser leGetRobotLogsl'interface à obtenir (lorsqueGetRobotLogsobtient les informations de la barre d'état, le champsummarysont les données les plus récentes).

La description de l'attribut destrategy_exchange_pairsPrenons par exemple les données suivantes:

[60,[44314,42960,15445,14703],[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]]

Les premières données60représente la période par défaut de la ligne K définie par la négociation en direct est de 1 minute, soit 60 secondes.[44314,42960,15445,14703]est l'objet d'échangepidconfiguré pour la négociation en direct (selon l'ordre d'ajout).[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]est la paire de négociation définie pour l'objet d'échange configuré par négociation en direct (dans l'ordre d'addition et en correspondance un-à-un avecpid).

Compte de prise de vue

LeGetAccountLa méthode est utilisée pour acquérir les informations relatives au compte correspondant à laAPI KEYà la demande du compte de la plateforme de négociation quantitative 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
    }
}

Je vais vous donner une liste.

LeGetExchangeListLa méthode est utilisée pour obtenir la liste des bourses et les informations de configuration requises prises en charge par la plateforme de négociation quantitative FMZ.

{
    "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
    }
}

Supprimer le nœud

LeDeleteNode(Nid)Cette méthode est utilisée pour supprimer le nœud docker correspondant à laAPI KEYdans la demande du compte de la plateforme de trading FMZ Quant.nid parameter.

{
    "code":0,
    "data":{
        "result":true,
        "error":null
    }
}

LenidLe paramètre est utilisé pour spécifier l'Id du docker à supprimer.GetNodeListméthode pour obtenir des informations sur les dockers du compte. nid vrai Numéro

SupprimerRobot

LeDeleteRobot(RobotId, DeleteLogs)Cette méthode est utilisée pour supprimer les transactions en direct correspondant à laAPI KEYL'identifiant de négociation en direct supprimé est l'identifiant de négociation en direct spécifié par lerobotId parameter.

// Return value after successful deletion
{
    "code": 0,
    "data": {
        "result": 0,
        "error": null
    }
}

Le paramètrerobotIdest utilisé pour spécifier l'ID de la transaction en direct à supprimer.GetRobotListméthode permettant d'obtenir les informations relatives aux transactions en direct sous le compte, qui contient l'identifiant des transactions en direct. robotId vrai Numéro LedeleteLogsParamètre utilisé pour définir si le journal de négociation en direct doit être supprimé si une valeur vraie est passée (par exemple:true), le journal des transactions en direct est supprimé. supprimerLogs vrai Boole

Je suis en train d' écrire une lettre.

LeGetStrategyList()La méthode est utilisée pour obtenir l'information stratégique correspondant à laAPI KEYà la demande du compte de la plateforme de négociation quantitative 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
    }
}

Je suis un robot.

LeNewRobotCette méthode est utilisée pour créer une transaction en direct dans le cadre de laAPI KEYcorrespondant au compte de la plateforme de négociation quantitative FMZ figurant dans la demande.

// Create live trading successfully
{
    "code": 0,
    "data": {
        "result": 74260,
        "error": null
    }
}

les paramètres de configuration de négociation en direct,settingsle format des paramètres est le suivant:

{
    "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"}}
    ]
}

paramètres vrai Objet JSON

Lorsque vous utilisez des informations sensibles, telles que la plateformeAPI KEY, y compris"meta":{"AccessKey":"xxx","SecretKey":"yyy"}dans la configuration deeid, vous devez savoir que FMZ ne stocke pas les données. Les données seront envoyées directement au programme docker, de sorte que ces informations doivent être configurées chaque fois que le trading en direct est créé ou redémarré.

Si vous voulez créer le commerce en direct qui utilise le plugin pour soutenir la plate-forme, lors de la configuration dusettingsparamètre, vous devez effectuer les réglages suivants pour leexchangesattribut:

{"eid": "Exchange", "label" : "testXXX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "1234", "Front" : "http://127.0.0.1:6666/XXX"}}

labelL'attribut est de définir une étiquette pour l'objet d'échange accessible par le protocole général actuel, qui peut être obtenue par leexchange.GetLabel()Le rôle de l'entreprise dans la stratégie.

Plugin exécuté

LePluginRunLa méthode est utilisée pour appeler leoutil de débogagefonction de la plateforme de négociation quantitative FMZ.

{
    "code": 0, 
    "data": {
        "result": "...", 
        "error": null
    }
}

Les paramètres de réglage dans l'outil de débogage,settingsconfiguration, inclure le code d'essai dans lesourceL'attributsettingsLe format du paramètre est le suivant:

    # 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.

Je ne sais pas. code: 0, données : { résultat: { statut: 1, temps de mise à jour : 1527049990197, wd: 0, // La première structure de données dans les journaux est les enregistrements de journaux dans la table de journaux de stratégie dans la base de données de trading en direct logs: [{
Max: 3984, Je ne sais pas. [3977, 3, Futures_OKCoin, , 0, 0, Sell ((688.9, 2): 20016, 1526954372591, , ], [3976, 5, , , 0, 0, OKCoin:this_week positions excessives, long: 2, 1526954372410, , ] ], Total : 1503, Min: 2482 Je ne sais pas.
// La deuxième structure de données dans les journaux est les enregistrements de journaux dans la table de journaux de stratégie dans la base de données de trading en direct max: 0, Arr: [], Total: 0, Min: 0 Je ne sais pas.
// La troisième structure de données dans les journaux est les enregistrements de journaux dans la table de journaux de stratégie dans la base de données de trading en direct max: 0, Arr: [], Total: 0, Min: 0 Les États membres graphique: , réfresh: 1527049988000, résumé: ..., "ChartTime": 0, "node_id": 50755, " en ligne ": vrai Le numéro de référence: "erreur": nul Je ne sais pas. Je ne sais pas.



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:
  

Je ne sais pas. [3977, 3, Futures_OKCoin, , 0, 0, Sell ((688.9, 2): 20016, 1526954372591, , ], [3976, 5, , , 0, 0, OKCoin:this_week trop de positions, long: 2, 1526954372410, , ] ],


| 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.

Je ne sais pas. [202, 2515.44, 1575896700315], [201, 1415.44, 1575896341568] Je ne sais pas.


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

Je ne sais pas. Je ne sais pas si vous êtes d'accord avec moi. Je ne sais pas si tu veux que je te dise quelque chose. Je ne sais pas.


Take one of the log data as an example:

Je ne sais pas si vous êtes d'accord avec moi.


```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.
Méthodes de vérification Terminal de négociation