Strategi frekuensi tinggi untuk mata uang digital

Penulis:Rumput, Dibuat: 2023-03-10 10:09:13, Diperbarui: 2023-09-18 20:13:58

img

[TOC] Pada tahun 2020, saya menulis sebuah artikel tentang strategi frekuensi tinggi, dan saya pikir itu akan membantu Anda untuk meminimalisir frekuensi tinggi.https://www.fmz.com/digest-topic/6228◎ Meskipun mendapat banyak perhatian, tulisan ini tidak mendalam. ◎ Waktu berlalu lebih dari dua tahun, dan pasar juga berubah. ◎ Setelah artikel itu diterbitkan, strategi frekuensi tinggi saya menghasilkan uang yang stabil untuk waktu yang lama, tetapi keuntungan yang lambat menurun secara bertahap, bahkan pernah dihentikan. ◎ Beberapa bulan terakhir, saya telah berusaha untuk mengubahnya, dan saat ini saya dapat menghasilkan sedikit uang. ◎ Artikel ini akan memberikan gambaran yang lebih rinci tentang ide-ide strategi frekuensi tinggi saya dan beberapa kode yang disederhanakan, yang berfungsi sebagai penghilang kerucut.

Kondisi perdagangan frekuensi tinggi

  • Akun yang dibayarkan kembali, contohnya, saat ini maker membayar kembali 5 dari 100.000 jika volume transaksi harian adalah 100 juta U, komisi akan 5000 U. Tentu saja taker masih berdasarkan tarif VIP, jadi jika strategi tidak perlu membayar, tingkat VIP tidak banyak mempengaruhi strategi frekuensi tinggi. Pertukaran umum tingkat yang berbeda dan tingkat komisi yang berbeda, perlu untuk mempertahankan transaksi yang lebih tinggi.

  • Kecepatan. Kebijakan frekuensi tinggi disebut frekuensi tinggi karena kecepatan sangat cepat. Bergabung dengan server colo untuk mendapatkan keterlambatan minimum dan koneksi paling stabil juga menjadi salah satu persyaratan untuk inner volume.

  • Pasar yang tepat. Perdagangan frekuensi tinggi dikenal sebagai mutiara perdagangan kuantitatif. Saya percaya bahwa banyak pedagang terprogram telah mencoba, tetapi sebagian besar orang harus berhenti karena tidak menghasilkan uang dan tidak menemukan arah yang lebih baik. Alasan utama adalah karena menemukan pasar perdagangan yang salah.

  • Berhadapan dengan persaingan. Pasar mana pun adalah pasar yang berubah secara dinamis, tidak ada strategi perdagangan yang dapat dilakukan secara permanen, perdagangan frekuensi tinggi lebih jelas, memasuki pasar ini secara langsung melawan sekelompok pedagang paling cerdas dan paling rajin. Di pasar nol dan berjudi, Anda menghasilkan lebih banyak daripada yang dibayar orang lain. Semakin lambat masuk, semakin tinggi kesulitan, yang sudah ada di pasar harus terus meningkat, dan dapat dihilangkan kapan saja.

Prinsip Frekuensi Tinggi

Strategi frekuensi tinggi dibagi menjadi beberapa

  • Hedging frekuensi tinggi, peluang untuk mencari hedging melalui bursa ini atau bursa lain, keuntungan dari keuntungan dengan keuntungan kecepatan untuk mengambil pesanan terlebih dahulu
  • Tren frekuensi tinggi, keuntungan dari penilaian tren jangka pendek
  • Sebagai pedagang pasar, mereka melakukan transaksi di kedua belah pihak, mengendalikan saham, dan mendapatkan keuntungan dengan mendapatkan komisi kembali.
  • Banyak lagi, tidak semua deskripsi.

Strategi saya adalah kombinasi dari tren dan pedagang, menilai tren terlebih dahulu, lalu memasang order, langsung memasang order setelah transaksi selesai, tidak memegang posisi stok, berikut ini adalah kode strategi kombinasi.

Arsitektur Strategi

Kode di bawah ini adalah arsitektur yang didasarkan pada kontrak perpetual binary, yang sebagian besar berlangganan websocket dalam-deep order flowtrades pasar, dan informasi posisi. Karena pasar dan informasi akun adalah langganan yang terpisah, perlu terus-menerus menggunakan read ((-1) untuk menentukan apakah mendapatkan informasi terbaru, di sini digunakan EventLoop ((1000), menghindari siklus mati langsung, mengurangi beban sistem.

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 Strategis

Seperti yang telah saya sebutkan sebelumnya, strategi frekuensi tinggi saya membutuhkan penilaian tren dan kemudian melakukan penjualan. Penghakiman tren jangka pendek terutama didasarkan pada data transaksi per transaksi, yaitu aggTrade dalam langganan, yang berisi arah transaksi, harga, jumlah, waktu transaksi, dll. Menjual adalah referensi utama kedalaman dan volume transaksi. Di bawah ini akan dijelaskan secara rinci indikator yang perlu diperhatikan, sebagian besar indikator dibagi menjadi dua kelompok pembelian dan penjualan, dan semuanya dalam statistik dinamis jendela waktu tertentu, jendela waktu strategi saya dalam 10 detik.

  • Rata-rata transaksi per transaksi, transaksi per transaksi adalah pengumpulan pesanan yang berbeda harga dan arah dalam 100 ms, yang mencerminkan ukuran pesanan jual beli. Data ini memiliki bobot yang lebih tinggi, dan dapat diasumsikan jika volume transaksi pembelian lebih besar dari pesanan jual, maka ini adalah pasar yang didominasi pembeli.
  • Frekuensi pesanan atau interval pesanan, juga berdasarkan data transaksi per butir, rata-rata transaksi sebelumnya tidak peduli konsep waktu, tidak sepenuhnya akurat, jika pesanan dalam satu arah meskipun rata-rata transaksi kecil, tetapi frekuensi tinggi, juga berkontribusi pada intensitas arah ini. Rata-rata transaksi * Frekuensi pesanan mewakili total transaksi interval tetap, dapat digunakan untuk perbandingan langsung.
  • Rata-rata perbedaan bid, yang lebih mudah dimengerti, yaitu jual satu minus beli satu. Sebagian besar bid saat ini adalah perbedaan satu tik, dan jika perbedaan bid menjadi lebih besar, seringkali menunjukkan ada pasar yang muncul.
  • Harga jual rata-rata, dengan menghitung harga jual rata-rata transaksi masing-masing, dan membandingkannya dengan harga terbaru. Misalnya, harga pembelian terbaru lebih besar dari harga pembelian rata-rata, dapat dinilai awal untuk membuat terobosan.

Logika strategis

Menentukan Tren 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 terbaru lebih besar dari harga jual rata-rata, harga beli terbaru lebih besar dari harga beli rata-rata, dan nilai pembelian interval tetap lebih besar dari nilai jual, maka penilaian bullish jangka pendek.

Harga di bawah

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, iterasi kedalaman ke jumlah yang dibutuhkan, di sini asumsikan transaksi pembayaran 10 sen dapat dilakukan dalam 1 s, tanpa mempertimbangkan hal-hal baru yang diikat, harga jual set untuk posisi pembelian 10 sen yang terkena dampak; berapa besar jendela waktu yang spesifik perlu diatur sendiri.

Jumlah pesanan

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

Ratio mewakili proporsi yang tetap, yaitu jumlah yang dibeli adalah proporsi yang tetap dari jumlah pesanan yang baru saja dijual. Strategi ini dapat menyesuaikan diri dengan ukuran pesanan berdasarkan aktivitas pembelian saat ini.

Ketentuan di bawah ini

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 antaranya, avg_diff adalah perbedaan rata-rata transaksi, hanya saat harga jual beli pesanan saat ini lebih besar dari beberapa kali lipat nilai ini dan hanya akan ditukarkan pada saat yang lebih baik, jika memegang pesanan kosong, saat ini juga akan dipadatkan, menghindari invoice jangka panjang.

Arsitektur paralel

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, kecepatan strategi frekuensi tinggi telah ditekankan, strategi harus memantau dan mencatat berbagai penundaan, seperti pesanan turun, penarikan, posisi kembali, kedalaman, aliran pesanan, posisi, siklus keseluruhan, dll.
  • Rasio volume transaksi, rasio transaksi di bawah statistik sebagai persentase dari total volume transaksi, jika rasio rendah, ada ruang untuk naik. Pada saat puncak, rasio strategi mencapai lebih dari 10% dari total volume transaksi juga mungkin.
  • Pengembalian posisi rata-rata, rata-rata posisi rata-rata, adalah referensi terpenting untuk menilai apakah strategi tersebut efektif.
  • Rasio pengembalian komisi, statistik pengembalian komisi sebagai persentase dari total pendapatan, mencerminkan tingkat ketergantungan strategi pada pengembalian komisi. Perdagangan semua tingkat pengembalian yang berbeda, strategi yang tidak menguntungkan mungkin menguntungkan dengan pengembalian komisi satu tingkat lebih tinggi.
  • Rasio kegagalan pesanan, pesanan hanya ditagih, karena penundaan pesanan, mungkin tidak dapat ditagih, jika rasio ini tinggi, menunjukkan bahwa kecepatan strategi tidak optimal.
  • Rasio pesanan yang ditransfer, platform sering memiliki persyaratan untuk tingkat transaksi, jika terlalu rendah, menunjukkan bahwa kebijakan penarikan terlalu sering dan perlu diselesaikan.
  • Jarak rata-rata pesanan beli dan jual, yang mencerminkan jarak antara pesanan dan penjualan strategi, dapat dilihat sebagian besar masih menempati posisi beli dan jual.

Saran Lainnya

  • Strategi frekuensi tinggi dalam artikel ini hanya merujuk pada pasar moneter moneter satu bursa, keterbatasan yang besar, sebagian besar situasi dan sebagian besar mata uang tidak menguntungkan, tetapi juga tidak dapat memprediksi mata uang mana yang akan menguntungkan di masa depan, sehingga dapat memperdagangkan beberapa atau bahkan semua mata uang, jangan lewatkan kesempatan tersebut. Bahkan dengan batasan frekuensi bursa, satu robot juga dapat memperdagangkan beberapa pasangan perdagangan, tentu saja untuk kecepatan optimal, satu sub akun dapat memperdagangkan satu transaksi, satu server untuk satu robot, hanya saja biaya yang tinggi akan banyak.
  • Berdasarkan tingkat pengembalian, jumlah dan kondisi pesanan akan ditentukan. Berdagang multi mata uang akan menyebabkan biaya untuk mencoba terlalu tinggi, jika pemantauan tidak menguntungkan, gunakan volume perdagangan minimal dan kurangi frekuensi perdagangan sampai strategi dinamika pemantauan tingkat pengembalian positif, kemudian tingkatkan jumlah perdagangan secara bertahap untuk meningkatkan keuntungan.
  • Untuk mendapatkan lebih banyak informasi, perdagangan frekuensi tinggi memiliki karakteristik lain yaitu volume data yang diproses lebih besar, informasi yang digunakan lebih banyak. Semua informasi pasar yang diproses oleh pasangan transaksi dalam satu bursa harus dirujuk, dan dapat juga merujuk data langsung secara permanen, juga dapat merujuk data dari pasangan transaksi yang sama di bursa lain, bahkan data dari mata uang lain, semakin banyak data, semakin besar keuntungan yang sesuai.
  • Server Binance berada di Tokyo, sementara server dari bursa lain berbeda-beda. Anda dapat berkonsultasi dengan teknisi bursa.
  • Kode strategi dalam artikel ini hanyalah contoh kode yang sederhana, menghapus banyak detail yang membosankan tetapi harus dipertimbangkan, dan indikator yang digunakan hanya untuk referensi, tidak digunakan secara langsung.

Berkaitan

Lebih banyak

mztcoinDewa Rumput

DANGOUGrasshopper

77924998Apa saja server AWS yang digunakan Grasshopper?

xukittyKekerasan

BtwxiaokGrasshopper membuat program frekuensi tinggi berbayar

Hati saya masihApakah strategi ini bisa digunakan untuk membuat salinan?

Pengarang: TradeManCall Grasshopper, berharap lebih banyak mengajar, belajar untuk masuk dalam perdagangan frekuensi tinggi

♪ Sebuah ombak di atas angin. ♪Kekerasan

FmzeroDia adalah dewa rumput!

Ukuran okKekerasan

Rumput"Saya tidak tahu apa yang terjadi di sana, tapi saya tidak tahu apa yang terjadi di sana.