Pendahuluan terperinci mengenai strategi frekuensi tinggi mata wang digital

Penulis:Rumput, Dicipta: 2023-03-10 10:09:13, Dikemas kini: 2023-09-18 20:13:58

img

[TOC] Saya menulis artikel pada tahun 2020 mengenai strategi frekuensi tinggi, tetapi saya tidak dapat menerangkan bagaimana ia boleh digunakan.https://www.fmz.com/digest-topic/6228Walaupun mendapat banyak perhatian, tulisan ini tidak mendalam. Masa telah berlalu lebih dari dua tahun, dan pasaran juga berubah. Selepas artikel itu diterbitkan, strategi frekuensi tinggi saya telah menghasilkan wang yang stabil untuk masa yang lama, tetapi keuntungan perlahan menurun, atau bahkan dihentikan. Beberapa bulan kebelakangan ini, saya telah berusaha untuk mengubahnya, dan kini dapat menghasilkan sedikit wang.

Syarat untuk perdagangan frekuensi tinggi

  • Sebagai contoh, sekarang, jika jumlah dagangan setiap hari adalah 100 juta U, bayaran balik adalah 5000 U. Sudah tentu, pemegang masih berdasarkan kadar VIP, jadi jika strategi tidak perlu membayar, peringkat VIP tidak banyak mempengaruhi strategi frekuensi tinggi. Pertukaran umum mempunyai peringkat yang berbeza dan kadar bayaran balik yang berbeza, yang memerlukan mengekalkan jumlah dagangan yang tinggi. Sebelum ini, ketika beberapa pasaran mata wang berfluktuasi besar, bayaran balik juga menguntungkan, dengan peningkatan jumlah dalaman, bayaran balik menyumbang peratusan keuntungan yang lebih besar, bahkan hanya bergantung pada bayaran balik, pedagang frekuensi tinggi mengejar kadar tertinggi.

  • Kelajuan. Kebijakan frekuensi tinggi dipanggil frekuensi tinggi kerana ia sangat pantas. Mengikut pelayan colo pertukaran, mendapatkan kelewatan minimum dan sambungan yang paling stabil juga menjadi salah satu syarat dalaman. Kebijakan ini juga memerlukan masa dalaman yang minimum, dan artikel ini akan menerangkan kerangka websocket yang saya gunakan, yang dijalankan secara serentak.

  • Pasaran yang sesuai. Perdagangan frekuensi tinggi dikenali sebagai mutiara perdagangan kuantitatif. Saya percaya bahawa banyak peniaga berprogram telah mencuba, tetapi kebanyakan orang harus berhenti kerana tidak menghasilkan wang dan tidak dapat mencari arah untuk memperbaiki, yang utama adalah kerana mencari pasaran perdagangan yang salah. Tahap awal strategi harus mencari pasaran yang agak mudah untuk menghasilkan wang untuk berdagang, sehingga menguntungkan dan mempunyai maklum balas yang lebih baik, yang menggalakkan kemajuan strategi.

  • Menghadapi persaingan. Pasaran mana-mana dagangan adalah berubah secara dinamik, tidak ada strategi dagangan yang boleh dilakukan sekali dan selamanya, dagangan frekuensi tinggi lebih jelas, memasuki pasaran ini secara langsung dengan sekumpulan pedagang yang paling pintar dan paling rajin. Dalam pasaran yang berjudi dan berjudi, lebih banyak yang anda hasilkan sama dengan yang orang lain hasilkan.

Prinsip frekuensi tinggi

Strategi frekuensi tinggi berlainan

  • Hedging frekuensi tinggi, peluang untuk mencari hedging melalui bursa ini atau bursa lain, dengan kelebihan kelajuan untuk mendapatkan keuntungan dengan mengambil pesanan terlebih dahulu
  • Trend frekuensi tinggi, keuntungan dengan menilai trend jangka pendek
  • Sebagai peniaga pasar, mereka membuat urus niaga di kedua-dua belah pihak membeli dan menjual, mengawal simpanan, dan mendapat keuntungan dengan mendapatkan bayaran balik.
  • Banyak lagi, tetapi tidak semua.

Strategi saya adalah gabungan trend dan peniaga, menilai trend terlebih dahulu, kemudian memasang pesanan, menjual pesanan dengan segera selepas transaksi, tidak memegang stok, berikut adalah perbandingan kod strategi.

Struktur Strategi

Kod di bawah ini adalah struktur berdasarkan kontrak kekal Bitcoin, yang mengumpul maklumat mengenai pasaran dan kedudukan kedudukan. Oleh kerana pasaran dan maklumat akaun adalah langganan berasingan, anda perlu terus menggunakan read ((-1) untuk menentukan sama ada anda mendapat maklumat terkini, di sini menggunakan EventLoop ((1000), mengelakkan hidupan mati secara langsung, mengurangkan beban sistem. EventLoop ((1000 akan menghalang ke WS atau menghantar tugas bersama-sama dengan masa lebih daripada 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)
    }
}

Indikator Strategik

Strategi frekuensi tinggi saya memerlukan penilaian trend dan kemudian pelaksanaan jualan. Penghakiman mengenai trend jangka pendek adalah berdasarkan data urus niaga secara keseluruhan, iaitu aggTrade dalam langganan, termasuk arah urus niaga, harga, kuantiti, masa urus niaga, dan lain-lain. Penjualan adalah rujukan utama kedalaman dan jumlah urus niaga.

  • Jumlah purata urus niaga, jumlah purata urus niaga adalah pengumpulan pesanan yang berbeza dalam arah yang sama dan harga dalam tempoh 100ms, yang mencerminkan saiz pesanan beli dan jual, yang mempunyai berat data yang tinggi, yang boleh diasumsikan jika jumlah urus niaga pembelian lebih besar daripada pesanan jual, maka ini adalah pasaran yang dikuasai pembeli.
  • Frekuensi pesanan, atau selang pesanan, juga berdasarkan data transaksi per keping, jumlah purata pesanan sebelum ini tidak melihat konsep masa, tidak sepenuhnya tepat, jika pesanan dalam satu arah walaupun purata pesanan adalah kecil, tetapi kekerapan tinggi, juga menyumbang kepada kekuatan arah ini. Purata pesanan * Frekuensi pesanan mewakili jumlah purata pesanan dalam selang tetap, boleh digunakan untuk perbandingan langsung.
  • Perbandingan ini lebih mudah difahami, iaitu jual satu beli satu. Kebanyakan dagangan semasa adalah perbezaan satu tik, jika harga dagangan menjadi lebih besar, sering kali mewakili pasaran yang muncul.
  • Harga purata pembelian dan penjualan, dengan mengira harga purata pembelian dan penjualan yang dilakukan secara berasingan, berbanding dengan harga terkini. Sebagai contoh, harga pembelian terkini lebih besar daripada harga pembelian purata, boleh dianggap awal untuk membuat terobosan.

Logik Strategi

Menentukan 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 jual terkini lebih besar daripada harga jualan purata, harga beli terkini lebih besar daripada harga pembelian purata, dan nilai pembelian selang tetap lebih besar daripada nilai jualan, maka keputusan baik atau buruk dalam jangka pendek akan dibuat.

Harga yang lebih rendah

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 masih mengambil pemikiran lama, mengulangi kedalaman kepada jumlah yang diperlukan, di sini mengandaikan bahawa pembayaran 10 sen boleh dilakukan dalam 1s, tanpa mengambil kira pesanan baru, harga pesanan dijual ditetapkan sebagai harga pembelian 10 sen.

Jumlah pesanan

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

Ratio mewakili peratusan tetap, yang mewakili jumlah pembelian sebagai peratusan tetap jumlah pesanan yang dijual baru-baru ini. Strategi ini dapat menyesuaikan diri dengan saiz pesanan berdasarkan aktiviti pembelian dan penjualan semasa.

Syarat di bawah

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

Di mana avg_diff adalah perbezaan purata, dan hanya akan dibayar apabila harga pembelian dan penjualan pesanan semasa lebih besar daripada nilai kelipatan tertentu, dan hanya akan dibayar pada masa yang baik, jika memegang pesanan kosong, ini juga akan dipadamkan, mengelakkan invois jangka panjang. Perintah bawah boleh memuat turun pesanan only-maker, memastikan transaksi pesanan.

Senibina yang disatukan

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 yang dipantau

  • Penundaan, kelajuan strategi frekuensi tinggi telah ditekankan, dalam strategi untuk memantau dan merakam pelbagai penundaan, seperti pesanan bawah, penarikan balik, kedudukan kembali, kedalaman, aliran pesanan, kedudukan, kitaran keseluruhan, dan lain-lain. Penundaan yang tidak normal perlu diurutkan tepat pada masanya, dan mencari cara untuk mengurangkan penundaan strategi keseluruhan.
  • Peratusan jumlah dagangan, peratusan jumlah dagangan yang dicatatkan sebagai peratusan jumlah dagangan, jika peratusan rendah, terdapat ruang untuk naik. Pada masa puncak, peratusan strategi mencapai lebih daripada 10% jumlah dagangan.
  • Pengembalian pelaburan, rata-rata pelaburan pelaburan, adalah rujukan yang paling penting untuk menentukan apakah strategi itu berkesan.
  • Peratusan pulangan, peratusan pulangan statistik kepada pendapatan keseluruhan, mencerminkan tahap bergantung strategi pada pulangan. Perdagangan semua peringkat pulangan yang berbeza, strategi yang tidak menguntungkan mungkin menguntungkan dengan pulangan satu peringkat lebih tinggi.
  • Peratusan kegagalan pesanan, pesanan yang hanya diletakkan di atas pesanan, mungkin tidak dapat diletakkan kerana penundaan pesanan, jika peratusan ini tinggi, menunjukkan bahawa strategi tidak berjalan dengan baik.
  • Peratusan pesanan yang ditukar, platform sering mempunyai keperluan untuk kadar penutupan, jika terlalu rendah, menunjukkan bahawa strategi penarikan terlalu kerap dan perlu diselesaikan.
  • Jarak pesanan jual purata, yang mencerminkan jarak antara pesanan strategi dan ledakan, dapat dilihat sebahagian besarnya masih menempati kedudukan beli-jual-satu.

Cadangan lain

  • Strategi frekuensi tinggi dalam artikel ini hanya merujuk kepada pasaran tunggal mata wang tunggal, keterbatasan yang besar, kebanyakan keadaan dan kebanyakan mata wang tidak boleh menguntungkan, tetapi juga tidak dapat meramalkan mata wang mana yang akan menguntungkan pada masa akan datang, jadi anda boleh berdagang beberapa atau semua mata wang, jangan terlepas peluang. Walaupun dengan batasan frekuensi pertukaran, satu robot juga boleh berdagang beberapa pasangan perdagangan, tentu saja untuk kelajuan yang optimum, satu akaun anak boleh berdagang satu transaksi, satu pelayan untuk satu robot, hanya begitu kosnya akan lebih tinggi.
  • Mengikut kadar pulangan, jumlah dan syarat pesanan akan ditentukan. Perdagangan multi mata wang akan menyebabkan kos percubaan terlalu tinggi, jika pemantauan tidak menguntungkan, gunakan jumlah dagangan yang minimum dan kurangkan kekerapan dagangan sehingga strategi dinamik memantau kadar pulangan positif, kemudian menaikkan jumlah dagangan secara beransur-ansur untuk meningkatkan pendapatan.
  • Untuk mendapatkan lebih banyak maklumat, perdagangan frekuensi tinggi ciri lain adalah jumlah data yang diproses lebih besar, lebih banyak maklumat yang digunakan. Semua maklumat pasaran yang diperdagangkan dalam pasangan pertukaran tunggal harus dirujuk, dan secara berterusan juga boleh merujuk kepada data yang ada, atau data yang diperdagangkan di pertukaran lain, atau bahkan data mata wang lain, semakin banyak data, semakin besar kelebihan.
  • Pelayan Binance terletak di Tokyo, sementara pelayan lain berbeza-beza.
  • Kod strategi dalam artikel ini hanyalah contoh kod yang ringkas, yang menghilangkan banyak butiran yang membosankan tetapi perlu dipertimbangkan, dan penunjuk yang digunakan hanya untuk rujukan, tidak digunakan secara langsung.

Berkaitan

Lebih lanjut

mztcoinTuhan Rumput

DANGOUGrasshopper 1

77924998Server AWS yang mana yang digunakan oleh Grasshopper?

xukittyBerani Berani

bwxiaokGrasshopper menyediakan kursus frekuensi tinggi berbayar

Hati saya masihAdakah strategi ini berguna jika anda boleh meniru?

Penulis: TradeManCall Grasshopper, mahu lebih banyak mengajar, belajar untuk masuk dalam perdagangan frekuensi tinggi

~ Sebuah ombak di atas angin ~Keganasan

FmzeroTuhan Rumput!

Ukuran okKeganasan

RumputSaya tidak tahu apa yang akan berlaku.