Kelemahan sistem penggambaran frekuensi tinggi berasaskan urus niaga dan penggambaran garis K

Penulis:Rumput, Dicipta: 2020-06-04 16:48:02, Dikemas kini: 2023-10-08 19:46:18

img

Saya sedangBinance melakukan penambangan yang lebih tinggi daripada strategi lindung nilai mata wang yang lebih rendahPada masa yang sama, sebuah enjin retesting dikeluarkan. Laporan pertama berdasarkan retesting K-line satu jam mengesahkan keberkesanan strategi tersebut. Tetapi masa tidur 1s untuk strategi awam yang sebenarnya adalah strategi yang agak tinggi, dan retesting K-line satu jam jelas tidak dapat menghasilkan hasil yang tepat.Pengukuran garis minitHasilnya, pulangan retargeting meningkat dengan banyak, tetapi masih tidak dapat menentukan parameter mana yang harus digunakan dalam keadaan tahap detik, dan pemahaman mengenai keseluruhan strategi tidak jelas; sebab utama adalah kelemahan penting retargeting berdasarkan garis K.

Soalan berasaskan K-line retesting

Pertama, apa yang disebut garis K sejarah? Satu data garis K mengandungi empat harga tinggi dan rendah, dua waktu permulaan, dan perdagangan jarak jauh. Kebanyakan platform dan kerangka kerja kuantitatif adalah berdasarkan retest K, dan platform kuantitatif FMZ juga menyediakan retest tingkatan tik.

Pertama adalah masalah masa, masa harga tertinggi dan harga terendah data K tidak diberikan, tidak perlu dipertimbangkan, tetapi yang paling penting adalah harga buka dan tutup tidak bermula pada waktu buka dan tutup. Walaupun jenis perdagangan yang tidak terlalu sejuk, mereka sering tidak berdagang selama beberapa puluh saat, dan ketika kita mengulas semula strategi pelbagai jenis, mereka sering secara lalai membuka harga dan harga penutupan pada masa yang sama, yang juga merupakan asas untuk pengukuran harga buka dan tutup.

Bayangkan dengan menggunakan garis minit untuk mengulangi laba dua jenis, yang biasanya mempunyai perbezaan harga $ 10, dan kini mendapati pada pukul 10:01 jam, kontrak A ditutup dengan harga 100, kontrak B adalah 112, perbezaan adalah $ 12, maka strategi bermula untuk melindungi, pada satu ketika perbezaan harga kembali, strategi memperoleh keuntungan pulangan $ 2.

Dalam keadaan sebenar, mungkin pada pukul 10.45 A kontrak menghasilkan transaksi $100, selepas itu tiada transaksi, kontrak B pada pukul 10.00:58 berlaku transaksi $112, pada saat ini, kedua-dua harga tidak wujud, pada saat ini berapa harga dagangan, berapa banyak margin yang dapat dimakan oleh lindung nilai? tidak ada yang tahu. Satu keadaan yang mungkin adalah: pada pukul 10.00:58 kontrak A membeli dan menjual satu piringan adalah 101.9-102.1, dan tidak ada 2 margin sama sekali. Ini akan menjadi satu kesesatan yang besar untuk pengoptimuman strategi kami.

Kemudian adalah masalah pengambilan gambar, pengambilan gambar yang sebenar adalah harga yang lebih utama, masa yang lebih utama. Jika pembeli melebihi satu harga jual, biasanya akan langsung berurusan dengan satu harga jual, sebaliknya masuk ke buku pesanan menunggu. Data K-line jelas tidak membeli satu harga jual, adalah pengambilan gambar yang tidak dapat meniru tahap butiran.

Akhirnya, strategi itu sendiri adalah kesan transaksi ke atas pasaran, jika ia adalah kecil wang yang ditarik balik, tidak banyak kesan. Tetapi jika peratusan urus niaga yang besar, akan memberi kejutan kepada pasaran. Bukan sahaja dengan segera berdagang, titik penurunan harga akan besar, jika anda menarik balik pesanan anda berdagang, sebenarnya merampas transaksi pedagang lain yang sepatutnya dibeli, kesan kupu-kupu akan memberi kesan kepada pasaran. Dan kesan ini tidak boleh diberikan secara kuantitatif, hanya berdasarkan pengalaman bahawa perdagangan frekuensi tinggi hanya dapat menampung wang yang kecil.

Pengesanan semula berdasarkan kedalaman dan tik masa nyata

FMZ menyediakan pemantauan semula pada tahap cakera sebenar, yang dapat mendapatkan data sejarah sebenar dengan kedalaman 20 file, tik pada tahap saat sebenar, transaksi setiap mata wang, dan lain-lain, dan berdasarkan ini.Fungsi main semula cakera sebenar◦ Data retrospeksi sedemikian sangat besar dan lambat, biasanya hanya boleh diteruskan dalam dua hari. Untuk frekuensi yang agak tinggi atau strategi yang ketat untuk penghakiman masa, retrospeksi pada tahap cakera sebenar adalah perlu. FMZ mengumpul pasangan transaksi dan masa yang tidak lama, tetapi terdapat lebih daripada 70 bilion data sejarah.

img

Mekanisme pengukuran balik berdasarkan aliran pesanan yang ditukar setiap sen

Terdapat sedikit maklumat mengenai garis K, dan kedalaman juga boleh menjadi kedalaman palsu, tetapi satu data adalah kesediaan perdagangan pasaran yang sebenar, yang mencerminkan sejarah perdagangan yang paling sebenar, iaitu transaksi secara berturut-turut. Artikel ini akan mencadangkan sistem pengukuran balik frekuensi tinggi berdasarkan aliran pesanan, yang akan mengurangkan jumlah data pengukuran balik pada tahap sebenar, dan beberapa kesan perdagangan analog terhadap pasaran.

Saya telah memuat turun satu transaksi perpayaran kontrak kekal XTZ selama 5 hari yang baru-baru ini (Alamat muat turun:https://www.fmz.com/upload/asset/1ff487b007e1a848ead.csvPada tahun 2010, terdapat lebih daripada 213,000 data yang dikemaskini di laman web ini, yang merupakan jenis yang tidak begitu popular.

[['XTZ', 1590981301905, 2.905, 0.4, 'False\n'],
 ['XTZ', 1590981303044, 2.903, 3.6, 'True\n'],
 ['XTZ', 1590981303309, 2.903, 3.7, 'True\n'],
 ['XTZ', 1590981303738, 2.903, 238.1, 'True\n'],
 ['XTZ', 1590981303892, 2.904, 0.1, 'False\n'],
 ['XTZ', 1590981305250, 2.904, 0.1, 'False\n'],
 ['XTZ', 1590981305643, 2.903, 197.3, 'True\n'],

Data adalah senarai dua dimensi, yang diurutkan mengikut masa urus niaga. Makna spesifiknya ialah: nama jenis, harga urus niaga, waktu urus niaga, jumlah urus niaga, sama ada pesanan dijual secara aktif. Terdapat pembelian atau penjualan, setiap urus niaga termasuk pembeli dan penjual, jika pembeli adalah pembuat pasaran, penjual adalah pemegang transaksi secara aktif, maka data terakhir adalah benar.

Pertama, berdasarkan arah urus niaga, anda boleh membuat kesimpulan yang agak tepat mengenai pembelian dan penjualan di pasaran, jika pesanan jual secara aktif, maka harga beli pada masa ini adalah harga urus niaga, jika pesanan pembelian secara aktif, maka harga jual adalah harga urus niaga, jika ada urus niaga baru maka diskaun baru diperbaharui, hasil terakhir yang tidak diperbaharui disimpan. Sangat mudah untuk melancarkan data di atas pada saat terakhir, harga beli adalah 2.903, harga jual adalah 2.904.

Mengikut aliran pesanan, ia boleh diambil seperti ini: contohnya, satu pesanan, harga adalah harga, jumlah pesanan adalah jumlah, pada masa ini piring beli dan jual masing-masing adalah tawaran, ask. Jika harga lebih rendah daripada permintaan, lebih tinggi daripada tawaran, maka terlebih dahulu dinilai sebagai pembuat, dan boleh mengambil alih terlebih dahulu, maka selepas itu semua urus niaga dalam tempoh masa pesanan harus diambil alih dengan pesanan ini. Jika harga adalah lebih rendah daripada atau sama dengan tawaran, tidak boleh mengambil alih terlebih dahulu, pesanan yang berpatutan dengan harga yang lebih rendah daripada harga ini diambil alih), pengambilan alih adalah harga, jumlah urus niaga adalah urus niaga berturut-turut sehingga pesanan sepenuhnya ditukar atau ditarik balik. Jika harga lebih tinggi daripada permintaan, dinilai sebagai pemegang, maka semua urus niaga dalam tempoh masa yang ada harus diambil alih dengan harga yang lebih rendah daripada harga yang sama dengan pesanan.

Salah satu masalah yang mudah dilihat dalam pengambilan ini ialah jika pesanan adalah pemegang, keadaan sebenar adalah dapat bertransaksi dengan segera, dan tidak menunggu pesanan baru untuk diambil. Pertama, kita tidak mempertimbangkan jumlah pesanan yang dipaparkan, walaupun ada data, keputusan langsung mengenai transaksi juga berubah kedalaman dan mempengaruhi pasaran. Tetapi pengambilan berdasarkan pesanan baru, bersamaan dengan menggantikan pesanan yang sebenarnya dalam sejarah menjadi pesanan anda, tidak akan melampaui batasan jumlah transaksi di pasaran itu sendiri, dan keuntungan akhirnya tidak boleh melebihi keuntungan maksimum yang dihasilkan.

Terdapat juga beberapa butiran kecil, jika harga beli pesanan sama dengan membeli satu, sebenarnya masih ada kebarangkalian tertentu untuk membeli satu harga yang diambil, perlu mempertimbangkan keutamaan pesanan dan kebarangkalian transaksi, dan lain-lain, yang lebih rumit, tidak dipertimbangkan di sini.

Mengambil kod

Objek bursa boleh merujuk kepada pengenalan awal, tidak berubah, hanya menambah perbezaan antara bayaran pembuat dan pemegang, dan mengoptimumkan kelajuan ulangan; berikut adalah kod yang diambil.

    symbol = 'XTZ'
    loop_time = 0
    intervel = 1000 #策略的休眠时间为1000ms
    init_price = data[0][2] #初始价格
    e = Exchange([symbol],initial_balance=1000000,maker_fee=maker_fee,taker_fee=taker_fee,log='') #初始化交易所
    depth = {'ask':data[0][2], 'bid':data[0][2]} #深度
    order = {'buy':{'price':0,'amount':0,'maker':False,'priority':False,'id':0},
             'sell':{'price':0,'amount':0,'maker':False,'priority':False,'id':0}} #订单
    for tick in data:
        price = int(tick[2]/tick_sizes[symbol])*tick_sizes[symbol] #成交价格
        trade_amount = tick[3] #成交数量
        time_stamp = tick[1] #成交时间戳
        if tick[4] == 'False\n':
            depth['ask'] = price
        else:
            depth['bid'] = price
        
        if depth['bid'] < order['buy']['price']:
            order['buy']['priority'] = True
        if depth['ask'] > order['sell']['price']:
            order['sell']['priority'] = True
        if price > order['buy']['price']:
            order['buy']['maker'] = True
        if price < order['sell']['price']:
            order['sell']['maker'] = True
        
        #订单网络延时也可以作为撮合条件之一,这里没考虑
        cond1 = order['buy']['priority'] and order['buy']['price'] >= price and order['buy']['amount'] > 0
        cond2 = not order['buy']['priority'] and order['buy']['price'] > price and order['buy']['amount'] > 0
        cond3 = order['sell']['priority'] and order['sell']['price'] <= price and order['sell']['amount'] > 0
        cond4 = not order['sell']['priority'] and order['sell']['price'] < price and order['sell']['amount'] > 0

        if cond1 or cond2:
            buy_price = order['buy']['price'] if order['buy']['maker'] else price
            e.Buy(symbol, buy_price, min(order['buy']['amount'],trade_amount), order['buy']['id'], order['buy']['maker'])
            order['buy']['amount'] -= min(order['buy']['amount'],trade_amount)
            e.Update(time_stamp,[symbol],{symbol:price})
        if cond3 or cond4:
            sell_price = order['sell']['price'] if order['sell']['maker'] else price
            e.Sell(symbol, sell_price, min(order['sell']['amount'],trade_amount), order['sell']['id'], order['sell']['maker'])
            order['sell']['amount'] -= min(order['sell']['amount'],trade_amount)
            e.Update(time_stamp,[symbol],{symbol:price})

        if time_stamp - loop_time > intervel:
            order = get_order(e,depth,order) #交易逻辑,这里未给出
            loop_time += int((time_stamp - loop_time)/intervel)*intervel

Perhatikan beberapa butiran:

  • 1.当有新成交时,要先去撮合订单,再去根据最新的价格去下单。
  • 2.每个订单都有两个属性:maker——是否为maker,priority——撮合优先级,以买单为例,当买价小于卖一,标记为maker,当买价大于买一是标记为优先撮合,priority决定了价格等于买价是是否撮合,maker决定了手续费。
  • 3.订单的maker和priority是更新的,如下了一笔很大的超过盘口的买单,当出现一个价格大于买价时,此时剩余的成交量将是maker。
  • 4.策略的intervel是必须的,它可以代表行情的延时。

Ujian semula strategi grid

Akhirnya sampai pada tahap ujian semula yang sebenar, kita akan mengkaji semula strategi grid yang paling klasik untuk melihat apakah ia mencapai kesan yang diharapkan. Prinsip strategi adalah kenaikan harga 1%, kita memegang senarai kosong dengan nilai tertentu (tidak mempunyai banyak pesanan), mengira pesanan jual beli yang dipasang terlebih dahulu. Kod tidak dikeluarkan.Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)Dalam fungsi ini, parameternya ialah: pasangan dagangan, harga menyimpang 1% daripada nilai pemegang, ketumpatan langganan 0.3%, selang tidur ms, bayaran langganan, makan bayaran langganan.

Dalam tempoh 5 hari terakhir, pasaran XTZ berada dalam tahap goyah dan sangat sesuai untuk grid.img

Kami mula-mula mengkaji semula kesan saiz simpanan yang berbeza terhadap pendapatan, dan pendapatan yang diukur semula oleh mekanisme simpanan tradisional pasti akan meningkat dengan peningkatan simpanan.

e1 = Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e1.account['USDT'])
e2 = Grid('XTZ',1000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e2.account['USDT'])
e3 = Grid('XTZ',10000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e3.account['USDT'])
e4 = Grid('XTZ',100000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e4.account['USDT'])

Keseluruhan empat kumpulan telah diuji semula, dengan nilai simpanan masing-masing 100, 1000, 10000, 100000, dan ujian semula menggunakan masa 1.3s. Hasilnya adalah sebagai berikut:

{'realised_profit': 28.470993031132966, 'margin': 0.7982662957624465, 'unrealised_profit': 0.0104554474048441, 'total': 10000028.481448, 'leverage': 0.0, 'fee': -0.3430967859046398, 'maker_fee': -0.36980249726699727, 'taker_fee': 0.026705711362357405}
{'realised_profit': 275.63148945320177, 'margin': 14.346335829979132, 'unrealised_profit': 4.4382117331794045e-14, 'total': 10000275.631489, 'leverage': 0.0, 'fee': -3.3102045933457784, 'maker_fee': -3.5800688964477048, 'taker_fee': 0.2698643031019274}
{'realised_profit': 2693.8701498889504, 'margin': 67.70120400534114, 'unrealised_profit': 0.5735269329348516, 'total': 10002694.443677, 'leverage': 0.0001, 'fee': -33.984021415250744, 'maker_fee': -34.879233866850974, 'taker_fee': 0.8952124516001403}
{'realised_profit': 22610.231198585603, 'margin': 983.3853688758861, 'unrealised_profit': -20.529965947304365, 'total': 10022589.701233, 'leverage': 0.002, 'fee': -200.87094000385412, 'maker_fee': -261.5849078470078, 'taker_fee': 60.71396784315319}

Ia boleh dilihat bahawa keuntungan yang akhirnya dicapai adalah 28.4%, 27.5%, 26.9%, dan 22.6% dari nilai simpanan masing-masing. Ini juga sesuai dengan keadaan sebenar, semakin besar nilai simpanan, semakin besar nilai pesanan, semakin mungkin berlaku transaksi sebahagian, pendapatan yang akhirnya dicapai juga lebih kecil berbanding dengan jumlah pesanan. Gambar berikut adalah perbandingan pendapatan relatif dari nilai simpanan masing-masing 100 dan 10000:img

Kami juga boleh mengulangi kesan parameter yang berbeza terhadap keuntungan, seperti kerapatan pemasangan, masa tidur, kos prosedur, dan lain-lain. Sebagai contoh, masa tidur diubah menjadi 100ms berbanding masa tidur 1000ms, untuk melihat keuntungan. Hasil pengulanan adalah sebagai berikut:

{'realised_profit': 29.079440803790423, 'margin': 0.7982662957624695, 'unrealised_profit': 0.0104554474048441, 'total': 10000029.089896, 'leverage': 0.0, 'fee': -0.3703702128662524, 'maker_fee': -0.37938946377435134, 'taker_fee': 0.009019250908098965}

Pendapatan meningkat sedikit, ini kerana strategi hanya menggantung satu set pesanan, dan ada beberapa pesanan yang tidak dapat dimakan kerana harga yang tidak berubah dan penurunan waktu tidur memperbaiki masalah ini. Ini juga menunjukkan pentingnya strategi jaring untuk menggantung banyak set pesanan.

Ringkasan

Inovasi ini mengemukakan satu sistem pemantauan balik baru berdasarkan aliran pesanan, yang boleh sebahagian meniru keadaan pemotongan order, order makan, transaksi, penangguhan, dan lain-lain, sebahagian mencerminkan kesan jumlah dana strategi terhadap keuntungan, mempunyai nilai rujukan penting untuk strategi frekuensi tinggi dan strategi lindung nilai, pemantauan balik yang tepat menunjukkan arah untuk mengoptimumkan parameter strategi; juga telah disahkan dalam masa yang lama; dan mengawal data yang diperlukan untuk pemantauan balik dengan lebih baik, dan kelajuan pemantauan balik sangat cepat.


Berkaitan

Lebih lanjut

mungkinStrategi ini adalah 1% untuk setiap kenaikan harga. Berapa lama lagi untuk naik 1 peratus?

mungkinStrategi ini adalah 1% untuk setiap kenaikan harga. ---------------------------- Pergilah. Berapa lama lagi untuk naik 1 peratus?

KhotbahSemua indeks adalah GB.

DsaidasiApakah jumlah data yang besar, adakah laman web ini diterima?

Rumput/upload/asset/1ff487b007e1a848ead.csv

RumputIni adalah kaedah yang baik untuk mengulangi, tetapi dengan data yang mendalam, ia terlalu banyak.

RumputIa jauh lebih kecil daripada pengukuran semula pada skala rak sebenar, melihat seberapa sibuk transaksi, 1M-20M sehari.