FMZ Quant Trading Platformの拡張APIは,直接アクセスをサポートするために最近アップグレードされました. これにより,自動取引のためにFMZ Quant Trading PlatformロボットにTradingView警告信号を簡単に送信できます.拡張APIが何であるか知らない場合は,注意して聞いてください.
FMZのAPIドキュメントへのリンク (https://www.fmz.com/api)
拡張APIの主な機能は,プログラム操作のためのFMZ量子取引プラットフォームのさまざまな機能のためのインターフェースを提供することです. 例えば,ロボットを同時でバッチで起動し,ロボットが起動し停止するタイミング,ロボット情報詳細を読み取ることなど.CommandRobot(RobotId, Cmd)
このインターフェースは,指定されたIDでロボットにインタラクティブな指示を送信し,ロボットが指示を受けた後に対応する操作 (購入,販売の注文など) を実行することができます.
拡張APIを使用するには,API KEY
まず,自分のFMZ口座について:
秘密の鍵API KEY
構成されるaccess key
そしてsecret key
. API KEY
プログラム操作のFMZ量子取引プラットフォームを定量化するための鍵であるため,適切に保管され,開示されることはありません.API KEY
FMZでは,許可を指定できます.例えば,上の図は,API KEY
アクセスする許可CommandRobot(RobotId, Cmd)
この例では,セキュリティ上の考慮に基づいて, 拡張されたAPI KEY
FMZへのアクセス許可についてCommandRobot(RobotId, Cmd)
interface.
直接アクセスモードは,API KEY
URL Query に直接書き込まれる.例えば,FMZ Quant Trading Platform の拡張 API にアクセスするための URL は以下のように書き込める.
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
どこにhttps://www.fmz.com/api/v1
インターフェースアドレスです?
続いてはQuery
パラメータaccess_key
秘密鍵はxxxで表現されます (例えば,それを使用するときに自分のFMZアカウントのaccess_keyを入力します).secret_key
yyyy で表される (それを使用するときに自分のアカウントの secret_key を入力します). パラメータmethod
アクセスする拡張 API インターフェイスの特定名,およびargs
は,このパラメータです.method
インターフェースを呼び出します.
FMZ量子取引プラットフォームロボットにトランザクションコマンドを送信する信号源として. 実際には,我々はただCommandRobot
interface.
まず,TradingView Pro レベルのアカウントが必要です. WebHood 機能は Basic レベルでは使用できません.
グラフまたは他のスクリプトアルゴリズムにインディケーターを追加することができます. ここで,私たちは最も一般的に使用されるMACD
K線周期を1分に設定します (より速い信号発信と簡単な実証のため)
右クリックして,ポップアップメニューから"警告追加"を選択します.
セットWebHook
この時点で,我々はFMZ量子取引プラットフォームで監視信号ロボットを実行することができます.
戦略のソースコード:
// Global variable
var BUY = "buy" // Note: The command used for spot
var SELL = "sell" // The command used for spot
var LONG = "long" // The command used for future
var SHORT = "short" // The command used for future
var COVER_LONG = "cover_long" // The command used for future
var COVER_SHORT = "cover_short" // The command used for future
function main() {
// Clear the log and delete it if not needed
LogReset(1)
// Set precision
exchange.SetPrecision(QuotePrecision, BasePrecision)
// Identify future or spot
var eType = 0
var eName = exchange.GetName()
var patt = /Futures_/
if (patt.test(eName)) {
Log("The added exchange is a futures exchange:", eName, "#FF0000")
eType = 1
if (Ct == "") {
throw "Ct Contract set to null"
} else {
Log(exchange.SetContractType(Ct), "set contract:", Ct, "#FF0000")
}
} else {
Log("The added exchange is a spots exchange:", eName, "#32CD32")
}
var lastMsg = ""
var acc = _C(exchange.GetAccount)
while(true) {
var cmd = GetCommand()
if (cmd) {
// Detect interactive commands
lastMsg = "command:" + cmd + "time:" + _D()
var arr = cmd.split(":")
if (arr.length != 2) {
Log("cmd incorrect information:", cmd, "#FF0000")
continue
}
var action = arr[0]
var amount = parseFloat(arr[1])
if (eType == 0) {
if (action == BUY) {
var buyInfo = IsMarketOrder ? exchange.Buy(-1, amount) : $.Buy(amount)
Log("buyInfo:", buyInfo)
} else if (action == SELL) {
var sellInfo = IsMarketOrder ? exchange.Sell(-1, amount) : $.Sell(amount)
Log("sellInfo:", sellInfo)
} else {
Log("The spots exchange is not supported!", "#FF0000")
}
} else if (eType == 1) {
var tradeInfo = null
var ticker = _C(exchange.GetTicker)
if (action == LONG) {
exchange.SetDirection("buy")
tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
} else if (action == SHORT) {
exchange.SetDirection("sell")
tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
} else if (action == COVER_LONG) {
exchange.SetDirection("closebuy")
tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
} else if (action == COVER_SHORT) {
exchange.SetDirection("closesell")
tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
} else {
Log("The futures exchange is not supported!", "#FF0000")
}
if (tradeInfo) {
Log("tradeInfo:", tradeInfo)
}
} else {
throw "eType error, eType:" + eType
}
acc = _C(exchange.GetAccount)
}
var tbl = {
type : "table",
title : "status information",
cols : ["data"],
rows : []
}
// tbl.rows.push([JSON.stringify(acc)]) // Use it when testing
LogStatus(_D(), eName, "Last received command:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
戦略のソースコード (https://www.fmz.com/strategy/203063)
戦略コードは非常にシンプルです. それは,リターン値を検出しますGetCommand
戦略プログラムにインタラクティブなメッセージを送信すると,GetCommand
インタラクティブなボタンはこの戦略に設定されています. たとえば,この戦略を実行し,ロボットを設定します.WexApp
FMZ量子取引プラットフォームのシミュレーション取引所です
ロボットに受信されるコマンド文字列は:buy:0.01
.
WebHook 要求の URL は TradingView 警告が起動したときに WebHook 要求の URL を作成する必要がありますCommandRobot
FMZ 量子取引プラットフォームの拡張APIのインターフェースで,運ばれるパラメータはbuy:0.01
.
パラメータのためのあなたの独自のAPI KEYを入力してください.access_key
, secret_key
.....method
固定されています.我々は,単にアクセスする必要がありますCommandRobot
extendedAPIインターフェース パラメータargs
その形は[Robot ID, Command String]
ロボットIDを ロボットページから直接取得できます.
コマンド文字列は: 0.02 コインbuy:0.02
. WebHook の URL が完了します.この方法では,URL に信号を書き込むのみがサポートされます.https://www.fmz.com/api#直接の検証です
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args= [191755,"buy:0.02"]
トレーディングビューで設定:
信号が発信されるまで待って... 信号が発信されるまで待って... 信号が発信されるまで待って... ... ほら
ロボットはシグナルを受け取り,TradingViewの様々なチャート機能と指標アルゴリズムを使用して,FMZ Quant Trading Platformの戦略ロボットと協力して,望む自動取引を達成できます.
監視信号による注文の配置のための