FMZ Quant トレーディングプラットフォームの拡張 API は最近アップグレードされ,直接アクセスモードをサポートし,自動取引のために TradingView 警告信号を簡単に FMZ のボットに送ることができます.拡張 API が何であるか知らない場合は,今,詳細に聞いてください.
拡張APIの主な機能は,FMZ Quant取引プラットフォームのさまざまな機能のためのインターフェースを提供することであり,バッチを同時に起動するボット,ボットの開始と停止をタイミングする,ボットの情報詳細を読み取るなど,プログラム操作のためのものです.我々はFMZ拡張APIを使用して,TradingView警告信号取引を実装します.この需要は,ボットの動作を制御するツールを使用する必要があります.CommandRobot(RobotId, Cmd)
このインターフェースは,指定されたIDでボットにインタラクティブなコマンドを送信し,ボットが対応する操作 (購入または販売の注文など) を実行することができます.
拡張APIを使用するには,まず自分のアカウントを作成する必要がありますAPI KEY
FMZでは:
API KEY
構成されるaccess key
そしてsecret key
; API KEY
FMZ Quant トレーディングプラットフォームをプログラム的に操作する鍵です.API KEY
例えば,上の図は,ただ,この設定の設定だけを示します.API KEY
アクセスする許可CommandRobot(RobotId, Cmd)
この例では,セキュリティ上の理由から,アクセス許可をCommandRobot(RobotId, Cmd)
FMZへのインターフェースが拡張API KEY
.
直接アクセスモードは,直接書き表示API KEY
URLのクエリでは,例えば FMZ Quant プラットフォームの拡張 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 アカウントが必要です. Basic レベルでは WebHood 機能をアラートで使用できません. TradingView のチャートに入ります.
このグラフにインディケーターを追加すると,他のスクリプトアルゴリズムも使用できます. ここで,実証の便利のために,最も一般的に使用されるMACD
インジケーターを押して,K線期間を1分に設定します (信号の起動速度を速くし,実証を容易にするため)
右クリックして,ポップアップメニューから"警告追加"を選択します.
セットWebHook
この時点で,設定を心配する必要はありません. まず FMZ Quant 取引プラットフォームのシグナルを監視するボットを実行しましょう.
戦略のソースコード:
// global variable
var BUY = "buy" // Note: the command used for spot
var SELL = "sell" // the command used for futures
var LONG = "long" // the command used for futures
var SHORT = "short" // the command used for futures
var COVER_LONG = "cover_long" // the command used for futures
var COVER_SHORT = "cover_short" // the command used for futures
function main() {
// Empty the logs; delete, if not needed
LogReset(1)
// Set the precision
exchange.SetPrecision(QuotePrecision, BasePrecision)
// Judge whether it is spot or futures
var eType = 0
var eName = exchange.GetName()
var patt = /Futures_/
if (patt.test(eName)) {
Log("The added platform is a futures platform:", 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 platform is a spot platform:", eName, "#32CD32")
}
var lastMsg = ""
var acc = _C(exchange.GetAccount)
while(true) {
var cmd = GetCommand()
if (cmd) {
// Detect the interactive command
lastMsg = "Command:" + cmd + "Time:" + _D()
var arr = cmd.split(":")
if (arr.length != 2) {
Log("Wrong cmd 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("Spot trading platforms are 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("Futures trading platforms are 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)]) // Used during testing
LogStatus(_D(), eName, "The command received last time:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
このコードは非常にシンプルです.GetCommand
戦略プログラムに送信するインタラクティブなメッセージがあるとき,GetCommand
このメッセージが返信され,その後戦略プログラムはメッセージの内容に基づいて対応する取引操作を行う. インタラクションボタンが戦略に設定されており,インタラクティブな機能をテストすることができます. 例えば,戦略が操作されると,ボットはシミュレーションプラットフォームで構成されます.WexApp
FMZ Quantの取引プラットフォームです
ボットが購入命令を受信する能力をテストするために,インタラクションボタンをクリックします.
ボットが受信するコマンド文字列は:buy:0.01
.
運ばれたパラメータがbuy:0.01
アクセスする際にCommandRobot
FMZ Quant の拡張 API のインターフェースを WebHook リクエスト URL で,TradingView アラートが起動したとき.
WebHook の URL を記入します.API KEY
についてaccess_key
そしてsecret_key
パラメータmethod
拡張 API にアクセスするだけですCommandRobot
についてargs
パラメータは,[robot ID, command string]
図のようにボットページから直接ロボットIDを取得できます
コマンド文字列は:"buy:0.02"
WebHookのURLを完了しました.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[443999,"buy:0.02"]
トレーディングビューで設定:
信号が発信されるのを待って ボットが信号を受け取ると ページ右上部に信号アラートと ページ右下部にトリガーログが表示されます
ロボットが信号を受け取った
この方法で,TradingViewの豊かなチャート機能と指標アルゴリズムを使用して,FMZ Quantの戦略ボットと協力して,あなたが望む自動化された取引を実現することができます.