TradingViewWebHook chiến lược thực hiện tín hiệu (đào tạo)

Tác giả:Giấc mơ nhỏ, Ngày: 2020-04-28 17:01:35
Tags:Nghiên cứuĐược hỗ trợ thương mại

Bài viết liên quan:https://www.fmz.com/bbs-topic/5533Đường B: Đường B:https://www.bilibili.com/video/BV1Wk4y1k7zz/

  • Bản cập nhật ngày 29.7.2020 Thêm SPK, BPK hai chỉ thị, tương ứng: bán bán không bán sau khi bán nhiều và mua không mua sau khi mua nhiều.

/*
- 交互命令字符串格式
  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)
    }
}



Có liên quan

Thêm nữa

superonTôi đã xem một đêm và không hiểu, có thể viết lại không?

zz791377920Những sàn giao dịch nào được hỗ trợ?

zz791377920Số lượng giao dịch hiện tại được điền là 10, và số tiền đặt hàng trở thành 10u, đó là vấn đề thiết lập ở đâu?

Phong trào 1ReferenceError: 'QuotPrecision' is not defined at main (__FILE__:13)

thằng nhócBạn có thể đặt số lượng trong giao dịch hợp đồng, bạn có thể đặt số lượng trong giao dịch hợp đồng, bạn có thể đặt số lượng trong giao dịch hợp đồng.

15937556103Giáo viên có thể gửi một chiến lược đầy đủ về hợp đồng không?

15937556103/upload/asset/203b175e3c2c22ac9681c.png Tại sao mọi thứ luôn như vậy?

Tobey2022Hi, bạn có thể đặt nhiều giao dịch trên một robot? sau đó báo trước URL của các giao dịch được thêm vào tên của các cặp giao dịch, một robot chạy nhiều cặp giao dịch báo trước

7 thánglong,short,cover_long,cover_SHORT, có nên thêm webhook riêng biệt không?

Sbwffg198212Điều đó có nghĩa là gì, sàn giao dịch tương lai không hỗ trợ, tôi muốn thực hiện các hợp đồng vĩnh cửu của Bitcoin BTC_USDT

Sbwffg198212Điều đó có nghĩa là gì, sàn giao dịch tương lai không hỗ trợ, tôi muốn thực hiện các hợp đồng vĩnh cửu của Bitcoin BTC_USDT

Sbwffg198212/upload/asset/1cd7a606f646b8c0d32be.png

Quay ngượcAnh bạn, bạn có thể xuất bản một video hướng dẫn về cách thêm và thiết lập hợp đồng tương lai, tốt hơn là nói chi tiết hơn không?

su210/upload/asset/125e8fed0f51ab1f8122e.jpg thông báo lỗi với lệnh spk

Bầu trời đêmLàm thế nào để giải quyết vấn đề TV phát ra cảnh báo, FMZ đôi khi không nhận được tín hiệu? Đặc biệt là hai chính sách của TV phát ra tín hiệu cho hai robot FMZ cùng một lúc, đôi khi một robot không nhận được. Và đã đăng ký hai tài khoản TV để gửi, vấn đề vẫn xảy ra, mặc dù máy chủ được FMZ lưu trữ là cùng một.

Bán đảo không lạnhSpk, bpk, bạn muốn thêm số sau đó? Ví dụ như tín hiệu TV có nhiều lần báo động nhiều lần, có thể mở nhiều lần trước một lần, giống như danh sách trống.

melo23Thỏa thuận số nhân chọn ở đâu

Giấc mơ nhỏNhìn vào các tham số chính sách, nếu bạn thêm một đối tượng giao dịch tương lai, hãy thiết lập hợp đồng. Nếu không, robot sẽ không biết phải vận hành hợp đồng nào.

Richie.Xin chào, xin nhắc nhở lỗi tại sao ct contract được đặt trống?

Giấc mơ nhỏTất cả đều có thể, nhưng các tham số, thiết lập webhook trên TV có thể phải được điều chỉnh tùy thuộc vào loại làm.

Giấc mơ nhỏMột số người cho rằng, việc mua một đơn đặt hàng tại thị trường hiện tại là để mua một đơn đặt hàng theo số tiền.

Giấc mơ nhỏCó lẽ bạn đã làm sai điều đó, hãy kiểm tra tài liệu API của bạn.

Phong trào 1Có phải bạn phải sao chép toàn bộ chính sách để điều chỉnh nó?

Giấc mơ nhỏCode 1 là API KEY sai, hãy kiểm tra.

Phong trào 1Bây giờ tôi thử nghiệm trong nền tảng là có thể đặt hàng, nhưng với một cuộc gọi mở rộng API báo lỗi, trả về, code:1, data: [], Tôi truy cập trực tiếp bằng liên kết, tương tự như trình duyệt mở liên kết

Giấc mơ nhỏKhông chỉ sao chép mã, sao chép toàn bộ chiến lược.

Giấc mơ nhỏNhững tín hiệu truyền hình được gửi đi, trong đó viết số lượng, chiến lược là bao nhiêu. Nếu bạn muốn hip hop, bạn cần phải thay đổi chiến lược.

Giấc mơ nhỏĐây chính là một ví dụ hoàn hảo về việc chạy hợp đồng tương lai, bạn đã sử dụng lệnh sai, hãy kiểm tra.

Giấc mơ nhỏCó thể chạy tương lai, lệnh bạn sử dụng trong webhook gọi lại là sai, hãy sử dụng lệnh tương lai, hãy xem kỹ mã.

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

Giấc mơ nhỏĐiều này không được thay đổi, thông tin có thể được đăng tải trên các nền tảng đa phương tiện, và một số nhà phát triển sẽ nhận đơn.

Tobey2022Bạn có thể gửi cho bạn một bản sửa đổi trực tiếp không?

Giấc mơ nhỏTrong khi đó, một số người dùng khác cũng có thể đăng tải yêu cầu của mình trên nền tảng này.

Tobey2022@Chú nhỏ, bạn có thể thay đổi một phiên bản chiến lược như vậy không, nếu có thể, tất nhiên bạn có thể trả tiền để mua, mong đợi kết quả và phản hồi của bạn, cảm ơn.

Giấc mơ nhỏCó thể, nhưng cần phải thay đổi chiến lược này.

Giấc mơ nhỏTôi không hiểu ý anh ấy là gì.

7 thángTôi đã thiết lập bốn cảnh báo theo cách long, short, coverlong, covershort, nhưng vì chính nó là chiến lược chứ không phải là nghiên cứu, bốn lệnh đều được kích hoạt cùng một lúc...

7 thángLàm thế nào để phân biệt?

Giấc mơ nhỏBạn có thể phân biệt từ URL của webhook cảnh báo.

7 thángMột vấn đề được phát hiện, chỉ có thể nhận được các cảnh báo giao dịch của chỉ số tradingview, nhưng tôi đã viết chiến lược, thiết lập 4 cảnh báo khác nhau, nhưng dường như không thể nhận ra, khi tín hiệu được tạo ra, bốn tín hiệu được mở cùng một lúc.

Giấc mơ nhỏĐơn xin cảnh báo trên TV `` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "action:amount"] `` Trong đó action là nơi bạn viết lệnh gì, robot sẽ nhận lệnh gì. Ví dụ: `` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "long:1"] ``

Giấc mơ nhỏTrước tiên, hãy xem hướng dẫn ban đầu của FMZ, để vận hành tài khoản giao dịch tương lai, cấu hình giao dịch tương lai trước. Sau đó thêm đối tượng giao dịch tương lai vào robot.

Sbwffg198212/upload/asset/1ccc5603d54593dcba809.png

Sbwffg198212Tôi chỉ thay đổi những nơi này, Chúa cho tôi thấy những nơi không đúng, tôi sẽ không thêm đối tượng giao dịch tương lai, đặt hợp đồng trên các tham số, vĩnh viễn là swap, giá trị tiền tệ là XXX_USD, giá trị U là XXX_USDT.

Giấc mơ nhỏThêm đối tượng giao dịch tương lai, đặt hợp đồng trên các tham số, vĩnh viễn là swap, giá trị tiền tệ là XXX_USD, giá trị U là XXX_USDT.

Giấc mơ nhỏHãy kiểm tra xem bạn có gọi SPK mà không cần lưu trữ không.

Giấc mơ nhỏCó thể sử dụng các phương thức trực tiếp truyền hình được giới thiệu trong thư viện nền tảng FMZ, http://www.fmz.com/digest-topic/5969.

Giấc mơ nhỏĐặt mức độ dẫn dắt trên sàn giao dịch. hoặc đặt mức độ dẫn dắt trước khi đặt hàng trong mã chiến lược.

Giấc mơ nhỏNếu bạn chạy một sàn giao dịch hợp đồng, bạn sẽ thiết lập một hợp đồng, nếu không bạn sẽ không biết phải vận hành hợp đồng nào.

Giấc mơ nhỏ`` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "action:amount"] `` action được viết thành spk, bpk

Bầu trời đêmTôi muốn biết cách thiết lập cho SPK và BPK, bên TV.