Perdagangan sinyal alarm TradingView dilakukan dengan memperluas API platform perdagangan kuantitatif penemu (disarankan)

Penulis:Mimpi kecil, Dibuat: 2020-04-29 17:08:27, Diperbarui: 2023-10-08 19:56:04

img

Perdagangan sinyal alarm TradingView dilakukan dengan memperluas API platform perdagangan kuantitatif penemu

Link video dari stasiun B

Inventor Quantitative Trading Platform Extension API baru-baru ini ditingkatkan untuk mendukung mode akses langsung, sehingga dapat dengan mudah membuat sinyal peringatan TradingView yang dikirim ke Inventor Quantitative Trading Platform Robot untuk melakukan transaksi otomatis.

Inventor memperluas API untuk platform perdagangan kuantitatif

Link ke bagian yang terkait dengan dokumen Inventor API

Fungsi utama API ekstensi adalah untuk menyediakan antarmuka untuk berbagai fungsi pada platform perdagangan kuantitatif inventor yang dioperasikan secara terprogram, seperti memulai robot secara serentak, memulai, menghentikan robot secara berkala, membaca rincian informasi robot, dll. Kami menggunakan API ekstensi platform perdagangan kuantitatif inventor untuk melakukan perdagangan sinyal peringatan Inventor TradingView.CommandRobot(RobotId, Cmd)Sebuah antarmuka yang dapat mengirim instruksi interaksi ke robot dengan ID yang ditentukan, dan robot dapat melakukan tindakan yang sesuai (misalnya, membeli, menjual, dll.) setelah menerima instruksi.

Untuk menggunakan ekstensi API, Anda harus membuat akun penemu Anda sendiri.API KEY: img API KEYKunci Rahasiaaccess keydansecret keyPeraturan PresidenAPI KEYIni berarti bahwa program yang digunakan oleh penemu kunci untuk menjumlahkan platform perdagangan, sehingga harus disimpan dengan baik dan tidak pernah bocor.API KEYAnda dapat mengatur kewenangan, seperti gambar di atas, hanya untuk ini.API KEYMemberikan aksesCommandRobot(RobotId, Cmd)Permit untuk antarmuka, untuk alasan keamanan dalam contoh ini, berikan ekstensi FMZ sajaAPI KEYBerikanCommandRobot(RobotId, Cmd)Permit akses untuk antarmuka.

Model akses langsung untuk API ekstensi

Modus akses langsung adalahAPI KEYMenulis secara langsung ke dalam query URL, misalnya URL untuk mengakses inventor Quantitative Trading Platform Extension API dapat ditulis sebagai berikut:

https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]

Di antaranya:https://www.fmz.com/api/v1Anda dapat menggunakan aplikasi ini untuk mengakses situs web Anda.?Setelah ituQuery, parameteraccess_keyContoh kunci rahasia yang diwakili dengan xxx (untuk mengisi akses_key akun FMZ Anda saat digunakan), parametersecret_keyKunci rahasia diindikasikan denganyyyy (secret_key), parametermethodIni adalah nama spesifik dari antarmuka API ekstensi yang akan diakses.argsUntuk digunakanmethodParameter antarmuka.

Kami menggunakan TradingView sebagai sumber sinyal untuk mengirim perintah perdagangan ke robot platform perdagangan kuantitatif penemu, yang sebenarnya hanya digunakan untuk trading.CommandRobotPerangkat ini memiliki fitur yang berbeda.

TradingView

Pertama, Anda harus memiliki akun tingkat TradingView Pro, tingkat dasar adalah tidak dapat menggunakan fitur WebHood dalam alarm.

img

Menambahkan indikator ke grafik, atau mungkin algoritma skrip lainnya. Di sini untuk memudahkan demonstrasi kami menggunakan yang paling umum digunakan.MACDIndikator, lalu atur siklus K-line untuk 1 menit (untuk memicu sinyal lebih cepat, untuk demonstrasi yang mudah).

img

Klik kanan pada grafik dan pilih "Tambahkan peringatan" di menu pop-up.

img

Setel di jendela pop-up "Alarm"WebHookPada tahap ini, kita dapat mengaktifkan robot yang memiliki sinyal pemantauan di sisi platform perdagangan yang diukur oleh penemu.

Robot dengan sinyal pemantauan

Kode sumber strategi:

// 全局变量
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)
    }
}

Kode Sumber Strategi

Kode strategi sangat sederhana, dapat dideteksi.GetCommandNilai yang dikembalikan oleh fungsi adalah bahwa ketika ada pesan interaktif yang dikirim ke program kebijakan,GetCommandFungsi ini akan mengembalikan pesan tersebut, dan kemudian program kebijakan akan melakukan tindakan perdagangan sesuai dengan isi pesan tersebut. Kebijakan ini telah diatur dengan tombol interaksi yang memungkinkan untuk menguji fungsi interaksi, seperti menjalankan kebijakan ini, dan memberikan robot konfigurasi inventor untuk menjumlahkan platform perdagangan.WexApp

img

Klik tombol interaktif untuk menguji kemampuan robot untuk menerima perintah pembelian.

img

Anda dapat melihat bahwa perintah yang diterima robot adalah:buy:0.01

Kita hanya perlu memicu peringatan TradingView, WebHook meminta URL untuk mengakses inventor untuk memperbesar API platform perdagangan.CommandRobotJika Anda ingin melihat apa yang Anda lakukan, Anda harus melihat apa yang Anda lakukan.buy:0.01Tidak ada yang salah.

Setel WebHook untuk TradingView

Kembali ke TradingView, kita mengisi URL WebHook.access_keysecret_keyParameter mengisi sendiriAPI KEYmethodYang pasti, kita hanya ingin mengunjungiCommandRobotPerangkat lunak ini memiliki fitur yang sangat baik.argsParameternya adalah[机器人ID,命令字符串]Di bawah ini adalah beberapa gambar yang dapat kita dapatkan langsung dari halaman bot:imgPada saat ini, ketika sinyalnya dipicu, kita membeli 0.02 koin, dan perintah stringnya adalah:"buy:0.02"◦ Dengan demikian URL WebHook selesai. ◦ Cara ini hanya mendukung menulis sinyal ke dalam URL, jika Anda ingin mendapatkan konten dari pesan peringatan yang dapat dikeluarkan oleh kebijakan TV itu sendiri, lihathttps://www.fmz.com/api#直接验证

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

Di TradingView, Anda dapat mengatur:

img

Tunggu sinyal untuk memicu... Tunggu sinyal untuk memicu... 等待信号触发.

img

Robot tersebut menerima sinyal:

img

Dengan demikian, Anda dapat menggunakan fitur grafik yang kaya di TradingView, algoritma indikator yang bekerja sama dengan robot strategi dari inventor untuk mengukur platform perdagangan, untuk mencapai perdagangan otomatis yang Anda inginkan, dibandingkan dengan memindahkan strategi di TradingView ke JavaScript, bahasa Python.

"Monitoring Robot Under Signal" kode strategi hanya untuk penelitian pembelajaran, penggunaan real-time membutuhkan penyesuaian yang dioptimalkan sendiri, mendukung berjangka, disarankan untuk mengatur ke mode harga pasar tunggal, untuk detail parameter kode strategi. Jika Anda memiliki pertanyaan, silakan klik tanda kutip, dan sarankan untuk meninggalkan komentar.


Berkaitan

Lebih banyak

pw1013Jika Anda bisa, silakan hubungkan saya ke bursa deepcoin, terima kasih.

Mingxi1005Ketika penemu dapat mencocokkan mata uang dan memenangkan kontrak berjangka?

Mingxi1005Ketika penemu dapat mencocokkan mata uang dan memenangkan kontrak berjangka?

tersenyumAnda baik-baik saja, strategi kontrak yang saya lakukan, setelah membuka posisi kadang-kadang akan naik di tengah, jadi ketika saya akhirnya ingin naik, bagaimana cara meratakan semua posisi dengan cover_long (karena tidak tahu berapa kali tengah akan naik), apa yang berubah menjadi 1 dalam "cover_long:1", berlutut kode

tyk950115Pesan strategi TV saya adalah: order {{strategy.order.action}} @{{strategy.order.contracts}} transaksi {{ticker}}; posisi strategi baru {{strategy.position_size}} Jika saya ingin membuat kontrak, apakah saya harus menambahkan empat peringatan? Apakah webhook dapat mengutip kolom di dalam kebijakan? Atau apakah saya harus menulis mati? Bagaimana 4 cara di webhook long, cover_long\short, cover_short untuk mencocokkan pesan di dalam peringatan?

Kuantitas KecilSaya ingin mengirim teks berita tv juga, sayangnya tidak bisa dibawa, hanya url yang dapat membawa parameter, bukan untuk informasi tradingview.

NingPertanyaan: [1234567, "buy:50"] Ini adalah BTC yang dibeli seharga 50 USD, dan ini adalah Bitcoin yang dibeli seharga 50 USD. Tapi ketika saya menjual, [1234567, "sell: 50"] muncul kesalahan: Sell ((-1, 50): insufficient balance. Jadi bagaimana saya mengaturnya agar saya bisa menjual semua BTC yang saya beli pertama kali?

WqyIni sangat berguna!

LanganHalo, saya telah mengikuti langkah-langkah Anda, server yang dipilih adalah server yang dibawa oleh penemu, tetapi TV itu sudah mengirimkan sinyal, tetapi robot di sisi penemu masih tidak melakukan perintah sinyal, apakah itu karena server?

TnmmhIni sangat bagus. Perlahan-lahan.

Kembali ke Q/upload/asset/19a5ed382b58652c4dd19.png /upload/asset/19b0ea9ffa5100a3594f3.png /upload/asset/19a806e32e9b589696fa0.png /upload/asset/19a5005173219393cf2d9.png Mengapa kode kontrak yang saya tambahkan di bawah langkah-langkah ini masih menunjukkan kesalahan, apakah itu langkah yang salah?

wuxianJika ada instruksi untuk membuka, menambah, atau meratakan beberapa kolom kosong dalam kebijakan tv, apakah ini akan dilakukan berdasarkan petunjuk dalam kebijakan tv?

PY008Apa yang ditulis dalam kode kontrak berjangka?.

melo23Di mana video tutorial untuk futures?

Sug210Apakah Binance Futures Tidak Mendukung?

YuanlijieBagaimana dengan kontraknya? Programmer kecil, tidak tahu bahasa Inggris kecuali huruf ejaan.

MikelslDia mengatakan, "Saya tidak tahu apa yang akan terjadi, tapi saya pikir itu akan terjadi".

SkyfffireIni adalah langkah yang sangat bagus dan sangat sederhana.

khotbahSangat bagus.

pw1013Saya bertanya kepada pemilik tentang apa yang terjadi dengan Anda.

Hexiao49Saya punya pertanyaan di komunitas saya, apakah ada yang bisa membantu saya?

Mimpi kecilTidak ada yang bisa dilakukan tanpa API.

Hexiao49Deep sendiri tidak memiliki koneksi api?

Mimpi kecilIni tergantung pada berapa banyak pengguna yang membutuhkan.

Mimpi kecilIni adalah strategi yang harus diubah secara khusus, bukan satu atau dua kalimat yang dapat dicapai. FMZ mendukung bahasa PINE secara langsung, dan menjalankan skrip PINE secara langsung lebih mudah.

Mingxi1005Guru: Saya ingin menambahkan fungsi stop loss pada robot yang Anda publikasikan, dimana saya ingin menambahkannya?

Mimpi kecilYa, saya juga bertanya kepada layanan pelanggan mereka, untuk membasmi API yang tidak dikontrak.

Mingxi1005Itu tidak mungkin.

Mimpi kecilIni adalah antarmuka API langsung, bos! #_#! FMZ sudah mendukung layanan ini.

Mingxi1005https://www.coinw.fit/front/API Situs ini memiliki API, Anda harus menggunakan tangga untuk membuka /upload/asset/2986424014eb005f8cda2.png

Mingxi1005https://www.coinw.fit/front/API Situs web ini memiliki API, Anda harus menggunakan tangga untuk membuka

Mimpi kecilAlamat ini tidak dapat dibuka. Tidak ada dokumen API yang dikontrak.

Mingxi1005Link untuk masuk ke API: https://coinw.pw/API

Mimpi kecilIni adalah API langsung dari coinw, coinw FMZ sudah didukung, mereka tidak memiliki antarmuka kontrak. Anda sebaiknya berkonsultasi dengan coinw. Saya bertanya kepada layanan pelanggan mereka dan mereka mengatakan tidak ada API kontrak.

Mingxi1005Apakah kita bisa mengikatnya sendiri dengan protokol umum? hanya meminta untuk mengisi alamat IP, alamat IP mana yang akan diisi? Link untuk masuk ke API: https://coinw.pw/API

Mimpi kecilSaya merasa malu, apakah Anda yakin bahwa kontrak Bitcoin memiliki antarmuka API?

Mingxi1005Ya, guru, jika Anda mengakses, akan ada banyak akses kuantitatif karena uang Anda akan mendapatkan komisi 80%.

Mimpi kecilHalo, apakah Anda membutuhkan kontrak untuk mendapatkan akses ke bursa ini?

Dua, dua, dua.Apakah Anda sudah menyelesaikan masalah ini? Saya juga mengalami masalah ini.

LanganSaudara, apakah Anda berhasil dengan strategi TV yang menghubungkan langsung FMZ? Jika Anda bisa membimbing saya, saya akan melakukannya atau tidak!

Mimpi kecilAnda dapat mengubahnya menjadi cover_long:all, sehingga Anda dapat memodifikasi cover_long interaksi yang Anda terima di FMZ, dan memutuskan jika semua, maka semuanya sejajar. Untuk mencapai ini, Anda harus mengubah kebijakan ini. `` Variabel global var BUY = "buy" // Perhatikan: perintah untuk pembelian langsung var SELL = "sell" // Perintah untuk digunakan langsung var LONG = "long" // Perintah untuk berjangka var SHORT = "short" // Perintah untuk berjangka var COVER_LONG = "cover_long" // Perintah untuk berjangka var COVER_SHORT = "cover_short" // Perintah untuk berjangka Saya tidak tahu. Apa yang terjadi? Apa yang kau lakukan? Saya tidak tahu. } 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 (untuk dijual) tradeInfo = IsMarketOrder? exchange.Sell ((-1, amount)): exchange.Sell ((ticker.Buy, amount) } else if (action == COVER_LONG) { // COVER_LONG adalah cover_long , menentukan apakah ini adalah action, masukkan if di sini Di sini Anda lebih spesifik menentukan parameter seperti all, untuk melakukan desain operasi semua flatbed, menulis secara spesifik exchange.SetDirection (("closebuy") tradeInfo = IsMarketOrder? exchange.Sell ((-1, amount)): exchange.Sell ((ticker.Buy, amount) } else if (action == COVER_SHORT) { jika (aksi == COVER_SHORT) exchange.SetDirection (dalam bahasa Inggris: "closesell") tradeInfo = IsMarketOrder? exchange.Buy ((-1, amount)): exchange.Buy ((ticker.Sell, amount) } lainnya { Log (("Bursa berjangka tidak mendukung!", "#FF0000") Aku tidak tahu. Jika (tradeInfo) { Log (("tradeInfo:" tradeInfo) Aku tidak tahu. } lainnya { throw "eType error, eType:" + eType Aku tidak tahu. acc = _C (exchange.GetAccount) Aku tidak tahu. ``

yidaiApakah Anda sudah menyelesaikan pertanyaan Anda?

Mimpi kecilSaat ini, banyak orang yang tidak tahu apa yang akan terjadi di masa depan, tetapi mereka tidak tahu apa yang akan terjadi.

Beiyeargs=[191755, "buy:0.02"], di sini menambahkan parameter, melakukan lebih banyak hal sekaligus dapat dilakukan kosong juga bisa dihilangkan salah satu parameter akan lebih baik?

Mimpi kecilUntuk menerima permintaan TV menggunakan FMZ's Extension API, Anda dapat mengakses konten Body, lihat: https://www.fmz.com/api# Saat ini, data dalam body dapat diterima dari url permintaan TV.

1131717062Silahkan tanya bagaimana cara membangun peringatan perdagangan terbuka di tv, strategi, webhook url

Mimpi kecilUntuk menerima permintaan TV menggunakan API ekstensi FMZ, Anda dapat mengakses konten Body, lihat: https://www.fmz.com/api#%E7%9B%B4%E6%8E%A5%E9%AA%8C%E8%AF%81

Kuantitas Kecil https://www.fmz.com/strategy/221850,看到了,感谢大神!!

Mimpi kecilAda cara yang mudah untuk mendapatkan informasi di Body yang diminta dengan mencari di Strategy Square.

Mimpi kecilJika Anda tidak memiliki uang, Anda tidak akan memiliki uang.

Mimpi kecilJika perintah diterima, tombol status robot akan muncul, dan tombol terakhir kali menerima perintah akan muncul. Periksa apakah tidak ada konfigurasi di bawah ini.

LanganDi sini, Anda dapat mengkonfigurasinya dengan mengkonfigurasinya secara langsung, tidak ada petunjuk yang muncul di log robot, dan TV hanya mengatur kondisi pemicu dan webhook, oke?

Mimpi kecilUntuk pertanyaan khusus, apakah bursa yang dikonfigurasi di robot Anda adalah bursa langsung, bursa berjangka?

Mimpi kecil/upload/asset/16afbca03eec23516d37.png Anda menambahkan salah sebuah bursa.

Mimpi kecil"Saya tidak tahu apa yang akan terjadi, tapi saya tahu apa yang akan terjadi", katanya.

Kembali ke Q/upload/asset/19aee891571def2a6c4f3.png Saya telah membuka semua hak API di Binance, saya juga telah membuka akun kontrak, tetapi strategi selalu tidak dapat menambahkan bursa berjangka saat berjalan, apakah itu masalah kode?

Mimpi kecilLog menunjukkan bahwa Binance menjelaskan bahwa objek pertukaran yang ditambahkan adalah Binance Cash. Namun, kebijakan Anda mengatur kode kontrak berjangka, sehingga memberikan kesalahan.

Mimpi kecilAnda perlu mengatur alarm di Trading view, dengan mengisi alamat webhook pada pengaturan alarm.

Mimpi kecilhttps://www.fmz.com/api#exchange.setcontracttype... Fungsi ini ada dalam deskripsi dan dapat dilihat di bawah ini.

Mimpi kecilDi awal artikel ini ada tautan.

melo23Stasiun B. Apa nama video ini?

Mimpi kecilFitur yang sama digunakan untuk futures spot, hanya saja mengganti parameter di dalam tautan. var BUY = "Beli" var SELL = "menjual" var LONG = "panjang" var SHORT = "pendek" var COVER_LONG = "cover_long" var COVER_SHORT = "cover_short" long adalah posisi multi-head, short adalah posisi multi-head, cover_long adalah multi-head flat, cover_short adalah posisi multi-head flat. `` https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[191755, "buy:0.02"] `` Jika Anda tidak ingin membeli, Anda harus mengganti link buy.

Mimpi kecilTambah dua alarm di TV. Satu yang murah dan satu yang kosong. TV dapat menambahkan N alarm.

Sug210Jika Anda ingin memiliki lebih dari satu set, yaitu setup sinyal cover_long:10 dan short:10, tetapi hanya satu sinyal yang dapat dieksekusi setelah setup di TV, bukankah itu akan hilang?

Mimpi kecilSemua bisa, futures adalah instruksi untuk futures, bukan sell buy. Lihat kode lebih lanjut.

Mimpi kecilKontrak pengaturan berjangka sudah berjalan, pada parameter strategi, selain itu, dalam url webhook yang dikonfigurasi di TV harus menggunakan perintah berjangka seperti long, cover_long.

Kunci986Itu adalah kode operasi untuk aset yang ditetapkan, jadi tanyakan kepada futures apakah mereka harus menulis ulang kode.

Mimpi kecilAda tutorial video yang bisa dilihat di sini, di stasiun B.