avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

만든 날짜: 2020-04-29 17:08:27, 업데이트 날짜: 2025-05-16 16:29:48
comments   104
hits   12185

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 경고 신호 거래를 구현합니다.

B 스테이션 비디오 링크

Inventor Quantitative Trading Platform 확장 API는 최근 직접 액세스 모드를 지원하도록 업그레이드되었습니다. 이를 통해 TradingView 알람 신호를 Inventor Quantitative Trading Platform 로봇으로 쉽게 전송하여 자동 거래를 실현할 수 있습니다. 아직도 확장 API가 무엇인지 모르시겠다면 자세히 설명해 드리겠습니다.

Inventor 양적 거래 플랫폼 확장 API

Inventor API 문서의 관련 부분에 대한 링크

확장 API의 주요 기능은 프로그래밍 방식으로 운영되는 발명가의 양적 거래 플랫폼에서 다양한 기능을 위한 인터페이스를 제공하는 것입니다. 예를 들어, 동시에 로봇을 일괄적으로 시작하고, 예약된 시간에 로봇을 시작 및 중지하고, 로봇 정보 세부 정보를 읽는 등의 기능을 제공합니다. 우리는 Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 경고 신호 거래를 구현합니다. 이 요구 사항은 API 확장만 필요합니다.CommandRobot(RobotId, Cmd)인터페이스는 지정된 ID를 사용하여 로봇에 대화형 지침을 보낼 수 있습니다. 로봇은 지침을 받은 후 해당 작업(예: 매수 또는 매도 주문)을 수행할 수 있습니다.

확장 API를 사용하려면 먼저 자신의 발명가 계정을 만들어야 합니다.API KEY: Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장) API KEY핵심은access key그리고secret key구성,API KEY이는 프로그램된 운영을 통해 발명된 양적 거래 플랫폼의 핵심이므로 적절히 보관하고 절대로 공개해서는 안 됩니다. FMZ 확장 프로그램 생성API KEY사용 시 권한을 지정할 수 있습니다.API KEY액세스 권한 부여CommandRobot(RobotId, Cmd)이 예에서는 보안상의 이유로 FMZ 확장 프로그램에만 권한을 부여합니다.API KEY부여하다CommandRobot(RobotId, Cmd)인터페이스에 대한 액세스 권한.

확장 API에 대한 직접 액세스 모드

직접 액세스 모드는 다음을 의미합니다.API KEYURL의 쿼리에 직접 쓰세요. 예를 들어, Inventor Quantitative 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 계정의 액세스 키를 입력하세요), 매개변수secret_key비밀 키는 yyyy로 표현되며 (사용 시 자신의 계정 secret_key를 입력하세요), 매개변수는 다음과 같습니다.method액세스할 확장 API 인터페이스의 구체적인 이름입니다.args부름을 받다method인터페이스의 매개변수.

우리는 TradingView를 신호 소스로 사용하여 발명가의 양적 거래 플랫폼 로봇에 거래 명령을 전송합니다.CommandRobot이 인터페이스.

TradingView

우선, TradingView Pro 계정이 필요합니다. 알람의 WebHood 기능은 Basic 레벨에서는 사용할 수 없습니다. TradingView에서 차트를 봅니다.

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

차트에 지표를 추가하고 다른 스크립트 알고리즘도 추가합니다. 여기서 우리는 가장 일반적으로 사용되는 것을 사용합니다MACD표시기를 선택한 다음 K-라인 주기를 1분으로 설정합니다(신호를 더 빨리 트리거하고 시연을 용이하게 하기 위해).

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

차트를 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 알림 추가를 선택합니다.

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

“알림” 팝업창에 설정WebHook이 단계에서는 서둘러 설정할 필요가 없습니다. 먼저 Inventor의 Quantitative Trading Platform에서 신호를 모니터링하는 로봇을 실행해 보겠습니다.

모니터링 신호 주문 로봇

전략 소스 코드:

// 全局变量
var BUY = "buy"     // 注意:现货用的命令
var SELL = "sell"   //      现货用的命令
var LONG = "long"   // 期货用的命令
var SHORT = "short" // 期货用的命令
var COVER_LONG = "cover_long"   // 期货用的命令
var COVER_SHORT = "cover_short" // 期货用的命令

function main() {
    // 清空日志,如不需要,可以删除
    LogReset(1)

    // 设置精度
    exchange.SetPrecision(QuotePrecision, BasePrecision)

    // 识别期货还是现货
    var eType = 0
    var eName = exchange.GetName()
    var patt = /Futures_/
    if (patt.test(eName)) {
        Log("添加的交易所为期货交易所:", eName, "#FF0000")
        eType = 1
        if (Ct == "") {
            throw "Ct 合约设置为空"
        } else {
            Log(exchange.SetContractType(Ct), "设置合约:", Ct, "#FF0000")
        }
    } else {
        Log("添加的交易所为现货交易所:", eName, "#32CD32")
    }
    
    var lastMsg = ""
    var acc = _C(exchange.GetAccount)
    while(true) {
        var cmd = GetCommand()
        if (cmd) {
            // 检测交互命令
            lastMsg = "命令:" + cmd + "时间:" + _D()
            var arr = cmd.split(":")
            if (arr.length != 2) {
                Log("cmd信息有误:", 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("现货交易所不支持!", "#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("期货交易所不支持!", "#FF0000")
                }
                if (tradeInfo) {
                    Log("tradeInfo:", tradeInfo)
                }
            } else {
                throw "eType error, eType:" + eType
            }
            acc = _C(exchange.GetAccount)
        }
        var tbl = {
            type : "table", 
            title : "状态信息", 
            cols : ["数据"], 
            rows : []
        }
        // tbl.rows.push([JSON.stringify(acc)])   // 测试时使用
        LogStatus(_D(), eName, "上次接收到的命令:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(1000)
    }
}

전략 소스 코드

전략 코드는 매우 간단합니다.GetCommand정책 프로그램에 대화형 메시지가 전송될 때 함수의 반환 값은 다음과 같습니다.GetCommand해당 함수는 이 메시지를 반환하고, 전략 프로그램은 메시지 내용에 따라 해당 거래 작업을 수행합니다. 이 전략에는 대화형 기능을 테스트할 수 있는 대화형 버튼이 설정되었습니다. 예를 들어, 이 전략을 실행하고 Inventor Quantitative Trading Platform의 시뮬레이션된 거래소로 로봇을 구성합니다.WexApp

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

상호작용 버튼을 클릭하여 로봇이 구매 명령을 받을 수 있는지 테스트해보세요.

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

로봇이 수신한 명령 문자열은 다음과 같습니다.buy:0.01

TradingView 알림이 트리거되면 WebHook 요청 URL이 Inventor Quantitative Trading Platform Extension API에 액세스할 수 있도록 해야 합니다.CommandRobot인터페이스를 사용할 때 전달되는 매개변수는 다음과 같습니다.buy:0.01다 그거죠.

TradingView의 WebHook 설정

TradingView로 돌아와서 WebHook의 URL을 입력합니다. 주다access_keysecret_key자신의 매개변수를 입력하세요API KEYmethod고정됨, 접근만 하면 됨CommandRobot이 확장된 API 인터페이스는args매개변수는 다음과 같습니다[机器人ID,命令字符串]그림과 같이 로봇 페이지를 통해 로봇 ID를 직접 얻을 수 있습니다. Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장) 이번에는 신호가 트리거되도록 하고 0.02 코인을 구매합니다. 명령 문자열은 다음과 같습니다."buy:0.02". 이것으로 WebHook URL이 완성되었습니다. 이 방법은 URL에 신호를 쓰는 것만 지원합니다. TV 전략 자체에서 발행할 수 있는 경고 메시지의 내용을 얻으려면 https://www.fmz.com/api#%E7%9B를 참조하세요. %B4%E6 %8E%A5%E9%AA%8C%E8%AF%81.

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

TradingView 설정:

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

신호가 나올 때까지 기다리는 중… 신호가 나올 때까지 기다리는 중.. 신호가 나올 때까지 기다립니다.

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

로봇은 다음 신호를 받았습니다:

Inventor Quantitative Trading Platform Extension API를 사용하여 TradingView 알람 신호 거래를 구현합니다(권장)

이런 방식으로 TradingView의 풍부한 차트 기능과 지표 알고리즘을 Inventor Quantitative Trading Platform의 전략 로봇과 함께 사용하여 원하는 자동화된 거래를 달성할 수 있습니다. TradingView의 전략을 JavaScript 및 Python 언어로 이식하는 것과 비교하면 난이도가 크게 낮아졌습니다.

“Monitoring Signal Order Robot”의 전략 코드는 학습 및 연구 전용입니다. 실제 사용을 위해서는 직접 최적화하고 조정해야 합니다. 선물 거래를 지원하며 시장 주문 모드로 설정하는 것이 좋습니다. 전략 코드를 참조하세요. 자세한 내용은 매개변수를 참조하세요. 이것은 단지 시작점일 뿐입니다. 질문이나 제안 사항이 있으면 메시지를 남겨주세요.