리소스 로딩... 로딩...

"TradingView" 경고 신호 거래를 실현하기 위해 FMZ Quant에 확장 API를 사용

저자:니나바다스, 창작: 2022-03-30 16:28:09, 업데이트: 2022-03-31 17:32:25

FMZ에서 확장 API를 사용하여 TradingView 경고 신호 거래를 실현하십시오.

빌리빌리에서 동영상 링크

FMZ 퀀트 트레이딩 플랫폼의 확장 API는 최근에 업그레이드되었으며, 업그레이드는 직접 액세스 모드를 지원하므로 자동 거래를 위해 TradingView 경고 신호를 FMZ의 봇에 쉽게 보낼 수 있습니다. 확장 API가 무엇인지 모르는 경우, 이제 자세히 들어보십시오.

FMZ 퀀트 플랫폼의 확장 API

FMZ API 문서의 관련 부분의 링크

확장 API의 주요 기능은 FMZ 퀀트 거래 플랫폼의 다양한 기능에 대한 인터페이스를 제공하는 것입니다. 즉, 팩을 동시에 시작하는 봇, 봇 시작 및 정지 시점, 봇 정보 세부 정보를 읽는 등과 같은 프로그래밍 작업. 우리는 TradingView 경고 신호 거래를 구현하기 위해 FMZ 확장 API를 사용합니다.CommandRobot(RobotId, Cmd)확장된 API에서 인터페이스. 이 인터페이스는 지정된 ID를 가진 봇에 대화형 명령을 보낼 수 있으며, 봇은 해당 작업을 수행 할 수 있습니다. (구매 또는 판매 주문을 하는 등)

확장 API를 사용하려면 먼저 자신의 계정을 만들어야 합니다API KEYFMZ에서:img

API KEY구성되어 있습니다access key그리고secret key; API KEYFMZ 양자 거래 플랫폼을 프로그램적으로 운영하는 열쇠입니다. 그래서 제대로 보관하고 공개하지 않도록하십시오.API KEY예를 들어, 위의 그림은API KEY접근 권한CommandRobot(RobotId, Cmd)이 예에서, 보안상의 이유로,CommandRobot(RobotId, Cmd)FMZ와의 인터페이스 확장API KEY.

확장 API의 직접 액세스 모드

직접 액세스 모드는 직접 글을 표시API KEY예를 들어, 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 계정의 액세스_키를 입력); 매개 변수secret_keyyyyy로 표시됩니다 (이용할 때, 자신의 계정 비밀_키를 입력); 매개 변수method접근할 확장된 API 인터페이스의 특정 이름이며,args이 지표의 매개 변수method인터페이스 호출.

우리는 FMZ 봇에 거래 명령을 보내기 위해 신호 원천으로 트레이딩뷰를 사용합니다.CommandRobot interface.

트레이딩뷰

우선, 당신은 TradingView Pro 계정을 가지고 있어야 합니다. 기본 레벨은 경고에서 WebHood 기능을 사용할 수 없습니다. 우리는 TradingView의 차트를 입력합니다.

img

차트에 지표를 추가하면 다른 스크립트 알고리즘도 사용할 수 있습니다.MACD지표, 그리고 K-라인 기간을 1분으로 설정합니다. (신호가 더 빨리 발사되고 시연을 용이하게 하기 위해서)

img

차트에 오른쪽 버튼을 눌러 pop-up 메뉴에서 Add Alert를 선택합니다.

img

세트WebHookAlert 팝업 창에서. 이 시점에서, 당신은 설정에 대해 걱정할 필요가 없습니다. 먼저 FMZ 퀀트 거래 플랫폼에서 신호를 모니터링하는 봇을 실행하자.

감시 신호의 주문 로봇

전략 소스 코드:

// 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이 메시지를 반환 하 고, 그 다음 전략 프로그램은 메시지의 내용을 기반으로 대응 거래 작업을 수행 합니다. 상호 작용 버튼은 상호 작용 기능을 테스트 할 수있는 전략에 설정 되었습니다. 예를 들어, 전략이 작동 할 때, 보트는 시뮬레이션 플랫폼으로 구성됩니다.WexAppFMZ 퀀트 거래 플랫폼의

img

상호 작용 버튼을 클릭하여 bot의 구매 명령을 받을 수 있는 능력을 테스트합니다.

img

보트에서 받은 명령 문자열은 다음과 같습니다.buy:0.01.

우리는 단지 운반된 매개 변수를buy:0.01사용 중CommandRobotFMZ Quant 확장 API의 인터페이스에서 WebHook 요청 URL에서, TradingView 경고가 발생했을 때.

트레이딩 뷰의 WebHook 구성

트레이딩뷰로 돌아가 WebHook의 URL을 작성합니다.API KEYaccess_key그리고secret_key매개 변수method정해집니다, 우리는 단지 확장 API에 액세스해야 합니다CommandRobot;args매개 변수는[robot ID, command string], 우리는 직접 로봇 ID를 얻을 수 있습니다.img

신호가 발동되면 0.02 동전을 구매하고 명령 문자열은"buy:0.02"의 URL을 완성합니다.

https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[443999,"buy:0.02"]

트레이딩 뷰로 설정:

img

신호가 발사될 때까지 기다려 로봇이 신호를 수신하면 페이지 오른쪽 상단에 신호 알림을 볼 수 있고 페이지 오른쪽 하단에 트리거 로그를 볼 수 있습니다.

로봇이 신호를 수신했습니다.img

이 방법으로, 당신은 풍부한 차트 기능과 TradingView의 지표 알고리즘을 사용하여 원하는 자동 거래를 실현하기 위해 FMZ Quant의 전략 봇과 협력 할 수 있습니다.

시그널 모니터링의 주문 봇의 전략 코드는 연구 및 연구에만 사용됩니다. 실제 봇의 사용에 최적화 및 조정되어야합니다. 또한 선물을 지원합니다. 시장 주문 모드로 설정하는 것이 좋습니다. 자세한 내용은 전략 코드 매개 변수를 참조하십시오. 질문이나 제안이 있으시면 메시지를 남겨주세요.


더 많은