TradingViewWebHook 신호 실행 전략 (교육)

저자:작은 꿈, 2020-04-28 17:01:35
태그:연구무역 지원

관련 기사:https://www.fmz.com/bbs-topic/5533B 방송국 영상 링크:https://www.bilibili.com/video/BV1Wk4y1k7zz/

  • 2020.7.29 업데이트 SPK와 BPK 두 가지 지침을 추가하고, 각각 해당한다: 평상시 판매 후 빈 포지션을 판매하고, 평상시 구매 후 빈 포지션을 구매한다.

/*
- 交互命令字符串格式
  action:amount
  action: buy , sell , long , short , cover_long , cover_short, spk , bpk
- 交易所类型
  eType变量取值: 0 spot , 1 futures

- TV文档链接
  https://www.tradingview.com/pine-script-docs/en/v4/Quickstart_guide.html
  https://cn.tradingview.com/chart/8xfTuX7F/

- TV webhook 发送请求
  https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"action:amount"]

- 引用类库
  引用数字货币交易类库
*/

// 参数
// var IsMarketOrder = false 
// var QuotePrecision = 2
// var BasePrecision = 2

// 期货参数
// var Ct = ""


// 全局变量
var BUY = "buy"
var SELL = "sell"
var LONG = "long"
var SHORT = "short"
var COVER_LONG = "cover_long"
var COVER_SHORT = "cover_short"
var SPK = "spk"
var BPK = "bpk"


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 if (action == SPK) {   // 卖出平多仓,卖出开空仓
                    exchange.SetDirection("closebuy")
                    var tradeInfo1 = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                    exchange.SetDirection("sell")
                    var tradeInfo2 = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                    tradeInfo = [tradeInfo1, tradeInfo2]
                } else if (action == BPK) {   // 买入平空仓,买入开多仓
                    exchange.SetDirection("closesell")
                    var tradeInfo1 = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                    exchange.SetDirection("buy")
                    var tradeInfo2 = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                    tradeInfo = [tradeInfo1, tradeInfo2]
                } 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)
    }
}



관련

더 많은

수퍼온V:maybeyeah. V:maybeyeah. V:maybeyeah. V:maybeyeah.

zz791377920어떤 거래소를 지원합니까?

zz791377920즉석 거래의 숫자가 채워진 10, 주문할 때 금액이 10u로 변합니다.

제1'QuotePrecision'는 main에서 정의되지 않았습니다 (__FILE__:13)

쿠커즈계약 거래에 숫자를 설정할 수 있는지 물어보세요. 매번 거래가 가득하다면 어떻게 써야 할까요?

15937556103선생님, 계약에 대한 완전한 전략을 보내실 수 있나요?

15937556103/upload/asset/203b175e3c2c22ac9681c.png 왜 항상 그런가?

토비2022안녕하세요, 하나의 로봇에 여러 거래를 할 수 있습니까? 그러면 경고 URL에 거래 쌍의 이름을 추가하면 로봇이 여러 거래 쌍을 실행합니다. 경고

7마리long,short,cover_long,cover_SHORT,webhook을 각각 추가해야 하나요?

sbwffg198212이게 무슨 뜻이야? 선물 거래소가 지원하지 않아, 난 비엔인을 위한 상속 계약을 하고 싶어.

sbwffg198212이게 무슨 뜻이야? 선물 거래소가 지원하지 않아, 난 비엔인을 위한 상속 계약을 하고 싶어.

sbwffg198212/upload/asset/1cd7a606f646b8c0d32be.png

반 Q, 미래에 대한 계약의 추가 및 설정에 대한 교육 비디오를 게시 할 수 있습니까? 더 자세한 내용은 더 좋습니다.

수그210/upload/asset/125e8fed0f51ab1f8122e.jpg spk 명령어로 오류 보고

밤하늘어떻게 하면 TV가 경고를 보내고 FMZ가 가끔 신호를 받지 못하는 문제를 해결할 수 있을까요? 특히 TV의 두 가지 정책은 동시에 FMZ에 두 개의 로봇에게 신호를 보내고, 가끔은 한 로봇이 수신하지 않는 것을 가리킨다. 그리고 두 개의 TV 계정이 등록되어 전송을 하고 있지만 FMZ가 호스팅하는 서버는 동일하지만 여전히 문제가 발생할 수 있습니다. /upload/asset/1796a4b1725a66d015a9f.png /upload/asset/179cang7beaa5e8f9dd79cf.png

한반도는 춥지 않다spk, bpk 뒤에 숫자를 더해야 하나요? TV 신호가 여러 번 경보를 한 후에 여러 번 열면, 한 번에 평면 앞에 열 수있는 총 수, 빈 목록과 마찬가지로.

멜로23계약, 배수, 어디서 선택

작은 꿈정책 매개 변수를 살펴보면, 만약 당신이 선물 거래소 객체를 추가한다면, 계약을 설정해야 한다. 그렇지 않으면 로봇은 어떤 계약을 조작해야 할지 모른다.

리치안녕하세요. 왜 ct 계약이 빈 상태로 설정되었는지 상기시켜주세요.

작은 꿈TV의 웹후크 설정은 다양한 종류에 따라 변경될 수 있습니다.

작은 꿈현금 시가표의 구매, 다음 주문 금액은 금액입니다.

작은 꿈당신이 틀렸다고 추측합니다. API 문서를 확인해보세요.

제1다시 키를 바꾸면 안되나요? 전체 정책을 복사해서 조정해야 할까요?

작은 꿈코드 1은 잘못된 API 키입니다. 확인하세요.

제1현재 저는 플랫폼에서 테스트를 하고 있는데, 주문할 수 있지만, 확장 API를 통해 오류를 보고, 복귀합니다.

작은 꿈코드를 복사하지 말고 전체 전략을 복사하십시오.

작은 꿈TV가 전송하는 신호, 그 안에 얼마나 적혀 있는지, 전략이 얼마나 적혀 있는지.

작은 꿈이 전략 자체는 미래가 실행될 수 있는 완벽한 예입니다.

작은 꿈퓨처스를 실행할 수 있습니다. 웹후크 호출에서 사용하는 명령어가 잘못되었습니다. 퓨처스 명령어를 사용하려면 코드를 자세히 참조하십시오.

토비2022 好的,已经在众包板块发布了信息,期望你的成果和合作,thanks.

작은 꿈이것은 변경되지 않았으며, 개발자가 주문할 수 있는 정보들을 복합적으로 게시할 수 있습니다.

토비2022다른 사람들이 잠시 더 익숙해질 수 있기 때문에, 다른 사람들이 조금 더 익숙해 질 수 있기 때문에, 다른 사람들이 조금 더 익숙해 질 수 있기 때문에, 다른 사람들이 조금 더 익숙해 질 수 있기 때문에, 다른 사람들이 조금 더 익숙해 질 수 있기 때문에, 다른 사람들이 더 익숙해 질 수 있기 때문에, 다른 사람들이 더 익숙해 질 수 있기 때문에, 다른 사람들이 더 익숙해 질 수 있기 때문에, 다른 사람들이 더 익숙해 질 수 있기 때문에, 다른 사람들이 더 익숙해 질 수 있기 때문입니다.

작은 꿈이 플랫폼에는 크루저 (Browser) 영역이 있고, 그 안에서 요구사항을 게시할 수 있습니다.

토비2022@小小梦, 이런 전략을 수정할 수 있나요? 가능하다면, 물론 구매할 수 있습니다.

작은 꿈하지만 이 전략은 수정되어야 합니다.

작은 꿈저는 당신이 무슨 말을 하는지 잘 모르겠어요.

7마리저는 4개의 경고를 'long, short, coverlong, covershort'로 설정했습니다. 하지만 전략이 아니라'study'이기 때문에 4개의 명령은 항상 동시다발적으로 작동합니다.

7마리어떻게 구분할 수 있을까요?

작은 꿈알림 웹후크의 URL에서 구별할 수 있습니다.

7마리문제가 발견되었다. 트레이딩뷰 지표의 거래 알림을만 받을 수 있지만, 내가 쓴 전략은 4개의 다른 알림을 설정했지만, 인식이 불가능해 보입니다. 신호가 발생했을 때 4개의 신호가 동시에 열립니다.

작은 꿈TV에서 경보 요청 `` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "action:amount"] `` 이 부분의 본문은 "동작"입니다. 이 부분의 본문은 "동작"입니다. `` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "long:1"] ``

작은 꿈먼저 FMZ 초보 튜토리얼을 보시고, 선물 거래소 계정을 조작하고, 먼저 선물 거래소를 구성하고, 로봇에 선물 거래소 객체를 추가하십시오.

sbwffg198212/upload/asset/1ccc5603d54593dcba809.png

sbwffg198212저는 이 곳을 바꾸었습니다. 신이 저를 도와주세요. 제가 잘못된 것을 볼 수 있도록 도와주세요. 저는 선물 거래소 객체를 추가하지 않을 것입니다.

작은 꿈선물 거래소 객체를 추가하고, 매개 변수에서 계약을 설정하고, 영구적으로 교환하고, 화폐가치는 XXX_USD, U가치는 XXX_USDT이다.

작은 꿈SPK를 호출할 수 있는지 확인합니다.

작은 꿈FMZ 플랫폼 라이브러리에서 소개된 TV 다이렉트 방식은 https://www.fmz.com/digest-topic/5969에서 사용할 수 있습니다.

작은 꿈레버리지 레벨은 거래소에서 설정할 수 있습니다. 또는 전략 코드에서 주문하기 전에 레버리지 레벨을 설정할 수 있습니다.

작은 꿈계약 거래소를 운영하고 계약서를 설정하고, 그렇지 않으면 어떤 계약서를 운영해야할지 모릅니다.

작은 꿈`` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "action:amount"] `` action는 spk, bpk로 작성됩니다.

밤하늘SPK와 BPK, TV 쪽에서 어떻게 설정하는지 알고 싶습니다.