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

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 쪽에서 어떻게 설정하는지 알고 싶습니다.