Strategi pelaksanaan isyarat TradingViewWebHook

Penulis:Mimpi kecil, Tarikh: 2020-04-28 17:01:35
Tag:KajianDibantu Perdagangan

Artikel berkaitan:https://www.fmz.com/bbs-topic/5533Link video stesen B:https://www.bilibili.com/video/BV1Wk4y1k7zz/

  • 2020.7.29 dikemas kini Tambah SPK, BPK dua arahan, masing-masing: menjual kedudukan kosong selepas menjual kedudukan kosong dan membeli kedudukan kosong selepas membeli kedudukan terbuka.

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



Berkaitan

Lebih lanjut

superonJika anda tidak faham, bolehkah anda menulis semula? Hubungi V: maybeyeah

zz791377920Pertukaran mana yang disokong oleh ini?

zz791377920Jumlah transaksi segera yang diisi 10, apabila anda membuat pesanan menjadi jumlah 10u, di mana ini adalah masalah tetapan?

Yang Mulia 1.ReferenceError: 'QuotePrecision' is not defined at main (__FILE__:13)

KukerzzzTanyakan kepada saya, adakah hanya boleh menetapkan jumlah dalam transaksi kontrak, bagaimana untuk menulis jika setiap kali perdagangan penuh?

15937556103Adakah guru boleh menghantar strategi lengkap mengenai kontrak?

15937556103/upload/asset/203b175e3c2c22ac9681c.png Kenapa selalu begini?

Tobey2022Hi, bolehkah anda meletakkan beberapa transaksi pada bot tunggal? kemudian URL amaran menambah nama pasangan urus niaga, sebuah bot menjalankan beberapa pasangan urus niaga amaran

le7mareslong,short,cover_long,cover_SHORT, adakah anda ingin menambahkan webhook secara berasingan?

Sbwffg198212Apa maksudnya, pertukaran niaga hadapan tidak menyokong, saya mahu membuat kontrak kekal Bitcoin BTC_USDT bagaimana untuk menetapkan

Sbwffg198212Apa maksudnya, pertukaran niaga hadapan tidak menyokong, saya mahu membuat kontrak kekal Bitcoin BTC_USDT bagaimana untuk menetapkan

Sbwffg198212/upload/asset/1cd7a606f646b8c0d32be.png

Ke arah QAbang, bolehkah anda mengeluarkan video pengajaran mengenai cara menambah dan menetapkan kontrak niaga hadapan, dengan lebih terperinci?

gula210/upload/asset/125e8fed0f51ab1f8122e.jpg dengan arahan spk

Langit malamBagaimana untuk menyelesaikan masalah bahawa TV menghantar amaran dan FMZ kadang-kadang tidak menerima isyarat? Khususnya, dua dasar TV menunjukkan isyarat kepada dua bot FMZ pada masa yang sama, kadang-kadang satu bot tidak menerima. Masalah ini masih berlaku walaupun dua akaun TV telah didaftarkan untuk menghantar, walaupun pelayan yang dihoskan FMZ adalah sama.

Semenanjung tidak sejukspk, bpk, nak tambah nombor selepas spk? Jika isyarat TV mempunyai beberapa kali penggera banyak pesanan, jumlah keseluruhan pesanan yang boleh dibuka di hadapan sewaktu-waktu, sama seperti senarai kosong. Bagaimana kod ditulis?

melo23Kontrak, Ganda Di mana untuk memilih

Mimpi kecilLihat parameter dasar, jika anda menambah objek bursa niaga hadapan, anda perlu menetapkan kontrak. Jika tidak, robot tidak tahu kontrak mana yang akan dioperasikan.

Richie.Halo, mengapa anda tidak dapat mengesan ct kontrak kosong?

Mimpi kecilSemua boleh, tetapi tetapan webhook pada TV mungkin perlu disesuaikan mengikut jenis yang dilakukan.

Mimpi kecilDi samping itu, anda juga boleh membeli barang-barang yang mempunyai harga yang lebih rendah.

Mimpi kecilSaya rasa anda telah melakukan kesalahan, dan setelah memeriksa dokumentasi API anda, saya dapat melihat bahawa ia berfungsi dengan baik.

Yang Mulia 1.Adakah anda perlu menyalin keseluruhan dasar untuk menyesuaikan?

Mimpi kecilCode 1 adalah API KEY yang salah, periksa.

Yang Mulia 1.Sekarang saya menguji di dalam platform adalah boleh memesan, tetapi dengan panggilan API lanjutan, kesalahan akan dikembalikan, kod: 1, data: [], saya mengaksesnya secara langsung dengan pautan, serupa dengan pelayar membuka pautan

Mimpi kecilJangan hanya menyalin kod, menyalin keseluruhan strategi.

Mimpi kecilJika anda ingin menghayati, anda perlu mengubah strategi jika anda mahu menghayati.

Mimpi kecilStrategi ini sendiri adalah contoh yang sempurna, boleh menjalankan niaga hadapan, anda menggunakan perintah yang salah, periksa.

Mimpi kecilUntuk menjalankan masa hadapan, perintah yang anda gunakan dalam panggilan webhook anda adalah salah, gunakan perintah masa hadapan, lihat dengan teliti kod tersebut.

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

Mimpi kecilIni tidak diubah, anda boleh mengumpul maklumat di platform dan ada pembangun yang akan mengambilnya.

Tobey2022Bolehkah anda menghantar edisi kepada anda secara langsung? kerana orang lain mungkin sudah lama tidak tahu tentang edisi ini.

Mimpi kecilDi platform ini, terdapat platform yang boleh digunakan untuk mengunggah permintaan.

Tobey2022@cilcilom, bolehkah anda mengubah strategi seperti ini, jika boleh, sudah tentu anda boleh membayar untuk membelinya, dan mengharapkan hasil dan jawapan anda, terima kasih.

Mimpi kecilBoleh, tetapi strategi ini perlu diubah.

Mimpi kecilSaya tidak faham apa yang anda maksudkan.

le7maresSaya telah menetapkan empat amaran mengikut long, short, coverlong, covershort, tetapi kerana strategi itu sendiri bukan kajian, keempat arahan itu akan dihidupkan pada masa yang sama...

le7maresBagaimana untuk membezakan antara panjang dan pendek?

Mimpi kecilDi sini, anda boleh melihat URL webhook untuk memberi amaran.

le7maresMasalah telah dijumpai, hanya boleh menerima amaran perdagangan dari penunjuk tradingview, tetapi strategi yang saya tulis, yang menetapkan empat amaran yang berbeza, tetapi nampaknya tidak dapat dikenal pasti, apabila isyarat dihasilkan, empat isyarat dibuka pada masa yang sama.

Mimpi kecilPermintaan untuk memberi amaran di TV `` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "action:amount"] `` Di mana action adalah tempat anda menulis arahan apa, arahan apa yang robot terima; contohnya: `` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "long:1"] ``

Mimpi kecilLihat tutorial awal FMZ, untuk mengendalikan akaun bursa niaga hadapan, mula-mula sesuaikan bursa niaga hadapan. Kemudian tambah objek bursa niaga hadapan ke bot.

Sbwffg198212/upload/asset/1ccc5603d54593dcba809.png

Sbwffg198212Saya hanya mengubah tempat-tempat ini, Tuhan bantu saya melihat di mana yang salah, saya tidak akan menambah objek bursa niaga hadapan, parameter yang ditetapkan kontrak, kekal adalah swap, mata wang adalah XXX_USD, mata wang U adalah XXX_USDT.

Mimpi kecilTambah objek bursa niaga hadapan, atur kontrak pada parameter, kekal adalah swap, mata wang adalah XXX_USD, U adalah XXX_USDT.

Mimpi kecilPeriksa sama ada SPK dipanggil tanpa simpanan.

Mimpi kecilKaedah sambungan langsung TV yang boleh digunakan dalam pustaka platform FMZ, https://www.fmz.com/digest-topic/5969.

Mimpi kecilLeverage boleh ditetapkan di bursa. Atau setleverage sebelum anda membuat pesanan dalam kod strategi.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.SetMarginLevel.

Mimpi kecilJika anda menjalankan bursa kontrak, anda perlu membuat kontrak, jika tidak, anda tidak tahu kontrak apa yang akan anda gunakan.

Mimpi kecil`` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "action:amount"] `` action ditulis sebagai spk, bpk

Langit malamSaya ingin tahu bagaimana untuk menetapkan SPK dan BPK di TV.