Sumber daya yang dimuat... Pemuatan...

Cacat dari sistem reverse osmosis frekuensi tinggi dan reverse osmosis linear

Penulis:Rumput, Dibuat: 2020-06-04 16:48:02, Diperbarui: 2024-12-10 20:32:01

img

Aku diBinance melakukan over-the-counter dan over-the-counter strategi hedgingPada saat yang sama, sebuah mesin retesting diterbitkan. Laporan pertama didasarkan pada retesting garis K satu jam, yang memverifikasi efektivitas strategi. Namun, waktu istirahat dari strategi publik yang sebenarnya adalah 1s, yang merupakan strategi yang cukup tinggi, dan retesting garis K satu jam jelas tidak dapat menghasilkan hasil yang akurat.Retrograde menitHasilnya, hasil retargeting meningkat banyak, tetapi masih tidak dapat menentukan parameter apa yang harus digunakan dalam situasi tingkat detik, dan pemahaman tentang keseluruhan strategi tidak jelas. Alasan utama adalah kelemahan penting dari retargeting berdasarkan garis K.

Pertanyaan yang didasarkan pada retrospeksi K-line

Pertama-tama, apa yang disebut garis K historis? Data garis K berisi empat harga, dua waktu awal, dan transaksi interval. Sebagian besar platform dan kerangka kerja kuantitatif didasarkan pada retesting garis K, dan platform FMZ juga menyediakan retesting tingkat tik.

Pertama adalah masalah waktu, waktu harga tertinggi dan harga terendah data K-line tidak diberikan, tidak perlu dipertimbangkan, tetapi yang paling penting adalah harga buka dan tutup tidak dimulai pada waktu buka dan tutup. Bahkan varietas perdagangan yang tidak terlalu dingin, seringkali tidak ada perdagangan selama beberapa puluh detik, dan ketika kita meninjau kembali strategi multi-varietas, biasanya secara default harga buka dan tutupnya bersamaan, yang juga merupakan dasar dari penilaian harga buka kembali.

Bayangkan dengan menggunakan garis menit untuk mempertimbangkan laba dari dua varietas, yang biasanya memiliki perbedaan 10 dolar, dan sekarang ditemukan pada pukul 10:01 waktu, kontrak A ditutup dengan harga 100, kontrak B dengan 112, dengan perbedaan 12 dolar, maka strategi mulai melakukan hedging, dan pada suatu saat perbedaan harga kembali, dan strategi menghasilkan laba laba 2 dolar.

Pada saat ini, tidak ada yang tahu berapa harga yang akan terjadi dan berapa banyak margin yang dapat dimakan oleh lindung nilai. Salah satu kemungkinan adalah: pada saat ini, kontrak A menghasilkan transaksi 100 yuan, setelah itu tidak ada transaksi, kontrak B pada saat ini terjadi transaksi 112 yuan pada saat ini, pada saat ini, tidak ada dua harga.

Selanjutnya adalah masalah pengambilan gambar, pengambilan gambar yang sebenarnya adalah prioritas harga, prioritas waktu. Jika pembeli melebihi satu harga jual, biasanya akan langsung melakukan transaksi satu harga jual, sebaliknya masuk ke buku pesanan menunggu. Data K-line jelas tidak membeli satu harga jual, adalah pengambilan gambar tingkat detail yang tidak dapat disesuaikan.

Terakhir adalah dampak strategi sendiri transaksi pada pasar, jika kecil dana reversal, tidak banyak dampak. Tetapi jika jumlah transaksi besar, akan menimbulkan dampak pada pasar. Tidak hanya segera transaksi saat harga slip point akan besar, jika reversal Anda pesanan selesai transaksi, sebenarnya merampas transaksi lain yang awalnya akan membeli pedagang, efek kupu-kupu akan mempengaruhi pasar.

Pengecekan kembali berdasarkan kedalaman dan tik secara real-time

FMZ menyediakan retrospeksi real-time, yang dapat mengambil data sejarah 20 file depth, real-time tick-by-second, transaction-by-pen, dan lain-lain, dan berdasarkan data tersebut, FMZ dapat melakukan retrospeksi real-time.Fungsi pemutaran rekaman Data retrograde ini sangat besar dan lambat, biasanya hanya dapat retrograde dalam dua hari. Untuk frekuensi yang relatif tinggi atau strategi yang ketat untuk penilaian waktu, retrograde pada tingkat cakram nyata adalah suatu keharusan. FMZ mengumpulkan pasangan transaksi dan waktu yang tidak lama, tetapi juga lebih dari 70 miliar data historis.

img

Mekanisme retrospektif berdasarkan aliran pesanan transaksi per butir

Terlalu sedikit informasi tentang garis K, dan kedalaman juga bisa menjadi kedalaman palsu, tetapi ada data yang merupakan kemauan perdagangan pasar yang sebenarnya, yang mencerminkan sejarah perdagangan yang paling nyata, yaitu transaksi berturut-turut.

Saya telah mengunduh transaksi satu per satu kontrak jangka panjang XTZ selama 5 hari terakhir (URL unduh: https://www.xtz.com/)https://www.fmz.com/upload/asset/1ff487b007e1a848ead.csvPada tahun 2010, jumlah data yang dihimpun di situs ini mencapai 213.000 data, yang merupakan varietas yang tidak populer.

[['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 daftar dua dimensi, yang disusun berdasarkan waktu transaksi. Arti spesifiknya adalah: nama varietas, harga transaksi, batas waktu transaksi, jumlah transaksi, apakah pesanan dijual secara aktif. Ada pembelian atau penjualan, setiap transaksi mencakup pembeli dan penjual, jika pembeli adalah pembuat pasar, penjual adalah penjual transaksi aktif, maka data terakhir adalah benar.

Pertama, berdasarkan arah transaksi, Anda dapat dengan cukup akurat menebak satu beli dan satu jual di pasar, jika itu adalah pesanan jual yang proaktif, maka harga beli saat ini adalah harga transaksi, jika pesanan pembelian yang proaktif, maka harga jual adalah harga transaksi, jika ada transaksi baru maka memperbarui piringan baru, yang tidak diperbarui menyimpan hasil terakhir kali. Sangat mudah untuk meluncurkan data di atas pada saat terakhir, harga beli adalah 2.903, harga jual adalah 2.904.

Berdasarkan aliran pesanan, dapat diambil seperti ini: misalnya, satu transaksi, harga adalah harga, jumlah pesanan adalah jumlah, pada saat ini piringan beli dan jual masing-masing adalah bid, ask. Jika harga lebih rendah dari ask, lebih tinggi dari bid, maka pertama-tama dinilai sebagai pembuat, dan dapat disinkronkan terlebih dahulu, maka setelah itu semua transaksi harga lebih rendah dari atau sama dengan harga dalam waktu pesanan harus diambil dengan pesanan ini. Jika harga lebih rendah dari atau sama dengan bid, tidak dapat disinkronkan terlebih dahulu, harga transaksi harga lebih rendah dari harga pesanan ini diambil dengan pesanan ini.

Salah satu masalah yang dapat dilihat dengan mudah dari pengambilan gambar ini adalah bahwa jika pesanan adalah taker, maka sebenarnya transaksi dapat dilakukan dengan segera, bukan menunggu pesanan baru untuk diambil. Pertama, kami tidak mempertimbangkan jumlah pesanan yang dipesan, bahkan jika ada data, penilaian langsung transaksi juga berubah kedalaman dan mempengaruhi pasar. Namun, pengambilan gambar berdasarkan pesanan baru, setara dengan mengganti pesanan yang sebenarnya dalam sejarah menjadi pesanan Anda, tidak akan melampaui batas transaksi pasar itu sendiri, dan keuntungan akhirnya tidak dapat melebihi keuntungan maksimum yang dihasilkan.

Ada juga beberapa detail kecil, jika harga beli pesanan sama dengan membeli satu, sebenarnya masih ada probabilitas tertentu untuk membeli satu harga yang diambil, perlu dipertimbangkan prioritas order dan kemungkinan transaksi, dll, yang lebih rumit, tidak dipertimbangkan di sini.

Mengambil kode

Objek bursa dapat merujuk pada pengantar awal, tidak berubah pada dasarnya, hanya menambahkan perbedaan biaya pembuat dan pemegang, dan mengoptimalkan kecepatan retesting.

    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

Beberapa detail yang perlu diperhatikan:

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

Pengujian kembali strategi grid

Akhirnya sampai pada tahap uji ulang yang sebenarnya, kita akan melihat kembali strategi jaring yang paling klasik untuk melihat apakah efek yang diharapkan dicapai. Prinsip strategi adalah kenaikan harga 1%, kita menyimpan sebuah daftar kosong dengan nilai tertentu (yang sebaliknya memiliki banyak pesanan), menghitung tiket penjualan dan memasang terlebih dahulu.Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)Dalam fungsi ini, parameternya adalah: pasangan transaksi, harga menyimpang 1% dari nilai kepemilikan, kepadatan hookup 0.3%, interval tidur ms, biaya hookup, biaya makan tunggal.

Pada 5 hari terakhir, pasar XTZ berada dalam fase goyah, sangat cocok untuk grid.img

Kami pertama-tama mempertimbangkan dampak dari ukuran saham yang berbeda pada pendapatan, dan pendapatan yang dihitung kembali oleh mekanisme pemetaan tradisional pasti akan meningkat seiring dengan peningkatan saham.

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'])

Empat kelompok diukur kembali, dengan nilai penyimpanan masing-masing 100, 1000, 10000, 100000, dan diukur kembali dengan total waktu penggunaan 1,3 s. 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}

Dapat dilihat bahwa akhirnya telah tercapai keuntungan masing-masing 28.4%, 27.5%, 26.9%, 22.6% dari nilai kepemilikan. Ini juga sesuai dengan situasi nyata, semakin besar nilai kepemilikan, semakin besar nilai daftar, semakin besar kemungkinan terjadi transaksi sebagian, dan hasil akhirnya yang tercapai relatif terhadap jumlah daftar juga lebih kecil. Gambar berikut adalah perbandingan hasil relatif dari nilai saham masing-masing 100 dan 10000:img

Kita juga dapat mengamati kembali efek dari berbagai parameter pada keuntungan yang diperoleh, seperti kepadatan pemasangan, waktu tidur, biaya prosedur, dll. Sebagai contoh, mengubah waktu tidur menjadi 100 ms, dibandingkan dengan waktu tidur 1000 ms, untuk melihat keuntungan. Hasil pengukuran kembali 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}

Keuntungan meningkat sedikit, karena strategi hanya menggantung satu set pesanan, dan ada beberapa pesanan yang tidak dapat dimakan karena harga yang berfluktuasi karena tidak dapat berubah, mengurangi waktu tidur memperbaiki masalah ini. Ini juga menunjukkan pentingnya strategi jaringan menggantung beberapa set pesanan.

Pengamatan

Inovasi ini mengusulkan sistem retrospeksi baru berdasarkan aliran pesanan, yang dapat sebagian mensimulasikan keadaan pemotongan order, order makan, transaksi, penundaan, dan lain-lain, sebagian mencerminkan dampak jumlah dana strategi terhadap keuntungan, memiliki nilai referensi penting untuk strategi frekuensi tinggi dan strategi hedging, retrospeksi presisi tinggi menunjukkan arah untuk mengoptimalkan parameter strategi; juga telah diverifikasi secara nyata dalam jangka panjang; dan memiliki kontrol yang lebih baik atas jumlah data yang dibutuhkan untuk retrospeksi, dan kecepatan retrospeksi sangat cepat.


Berkaitan

Lebih banyak

mungkinStrategi ini adalah kenaikan harga sebesar 1%. Berapa lama untuk naik 1%?

mungkinStrategi ini adalah kenaikan harga sebesar 1%. Aku tidak tahu apa yang terjadi. Berapa lama untuk naik 1%?

khotbahIndeksnya ada di GB.

DsaidasiApakah situs web ini menerima data yang begitu besar?

Rumput/upload/asset/1ff487b007e1a848ead.csv

RumputCara ini sangat bagus, karena data yang digunakan untuk melakukan pengukuran dalam sangat banyak.

RumputJika Anda melihat volume transaksi yang sibuk, maka Anda akan melihat bahwa jumlah transaksi yang sibuk adalah 1M-20M per hari.