FMZ 퀀트 트레이딩 플랫폼의 확장 API를 사용하여 TradingView 경고 신호 거래를 실현하십시오.

저자:리디아, 창작: 2022-12-14 13:42:41, 업데이트: 2023-09-20 10:17:53

img

FMZ 퀀트 트레이딩 플랫폼의 확장 API를 사용하여 TradingView 경고 신호 거래를 실현하십시오.

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

FMZ 퀀트 트레이딩 플랫폼의 확장 API

FMZ에 대한 API 문서의 일부 링크 (https://www.fmz.com/api)

확장 된 API의 주요 기능은 FMZ 퀀트 트레이딩 플랫폼의 다양한 기능에 대한 인터페이스를 제공하는 것입니다. 프로그램 작업을 위해, 예를 들어 로봇을 동시에 대량으로 시작, 로봇의 시작 및 정지 시계를, 로봇 정보 세부 정보를 읽는 등. 우리는 FMZ 퀀트 트레이딩 플랫폼의 확장 된 API를 사용하여 TradingView 경고 신호 거래의 수요 계획을 실현합니다.CommandRobot(RobotId, Cmd)확장된 API에서 인터페이스. 이 인터페이스는 지정된 ID를 가진 로봇에 대화형 명령어를 보낼 수 있으며 로봇은 명령어를 받은 후 해당 작업을 수행할 수 있습니다. 확장된 API를 사용하려면API KEY먼저 자신의 FMZ 계좌에 대해:

img

비밀의 열쇠API KEY구성되어 있습니다access key그리고secret key. API KEYFMZ 양자 거래 플랫폼의 프로그래밍 운영을 정량화하는 열쇠입니다. 따라서 적절히 보관되어야하고 공개되지 않습니다.API KEYFMZ에서 권한을 지정할 수 있습니다. 예를 들어 위의 그림은API KEY사용 권한CommandRobot(RobotId, Cmd)이 예제에서, 보안 고려사항에 기초하여, 확장된API KEYFMZ에 대한 접근 허가를CommandRobot(RobotId, Cmd) interface.

확장된 API의 직접 액세스 모드

직접 접속 방식은API KEYURL 쿼리에 직접 작성됩니다. 예를 들어 FMZ 양자 거래 플랫폼에서 확장 된 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 기능은 기본 수준에서 사용할 수 없습니다.

트레이딩뷰 차트에서, 당신은 차트 또는 다른 스크립트 알고리즘에 지표를 추가 할 수 있습니다.MACD그리고 K-라인 기간을 1분으로 설정합니다. 더 빠른 신호 발사와 쉬운 시연을 위해요.

차트에 오른쪽 클릭하고 pop-up 메뉴에서 경고를 추가하십시오.

세트WebHook이 시점에서, 우리는 FMZ 양자 거래 플랫폼에서 모니터링 신호 로봇을 실행 할 수 있습니다.img

감시 신호 명령 로봇

전략 소스 코드:

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

우리는 단지 웹 요청 URL을 만들 필요가 있습니다.CommandRobotFMZ 퀀트 트레이딩 플랫폼 확장 API의 인터페이스, 전달되는 매개 변수는buy:0.01.

트레이딩뷰의 WebHook을 설정합니다

다시 트레이딩 뷰에서, 우리는 웹 의 URL을 채우기. 매개 변수에 대한 자신의 API 키를 채우기access_key, secret_key.method우리는 단지 액세스 할 필요가 있습니다CommandRobotextendedAPI 인터페이스. 파라미터args그 형태는[Robot ID, Command String]우리는 로봇 ID를 로봇 페이지에서 직접 얻을 수 있습니다.

img

이번에는 신호가 발사되어 0.02개의 동전을 구매하고 명령 문자열은buy:0.02. 그러면 WebHook URL가 완료됩니다. 이 방법은 URL에 신호를 작성하는 것을 지원합니다. TV 전략 자체에 의해 전송 될 수 있는 경고 메시지의 내용을 얻고 싶다면, 참조https://www.fmz.com/api#직접 검증

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

트레이딩 뷰에서 설정:

img

신호가 발사될 때까지 기다려... 신호가 발사될 때까지 기다려... 신호가 발사될 때까지 기다려... ...

img

그러면 로봇은 신호를 수신할 것입니다. 이 방법으로 우리는 트레이딩뷰에 있는 다양한 차트 기능과 지표 알고리즘을 사용하여 FMZ 퀀트 트레이딩 플랫폼의 전략 로봇과 협력하여 원하는 자동 거래를 달성할 수 있습니다. 트레이딩뷰에 있는 전략을 자바스크립트와 파이썬 언어로 포팅하는 어려움에 비해 어려움이 감소합니다.

시그널 모니터링을 통해 주문을 하는 로봇의 전략 코드는 학습 및 연구 용도로만 사용된다. 실제 봇의 사용은 미래에셋을 지원하기 위해 자체 최적화 및 조정되어야 한다. 시장 가격 주문 모드로 설정하는 것이 좋습니다. 자세한 내용은 전략 코드 매개 변수를 참조하십시오. 질문이나 제안이 있으시면 메시지를 남겨주세요.


관련

더 많은