3
fokus pada
1444
Pengikut

Pengenalan terperinci kepada strategi frekuensi tinggi untuk mata wang digital

Dicipta dalam: 2023-03-10 10:09:13, dikemas kini pada: 2024-11-11 22:39:27
comments   13
hits   11533

Pengenalan terperinci kepada strategi frekuensi tinggi untuk mata wang digital

[TOC] Saya menulis artikel pada tahun 2020 yang memperkenalkan strategi frekuensi tinggi, https://www.fmz.com/digest-topic/6228. Walaupun mendapat perhatian ramai, ia tidak ditulis secara mendalam. Lebih daripada dua tahun telah berlalu dan pasaran telah berubah. Selepas artikel itu diterbitkan, strategi frekuensi tinggi saya dapat menghasilkan wang secara berterusan untuk masa yang lama, tetapi keuntungan beransur-ansur berkurangan malah dihentikan pada satu ketika. Dalam beberapa bulan kebelakangan ini, saya telah menghabiskan banyak usaha untuk pengubahsuaian dan pada masa ini saya boleh menjana sedikit wang. Artikel ini akan memperkenalkan idea saya untuk strategi frekuensi tinggi dan beberapa kod yang dipermudahkan dengan lebih terperinci, yang boleh menjadi titik permulaan untuk perbincangan Semua orang dialu-alukan untuk berkomunikasi dan memberi maklum balas.

Syarat untuk perdagangan frekuensi tinggi

  • Untuk akaun yang menerima rebat, mengambil Binance sebagai contoh, rebat pembuat semasa ialah 0.5% daripada 100,000 Jika volum transaksi harian ialah 100 juta U, rebatnya ialah 5,000 U. Sudah tentu, yuran pengambil masih berdasarkan kadar VIP, jadi jika strategi tidak memerlukan pengambilan pesanan, tahap VIP akan memberi sedikit kesan kepada strategi frekuensi tinggi. Secara amnya, tahap pertukaran yang berbeza mempunyai kadar rebat yang berbeza, dan memerlukan mengekalkan volum transaksi yang lebih tinggi. Pada masa dahulu, apabila pasaran beberapa mata wang turun naik dengan ketara, masih terdapat keuntungan walaupun tanpa rebat Dengan involusi peredaran dalaman, rebat menyumbang sebahagian besar keuntungan, malah bergantung sepenuhnya pada rebat yang dikejar oleh pedagang frekuensi tinggi Kadar teratas.

  • kelajuan. Sebab mengapa strategi frekuensi tinggi dipanggil frekuensi tinggi adalah kerana ia sangat pantas. Menyertai pelayan colo pertukaran untuk mendapatkan kependaman terendah dan sambungan paling stabil juga telah menjadi salah satu syarat untuk peredaran dalaman. Penggunaan masa dalaman strategi juga harus serendah mungkin. Artikel ini akan memperkenalkan rangka kerja websocket yang saya gunakan, yang menggunakan pelaksanaan serentak.

  • Pasaran yang betul. Perdagangan frekuensi tinggi dikenali sebagai permata perdagangan kuantitatif Saya percaya bahawa ramai pedagang terprogram telah mencubanya, tetapi kebanyakan orang mungkin berhenti kerana mereka tidak menjana wang dan tidak dapat mencari jalan untuk menambah baik bahawa mereka mencari jalan yang salah Pasaran dagangan. Pada peringkat awal strategi, seseorang harus mencari pasaran yang agak mudah untuk membuat perdagangan wang, supaya akan ada keuntungan dan maklum balas mengenai penambahbaikan, yang akan kondusif untuk kemajuan strategi. Jika anda bermula dalam pasaran yang paling kompetitif dan bersaing dengan banyak pesaing yang berpotensi, anda akan kehilangan wang tidak kira seberapa keras anda mencuba dan anda tidak akan dapat bertahan lagi. Saya mengesyorkan pasangan dagangan kontrak perpetual yang baru disenaraikan Pada masa ini, tidak begitu banyak pesaing, terutamanya apabila jumlah dagangan agak besar. Ini adalah masa yang paling mudah untuk membuat wang. BTC dan ETH mempunyai volum dagangan terbesar dan transaksi paling aktif, tetapi ia juga paling sukar untuk bertahan.

  • Menghadapi pertandingan secara berterusan. Mana-mana pasaran dagangan berubah secara dinamik Tiada strategi perdagangan boleh berfungsi sekali dan untuk semua Ini lebih jelas dalam perdagangan frekuensi tinggi Memasuki pasaran ini bermakna bersaing secara langsung dengan kumpulan pedagang yang paling bijak dan tekun. Dalam pasaran jumlah sifar, lebih banyak yang anda perolehi, semakin kurang pendapatan orang lain. Semakin lama anda masuk, semakin sukar mereka yang sudah berada di pasaran juga mesti terus bertambah baik kerana mereka mungkin akan dihapuskan pada bila-bila masa. Tiga atau empat tahun yang lalu sepatutnya menjadi peluang terbaik Baru-baru ini, keseluruhan aktiviti pasaran mata wang digital telah menurun, dan kini amat sukar bagi orang baru untuk terlibat dalam perdagangan frekuensi tinggi.

Prinsip frekuensi tinggi

Terdapat banyak jenis strategi frekuensi tinggi

  • Lindung nilai frekuensi tinggi: mencari peluang lindung nilai melalui pertukaran ini atau pertukaran lain, dan memanfaatkan kelajuan untuk merebut pesanan terlebih dahulu dan memperoleh keuntungan
  • Aliran frekuensi tinggi, untung daripada aliran jangka pendek
  • Pembuat pasaran membuat pesanan pada kedua-dua pihak beli dan jual, mengawal kedudukan mereka, dan membuat keuntungan dengan memperoleh komisen.
  • Banyak lagi yang tidak dihuraikan satu persatu.

Strategi saya adalah gabungan trend dan pembuat pasaran Saya mula-mula menentukan arah aliran, kemudian membuat pesanan, dan segera membuat pesanan jual selepas urus niaga selesai Saya tidak memegang kedudukan inventori.

Rangka Kerja Strategi

Kod berikut adalah berdasarkan seni bina asas kontrak kekal Binance, dan terutamanya melanggan kepada aliran pesanan mendalam soket web perdagangan maklumat pasaran dan maklumat kedudukan. Memandangkan maklumat pasaran dan maklumat akaun dilanggan secara berasingan, adalah perlu untuk menggunakan baca(-1) secara berterusan untuk menentukan sama ada maklumat terkini diperolehi EventLoop(1000) digunakan di sini untuk mengelakkan gelung tak terhingga langsung dan mengurangkan beban sistem. EventLoop(1000) akan disekat sehingga wss atau tugasan serentak kembali, dengan tamat masa 1000ms.

var datastream = null
var tickerstream = null
var update_listenKey_time = 0

function ConncetWss(){
    if (Date.now() - update_listenKey_time < 50*60*1000) {
        return
    }
    if(datastream || tickerstream){
        datastream.close()
        tickerstream.close()
    }
    //需要APIKEY
    let req = HttpQuery(Base+'/fapi/v1/listenKey', {method: 'POST',data: ''}, null, 'X-MBX-APIKEY:' + APIKEY) 
    let listenKey = JSON.parse(req).listenKey
    datastream = Dial("wss://fstream.binance.com/ws/" + listenKey + '|reconnect=true', 60)
    //Symbols是设定的交易对
    let trade_symbols_string = Symbols.toLowerCase().split(',')
    let wss_url = "wss://fstream.binance.com/stream?streams="+trade_symbols_string.join(Quote.toLowerCase()+"@aggTrade/")+Quote.toLowerCase()+"@aggTrade/"+trade_symbols_string.join(Quote.toLowerCase()+"@depth20@100ms/")+Quote.toLowerCase()+"@depth20@100ms"
    tickerstream = Dial(wss_url+"|reconnect=true", 60)
    update_listenKey_time = Date.now()
}

function ReadWss(){
    let data = datastream.read(-1)
    let ticker = tickerstream.read(-1)
    while(data){
        data = JSON.parse(data)
        if (data.e == 'ACCOUNT_UPDATE') {
            updateWsPosition(data)
        }
        if (data.e == 'ORDER_TRADE_UPDATE'){
            updateWsOrder(data)
        }        
        data = datastream.read(-1)
    }
    while(ticker){
        ticker = JSON.parse(ticker).data
        if(ticker.e == 'aggTrade'){
            updateWsTrades(ticker)
        }
        if(ticker.e == 'depthUpdate'){
            updateWsDepth(ticker)
        }
        ticker = tickerstream.read(-1)
    }
    makerOrder()
}

function main() {
    while(true){
        ConncetWss()
        ReadWss()
        worker()
        updateStatus()
        EventLoop(1000)
    }
}

Petunjuk Strategi

Seperti yang dinyatakan sebelum ini, strategi frekuensi tinggi saya memerlukan penentuan arah aliran sebelum melaksanakan pembelian dan penjualan. Aliran jangka pendek dinilai terutamanya berdasarkan data transaksi setiap transaksi, iaitu, aggTrade dalam langganan, yang merangkumi arah transaksi, harga, kuantiti, masa transaksi, dsb. Rujukan utama untuk membeli dan menjual adalah kedalaman dan volum dagangan. Berikut ialah pengenalan terperinci kepada penunjuk yang memerlukan perhatian Kebanyakan penunjuk dibahagikan kepada dua kumpulan: beli dan jual, dan dikira secara dinamik dalam tetingkap masa tertentu.

  • Jumlah urus niaga purata bagi setiap urus niaga ialah pengumpulan pesanan yang berbeza dari arah dan harga yang sama dalam masa 100ms, yang mencerminkan saiz pesanan beli dan jual Data ini boleh diandaikan bahawa jika volum urus niaga pesanan beli adalah lebih besar daripada pesanan jual, kemudian pasaran didorong Pembeli.
  • Kekerapan pesanan atau selang pesanan juga berdasarkan data transaksi Purata volum urus niaga sebelum ini tidak mengambil kira konsep masa dan tidak sepenuhnya tepat Jika jumlah pesanan dalam satu arah secara purata tetapi kekerapannya tinggi, ia juga menyumbang kepada Kekuatan arah ini. Purata volum*Kekerapan pesanan mewakili jumlah volum pada selang tetap dan boleh digunakan untuk perbandingan langsung. Peristiwa ketibaan pesanan mematuhi pengedaran Poisson, yang boleh digunakan untuk menganggarkan jumlah pesanan yang tiba dalam selang masa tertentu dan memberikan rujukan untuk lokasi pesanan belum selesai.
  • Spread pasaran purata agak mudah difahami, iaitu satu jual tolak beli satu. Kebanyakan harga pasaran semasa mempunyai perbezaan harga 1 tanda Jika perbezaan harga menjadi lebih besar, ia selalunya bermakna trend pasaran telah muncul.
  • Purata harga belian dan jualan dikira dengan purata harga setiap transaksi dan membandingkannya dengan harga terkini. Jika harga pesanan belian terbaharu adalah lebih besar daripada purata harga pesanan belian, ia boleh ditentukan secara awal bahawa kejayaan telah berlaku.

Logik Strategi

Tentukan trend jangka pendek

//bull代表短期看涨,bear短期看跌
let bull =  last_sell_price > avg_sell_price && last_buy_price > avg_buy_price &&
            avg_buy_amount / avg_buy_time > avg_sell_amount / avg_sell_time;
let bear =  last_sell_price < avg_sell_price && last_buy_price < avg_buy_price && 
            avg_buy_amount / avg_buy_time < avg_sell_amount / avg_sell_time;

Jika harga jualan terkini adalah lebih besar daripada harga jualan purata, harga belian terkini adalah lebih besar daripada harga belian purata, dan nilai pesanan belian selang tetap lebih besar daripada nilai pesanan jualan, maka ia dinilai sebagai kenaikan harga jangka pendek. . Sebaliknya, ia adalah menurun.

Harga pesanan

function updatePrice(depth, bid_amount, ask_amount) {

    let buy_price = 0
    let sell_price = 0
    let acc_bid_amount = 0
    let acc_ask_amount = 0

    for (let i = 0; i < Math.min(depth.asks.length, depth.bids.length); i++) {
        acc_bid_amount += parseFloat(depth.bids[i][1])
        acc_ask_amount += parseFloat(depth.asks[i][1])
        if (acc_bid_amount > bid_amount  && buy_price == 0) {
            buy_price = parseFloat(depth.bids[i][0]) + tick_size
        }
        if (acc_ask_amount > ask_amount  && sell_price == 0) {
            sell_price = parseFloat(depth.asks[i][0]) - tick_size
        }
        if (buy_price > 0 && sell_price > 0) {
            break
        }
    }
    return [buy_price, sell_price]
}

Di sini kami masih mengguna pakai idea lama dan mengulangi kedalaman kepada jumlah yang diperlukan Di sini kami mengandaikan bahawa pesanan belian sebanyak 10 syiling boleh dilaksanakan dalam masa 1 saat Tanpa mengambil kira pesanan belum selesai, harga pesanan jual ditetapkan pada kedudukan di mana pesanan belian 10 syiling akan melanda. Anda perlu menetapkan sendiri saiz tetingkap masa tertentu.

Kuantiti pesanan

let buy_amount = Ratio * avg_sell_amount / avg_sell_time
let sell_amount = Ratio * avg_buy_amount / avg_buy_time

Nisbah bermaksud Nisbah Tetap, yang bermaksud kuantiti pesanan beli ialah nisbah tetap bagi kuantiti pesanan jualan terkini. Strategi ini boleh menyesuaikan saiz pesanan berdasarkan aktiviti jual beli semasa.

Syarat pesanan

if(bull && (sell_price-buy_price) > N * avg_diff) {
    trade('buy', buy_price, buy_amount)
}else if(position.amount < 0){
    trade('buy', buy_price, -position.amount)
}
if(bear && (sell_price-buy_price) >  N * avg_diff) {
    trade('sell', sell_price, sell_amount)
}else if(position.amount > 0){
    trade('sell', sell_price, position.amount)
}

Antaranya, avg_diff ialah perbezaan harga pasaran purata Pesanan belian hanya akan diletakkan apabila spread bid-ask lebih besar daripada berganda tertentu nilai ini dan arah aliran adalah menaik juga akan ditutup pada masa ini untuk mengelakkan pegangan jangka panjang pesanan. Anda boleh membuat pesanan pembuat sahaja untuk memastikan pesanan yang belum selesai dilaksanakan. Dan anda boleh menggunakan ID pesanan tersuai Binance, jadi anda tidak perlu menunggu pesanan dipulangkan.

Seni bina serentak

var tasks = []
var jobs = []

function worker(){
    let new_jobs = []
    for(let i=0; i<tasks.length; i++){
        let task = tasks[i]
        jobs.push(exchange.Go.apply(this, task.param))
    }
    _.each(jobs, function(t){
        let ret = t.wait(-1)
        if(ret === undefined){
            new_jobs.push(t)//未返回的任务下次继续等待
        }
    })
    jobs = new_jobs
    tasks = []
}

/*
需要的任务参数写在param里
tasks.push({'type':'order','param': ["IO", "api", "POST","/fapi/v1/order",
        "symbol="+symbol+Quote+"&side="+side+"&type=LIMIT&timeInForce=GTX&quantity="+
        amount+"&price="+price+"&newClientOrderId=" + UUID() +"&timestamp="+Date.now()]})
*/

Data pemantauan

  • Kelewatan. Kepentingan kelajuan strategi frekuensi tinggi telah ditekankan Pelbagai kelewatan harus dipantau dan direkodkan dalam strategi, seperti membuat pesanan, membatalkan pesanan, pulangan kedudukan, kedalaman, aliran pesanan, kedudukan, kitaran keseluruhan, dll. Sebarang kelewatan yang tidak normal harus disemak dengan segera dan cara harus dicari untuk memendekkan kelewatan strategi keseluruhan.
  • Perkadaran volum dagangan, statistik menunjukkan bahagian volum dagangan dalam jumlah volum dagangan Jika perkadaran itu rendah, masih ada ruang untuk penambahbaikan. Pada waktu puncak, strategi boleh mengambil kira lebih daripada 10% daripada jumlah volum dagangan.
  • Kadar pulangan penutupan, kadar pulangan penutupan purata statistik, adalah rujukan paling penting untuk menilai sama ada strategi itu berkesan.
  • Nisbah komisen ialah nisbah komisen kepada jumlah hasil, yang mencerminkan pergantungan strategi pada komisen. Pertukaran mempunyai tahap rebat yang berbeza, dan strategi yang tidak menguntungkan mungkin menjadi menguntungkan jika rebat adalah satu tahap lebih tinggi.
  • Perkadaran pesanan yang gagal hanya dibuat dan dilaksanakan Oleh kerana kelewatan dalam membuat pesanan, mereka mungkin tidak diletakkan Jika perkadaran ini tinggi, ini bermakna kelajuan strategi tidak berfaedah.
  • Perkadaran pesanan yang dilaksanakan Platform selalunya mempunyai keperluan untuk kadar pelaksanaan Jika terlalu rendah, ini bermakna strategi membatalkan pesanan terlalu kerap dan perlu diselesaikan.
  • Jarak purata antara pesanan beli dan jual Data ini menggambarkan jarak antara pesanan strategi dan harga pasaran Ia boleh dilihat bahawa kebanyakan mereka masih menduduki posisi beli satu dan jual.

Cadangan lain

  • Berdagang berbilang mata wang, strategi frekuensi tinggi dalam artikel ini hanya merujuk kepada pasaran pertukaran tunggal, mata wang tunggal dan pasaran tunggal Ia mempunyai had yang besar dan tidak menguntungkan dalam kebanyakan kes dan untuk kebanyakan mata wang mustahil untuk meramalkan mata wang yang akan menguntungkan pada masa hadapan , jadi anda boleh berdagang berbilang atau semua mata wang dan tidak melepaskan sebarang peluang. Walaupun di bawah had kekerapan pertukaran, robot boleh berdagang berbilang pasangan dagangan Sudah tentu, untuk kelajuan terbaik, satu sub-akaun boleh berdagang satu pasangan dagangan, dan satu pelayan sepadan dengan satu robot, tetapi kosnya akan lebih tinggi. .
  • Tentukan kuantiti pesanan dan syarat pesanan berdasarkan kadar pulangan. Berdagang berbilang mata wang akan mengakibatkan kos percubaan yang tinggi Jika pemantauan tidak menguntungkan, gunakan volum dagangan minimum dan kurangkan kekerapan dagangan sehingga strategi memantau kadar pulangan positif secara dinamik, kemudian tingkatkan volum dagangan secara beransur-ansur untuk meningkatkan keuntungan.
  • Dapatkan maklumat lanjut satu lagi ciri perdagangan frekuensi tinggi ialah ia memproses jumlah data yang lebih besar dan menggunakan lebih banyak maklumat. Semua maklumat pasaran pasangan dagangan tunggal dalam pertukaran tunggal harus dirujuk, dan pertukaran kekal juga boleh merujuk kepada data spot, serta data pasangan dagangan dalam bursa lain, atau data mata wang lain lebih baik. Kelebihan yang sepadan juga lebih besar. Sebagai contoh, Binance boleh melanggan maklumat pesanan belum selesai terbaik oleh Symbol Memandangkan tolakan kedalaman dan aliran pesanan terpendek ialah 100ms, hanya ini adalah masa nyata, yang sangat berharga untuk strategi frekuensi tinggi.
  • Pelayan Binance berada di AWS Tokyo, dan pelayan bursa lain adalah berbeza Sila rujuk kakitangan teknikal bursa untuk mendapatkan butiran.
  • Kod strategi dalam artikel ini hanyalah kod sampel yang dipermudahkan, yang memadamkan banyak butiran yang membosankan tetapi perlu Penunjuk yang digunakan adalah untuk rujukan sahaja dan tidak boleh digunakan secara langsung. Terdapat banyak butiran yang perlu diberi perhatian apabila benar-benar menjalankan strategi frekuensi tinggi, dan ia memerlukan kesabaran untuk mengubah suai dan memperbaikinya.