Perdagangan isyarat amaran TradingView yang dilaksanakan dengan menggunakan API pengembangan platform dagangan kuantitatif pencipta (disyorkan)

Penulis:Mimpi kecil, Dicipta: 2020-04-29 17:08:27, Dikemas kini: 2023-10-08 19:56:04

img

Menggunakan platform perdagangan kuantiti pencipta untuk memperluas API untuk menjalankan perdagangan isyarat isyarat isyarat TradingView

Pautan video Stesen B

Inventor Quantitative Trading Platform Extension API baru-baru ini telah dinaik taraf dengan menyokong mode akses langsung, yang membolehkan anda dengan mudah membuat isyarat amaran TradingView yang dihantar kepada Inventor Quantitative Trading Platform bot untuk membuat perdagangan automatik. Jika rakan kongsi anda tidak tahu apa itu API Extension, dengar saya.

Pencipta Platform Perdagangan Kuantitatif

Pautan ke bahagian yang berkaitan dengan dokumen API Pencipta

Peranan utama API pembesar adalah untuk menyediakan antara muka kepada pelbagai fungsi di platform dagangan kuantitatif pencipta yang beroperasi secara berprogram, seperti memulakan bot secara serentak, memulakan, menghentikan bot secara berkala, membaca butiran maklumat bot, dan sebagainya. Kami menggunakan API pembesar platform dagangan kuantitatif pencipta untuk menjalankan API TradingView.CommandRobot(RobotId, Cmd)Antarmuka ini boleh menghantar arahan interaksi kepada bot yang telah menetapkan ID, dan robot menerima arahan untuk melakukan tindakan yang sesuai (seperti membuat pesanan, membeli, menjual, dan lain-lain).

Untuk menggunakan API pelanjutan, anda perlu membuat akaun pencipta anda sendiri.API KEY: img API KEYKunci Rahsiaaccess keydansecret keyPerkembangan,API KEYIni bermaksud bahawa pemberi kerja pemrograman mencipta kunci platform dagangan kuantitatif, jadi ia mesti disimpan dengan baik dan tidak pernah dibocorkan.API KEYJika anda ingin membuat perisian ini, anda boleh menetapkan keizinan, seperti gambar di atas, hanya untuk ini.API KEYPeruntukan AksesCommandRobot(RobotId, Cmd)Permits untuk antara muka, untuk alasan keselamatan dalam contoh ini, sila hanya berikan sambungan FMZAPI KEYMemberiCommandRobot(RobotId, Cmd)Hak akses kepada antara muka.

Mode akses langsung kepada API yang diperluaskan

Mod akses langsung bermaksudAPI KEYMenulisnya secara langsung ke dalam query URL, contohnya URL untuk mengakses API pelanjutan platform perdagangan kuantitatif pencipta boleh 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/v1Ini adalah alamat antara muka.?Selepas ituQuery, parameteraccess_keyContoh kunci rahsia yang ditunjukkan dengan xxx (untuk memasukkan akses_key akaun FMZ anda sendiri ketika digunakan), parametersecret_keyKunci rahsia dilambangkan denganyyyy (untuk mengisi akaun anda sendiri apabila digunakan), parametermethodNama yang digunakan ialah nama API sambungan yang ingin diakses.argsUntuk dipanggilmethodParameter antara muka.

Kami menggunakan TradingView sebagai sumber isyarat untuk menghantar arahan dagangan kepada robot platform dagangan kuantiti pencipta, yang sebenarnya hanya digunakan untuk membuat pesanan dagangan.CommandRobotPerkhidmatan ini adalah mudah digunakan.

TradingView

Pertama anda perlu mempunyai akaun peringkat TradingView Pro, tahap asas adalah tidak dapat menggunakan fungsi WebHood dalam amaran.

img

Menambah satu penunjuk ke carta, atau mungkin algoritma skrip lain. Untuk memudahkan demonstrasi, kami menggunakan yang paling biasa digunakanMACDPenunjuk, dan kemudian menetapkan kitaran K-line untuk 1 minit (untuk memicu isyarat lebih cepat, mudah ditunjukkan).

img

Klik kanan pada carta dan pilih "Tambah amaran" di menu yang muncul.

img

Tetapan dalam tetingkap "Peringatan"WebHookPada tahap ini, kita boleh menghidupkan robot yang memantau isyarat di sisi platform dagangan, tanpa perlu membuat persediaan tergesa-gesa.

Robot pengendalian isyarat tunggal

Kod 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)
    }
}

Kod sumber strategi

Kod strategi adalah sangat mudah, pengesanan.GetCommandNilai pulangan fungsi apabila ada mesej interaksi yang dihantar kepada program dasar.GetCommandFungsi akan mengembalikan mesej ini, dan kemudian program dasar akan membuat tindakan dagangan yang sesuai berdasarkan kandungan mesej. Tombol interaksi telah ditetapkan pada dasar untuk menguji fungsi interaksi, seperti menjalankan dasar ini, memberikan robot yang disesuaikan dengan pencipta untuk mengukur platform dagangan analog.WexApp

img

Klik butang interaksi untuk menguji keupayaan bot untuk menerima arahan pembelian.

img

Pada masa yang sama, anda boleh melihat strings arahan yang diterima oleh bot adalah:buy:0.01

Apabila kita hanya perlu mencetuskan amaran TradingView, WebHook meminta URL untuk mengakses pencipta untuk mengukur API pelanjutan platform dagangan.CommandRobotApabila anda menggunakan interface, parameter yang anda bawa adalahbuy:0.01Tidak, tidak, tidak.

Tetapkan WebHook untuk TradingView

Kembali ke TradingView, kita mengisi URL WebHook.access_keysecret_keyParameter mengisi sendiriAPI KEYmethodKami hanya ingin melawat.CommandRobotIni adalah antara antara yang paling popular di Malaysia.argsParameter ialah[机器人ID,命令字符串]Dalam bentuk, ID bot yang boleh kita dapatkan secara langsung melalui halaman bot, seperti di bawah:imgPada kali ini, apabila isyarat itu diaktifkan, kita membeli 0.02 sen, dan perintah baris adalah:"buy:0.02"◦ Dengan cara ini URL WebHook selesai. Cara ini hanya menyokong penulisan isyarat di dalam URL, jika anda ingin mendapatkan kandungan dari mesej amaran yang dikeluarkan oleh dasar 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"]

Seting dalam TradingView:

img

Tunggu isyarat... Tunggu isyarat... 等待信号触发.

img

Robot itu menerima isyarat:

img

Dengan cara ini, anda boleh menggunakan ciri grafik yang kaya di TradingView, algoritma penunjuk yang bekerjasama dengan bot strategi platform pencipta untuk mengukur perdagangan, untuk mencapai perdagangan automatik yang anda mahukan, berbanding dengan memindahkan strategi di TradingView ke JavaScript, bahasa Python.

Kod strategi "Monitoring Robot Under Signal" hanya untuk kajian pembelajaran, penggunaan sebenar memerlukan penyesuaian yang dioptimumkan sendiri, menyokong niaga hadapan, disyorkan untuk menetapkan mod harga pasaran, lihat parameter kod strategi yang lebih lanjut. Jika anda mempunyai sebarang soalan, sila rujuk di bawah, dan selamat datang untuk meninggalkan komen.


Berkaitan

Lebih lanjut

pw1013Bolehkah anda menghubungi pertukaran deepcoin, terima kasih banyak.

Mingxi1005Bilakah pencipta boleh menjumpai mata wang dan memenangi kontrak niaga hadapan?

Mingxi1005Bilakah pencipta boleh menjumpai mata wang dan memenangi kontrak niaga hadapan?

tersenyumAnda tahu, strategi kontrak yang saya buat, kadang-kadang selepas membuka perdagangan, perdagangan akan meningkat di tengah-tengah, jadi apabila saya akhirnya mahu mengimbangi, bagaimana untuk meratakan semua kedudukan dengan cover_long (kerana tidak tahu pertengahan akan bertambah beberapa kali), apa yang diubah menjadi 1 dalam "cover_long:1", berlutut untuk kod

tyk950115Mesej strategi TV saya adalah seperti ini: pesanan {{strategy.order.action}}@{{strategy.order.contracts}} bertukar {{ticker}}; kedudukan strategi baru {{strategy.position_size}} Jika saya mahu membuat kontrak, adakah saya perlu menambah empat amaran? Adakah webhook boleh merujuk kepada bidang dalam dasar? atau adakah saya perlu menulis mati? Apakah 4 cara dalam webhook long, cover_long\short, cover_short untuk berhubung dengan mesej dalam amaran?

Kuantiti KecilSaya ingin menghantar teks berita tv juga, tetapi saya tidak boleh membawa, hanya url yang boleh membawa parameter, bukan untuk maklumat tradingview.

NingPermintaan: [1234567, "buy:50"] Ini adalah pembelian BTC bernilai 50 USD, dan ini adalah harga yang lebih rendah daripada harga yang ditawarkan oleh bank asing. Tetapi apabila saya menjual, [1234567, "sell: 50"] menunjukkan kesalahan: Sell ((-1, 50): insufficient balance. Jadi bagaimana saya boleh menyiapkan untuk menjual semua BTC yang saya beli pada kali pertama?

wqyIni sangat berkesan!

LanganHai cikgu, saya telah mengambil langkah demi langkah seperti yang anda tunjukkan, iaitu pelayan yang dipilih adalah pelayan yang dibawa oleh pencipta, tetapi TV itu sudah memberi isyarat tetapi robot di pihak pencipta masih tidak melaksanakan perintah isyarat, adakah kerana pelayan? sila jawab!

TnmmhmBagus, pelan-pelan koleksi.

Ke arah Q/upload/asset/19a5ed382b58652c4dd19.png /upload/asset/19b0ea9ffa5100a3594f3.png /upload/asset/19a806e32e9b589696fa0.png /upload/asset/19a5005173219393cf2d9.png Mengapa kod kontrak yang saya tambahkan mengikut langkah masih menunjukkan kesalahan, adakah langkah itu salah?

WuxianSebagai contoh, jika anda mempunyai arahan untuk membuka, menambah, atau meletakkan banyak kepala kosong dalam dasar tv, adakah ini akan dilakukan mengikut petunjuk dalam dasar tv?

PY008Apa yang ditulis dalam kod kontrak niaga hadapan?.

melo23Di mana tutorial video untuk niaga hadapan?

gula210Adakah niaga hadapan Binance tidak disokong?

YuanlijieBagaimana nak buat kontrak? Programmer kecil, tidak faham bahasa Inggeris kecuali huruf ejaan.

MichaelDi samping itu, ia juga boleh menyebabkan kesan negatif pada kulit.

SkyfffireSatu langkah yang hebat dan ringkas.

Khotbahhebat.

pw1013Saya bertanya kepada pemilik kandungan tentang apa yang berlaku kepada anda.

hexiao49Saya mempunyai masalah di komuniti saya, boleh bantu saya lihat?

Mimpi kecilTidak ada yang boleh dilakukan tanpa API.

hexiao49Deep tidak mempunyai pairing API sendiri?

Mimpi kecilIni bergantung kepada berapa banyak pengguna yang memerlukan.

Mimpi kecilIni adalah satu strategi yang perlu diubahsuai, bukan satu atau dua perkataan yang boleh dicapai. FMZ menyokong bahasa PINE secara langsung, dan menjalankan skrip PINE secara langsung adalah lebih mudah.

Mingxi1005Guru: Saya ingin menambah fungsi penghentian pemadaman pada robot yang anda terbitkan, di mana untuk menambahkannya?

Mimpi kecilYa, saya telah bertanya kepada perkhidmatan pelanggan mereka, dan mereka telah membasmi API yang tidak dikontrak.

Mingxi1005Tak boleh.

Mimpi kecilIni adalah antara muka API langsung, bos! #_#! FMZ telah menyokong.

Mingxi1005https://www.coinw.fit/front/API laman web ini mempunyai api, anda perlu tangga untuk membuka /upload/asset/2986424014eb005f8cda2.png

Mingxi1005https://www.coinw.fit/front/API laman web ini mempunyai api, anda perlu tangga untuk membuka

Mimpi kecilAlamat ini tidak boleh dibuka. Tiada dokumen API yang dikontrak.

Mingxi1005Pautan kemasukan API: https://coinw.pw/API

Mimpi kecilIni adalah API langsung Coinw, FMZ Coinw sudah disokong, dan mereka tidak mempunyai antara muka kontrak. Anda lebih baik rujuk Coinw. Saya bertanya kepada perkhidmatan pelanggan mereka dan mereka berkata tidak ada API kontrak.

Mingxi1005Adakah kita boleh mengikat sendiri dengan protokol umum? Hanya meminta alamat IP, alamat IP mana yang akan diisi? Pautan kemasukan API: https://coinw.pw/API

Mimpi kecilSaya malu, adakah anda pasti bahawa kontrak yang menang wang mempunyai API?

Mingxi1005Ya, cikgu, jika anda mempunyai akses, banyak akses kuantitatif akan datang, kerana wang anda akan mendapat pulangan sebanyak 80%.

Mimpi kecilHalo, adakah anda memerlukan kontrak untuk mengakses bursa coinw? Belum menilai bursa ini.

Dua atau dua gelombang lamaAdakah anda menyelesaikan masalah ini? Saya juga mengalami masalah ini.

LanganBrother, adakah strategi TV untuk menghubungkan FMZ secara langsung berjaya?

Mimpi kecilIni boleh direka secara khusus, seperti anda merancang permintaan cover_long: 1, berubah menjadi cover_long: all, sehingga anda dalam dasar pengawasan FMZ ini mengubahnya pada masa menerima interaksi cover_long, menilai jika semua, semua sejajar. Untuk mencapai ini, anda perlu mengubah dasar ini. `` Variabel global var BUY = "buy" // Perhatikan: perintah untuk barang sedia ada var SELL = "sell" // Perintah untuk digunakan secara langsung var LONG = "long" // arahan untuk berjangka var SHORT = "short" // arahan untuk masa hadapan var COVER_LONG = "cover_long" // Perintah untuk masa hadapan var COVER_SHORT = "cover_short" // arahan untuk masa hadapan ... ... dan... Saya tidak tahu. Adakah anda tahu apa yang berlaku? } 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 ialah cover_long, jika ia adalah tindakan ini, masukkan jika di sini // Di sini anda lebih spesifik menilai parameter seperti all, untuk membuat reka bentuk operasi untuk semua kedudukan yang rata, dan menulis secara spesifik exchange.SetDirection (("closebuy") tradeInfo = IsMarketOrder? exchange.Sell ((-1, amount)): exchange.Sell ((ticker.Buy, amount) } else if (action == COVER_SHORT) { Exchange.SetDirection (dalam bahasa Inggeris: exchange.SetDirection) tradeInfo = IsMarketOrder? exchange.Buy ((-1, amount)): exchange.Buy ((ticker.Sell, amount) } else { Log (("Bursa niaga hadapan tidak menyokong!", "#FF0000") {C:$0000FF} if (tradeInfo) { Log (("tradeInfo:", tradeInfo) {C:$0000FF} } else { throw "eType error, eType:" + eType {C:$0000FF} acc = _C ((exchange.GetAccount) {C:$0000FF} ``

YidaiAdakah soalan anda diselesaikan?

Mimpi kecilDalam kes yang sama, penghantaran amaran TV tidak begitu jelas, ini bergantung kepada televisyen.

beiyeargs=[191755, "buy:0.02"], di sini menambah parameter, melakukan lebih banyak perkara pada masa yang sama boleh dilakukan kosong juga akan terlepas salah satu parameter akan lebih baik?

Mimpi kecilMenggunakan API lanjutan FMZ untuk menerima permintaan TV, anda boleh mendapatkan kandungan badan, lihat: https://www.fmz.com/api# Sekarang, data dalam badan boleh diterima di URL permintaan TV.

1131717062Sila tanyakan bagaimana untuk membangunkan amaran yang terbuka di tv, url webhook

Mimpi kecilMenggunakan API sambungan FMZ untuk menerima permintaan TV, anda boleh mendapatkan kandungan badan, lihat: https://www.fmz.com/api#%E7%9B%B4%E6%8E%A5%E9%AA%8C%E8%AF%81

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

Mimpi kecilTerdapat cara yang mudah untuk mendapatkan maklumat dalam badan yang diminta dengan mencari di kawasan strategi.

Mimpi kecilDalam satu kenyataan yang dikeluarkan oleh media tempatan, beliau berkata: "Sebenarnya, saya tidak tahu apa yang akan berlaku.

Mimpi kecilJika arahan diterima, bot akan berada pada tetingkap status, dan pada tetingkap perintah terakhir yang diterima, tempat ini akan menunjukkan arahan yang diterima. Periksa sama ada tidak ada konfigurasi di mana sahaja.

LanganJika anda ingin melihat gambar yang menunjukkan bahawa anda tidak mempunyai masalah, anda perlu melihat gambar yang menunjukkan bahawa anda tidak mempunyai masalah.

Mimpi kecilUntuk melihat soalan yang spesifik, apakah pertukaran yang disesuaikan pada robot anda adalah tunai, niaga hadapan?

Mimpi kecil/upload/asset/16afbca03eec23516d37.png Anda telah menambah pertukaran yang salah.

Mimpi kecilSaya akan cuba untuk mengemas kini gambar di sini, dan saya akan cuba untuk mengemas kini gambar di sini.

Ke arah Q/upload/asset/19aee891571def2a6c4f3.png Saya telah membuka semua keizinan API di Binance, saya juga telah membuka akaun kontrak, tetapi strategi yang dijalankan selalu tidak dapat menambahkan bursa niaga hadapan, adakah kod itu bermasalah?

Mimpi kecilLog menunjukkan Binance menjelaskan bahawa objek pertukaran yang ditambahkan adalah Bitcoin Cash. Tetapi dasar anda menetapkan kod kontrak niaga hadapan, jadi ia memberikan kesalahan.

Mimpi kecilPerlu menetapkan amaran dalam pandangan Perdagangan, isi alamat webhook pada tetapan amaran; boleh mencapai banyak kedudukan kosong terbuka;

Mimpi kecilhttps://www.fmz.com/api#exchange.setcontracttype... terdapat dalam penerangan fungsi ini dan boleh dilihat.

Mimpi kecilDi sini terdapat pautan di awal artikel ini.

melo23Stesen B. Apakah nama video ini?

Mimpi kecilPenggunaan spot berjangka adalah sama, hanya menukar parameter di dalam pautan. var BUY = "Beli" var SELL = "menjual" var LONG = "panjang" var SHORT = "pendek" var COVER_LONG = "cover_long" var COVER_SHORT = "cover_short" long adalah kedudukan berbilang kepala, short adalah kedudukan berbilang kepala kosong, cover_long adalah kedudukan berbilang kepala kosong, cover_short adalah kedudukan berbilang kepala kosong. `` https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[191755, "buy:0.02"] `` Jika anda ingin membeli di sini, anda perlu menukar link ini.

Mimpi kecilTambah dua penggera di TV. Satu biasa, satu kosong. TV boleh menambah N penggera.

gula210Jika anda ingin mempunyai banyak tempat duduk pada masa yang sama, iaitu, seting isyarat adalah cover_long:10 dan short:10, tetapi hanya satu isyarat yang akan dijalankan selepas seting di TV, bukankah ini akan hilang?

Mimpi kecilSemua boleh, arahan untuk berjangka adalah berjangka, bukan jual beli. Lihat kodnya.

Mimpi kecilKontrak penetapan niaga hadapan sudah selesai, pada parameter dasar, anda juga perlu menggunakan perintah lama, cover_long dan lain-lain dalam url webhook yang dikonfigurasikan di TV.

kunci986Itu adalah kod operasi yang ditetapkan untuk saham, dan sila tanya apakah saham itu harus dibalikkan dengan kod penulisan semula

Mimpi kecilTerdapat tutorial video yang boleh dilihat di sini, di Stesen B.