Sumber dimuat naik... memuat...

Strategi aliran pesanan menunggu linear yang dibangunkan berdasarkan fungsi main balik data

Penulis:FMZ~Lydia, Dicipta: 2022-12-23 20:06:04, Dikemas kini: 2024-12-15 16:37:47

img

Strategi aliran pesanan menunggu linear yang dibangunkan berdasarkan fungsi main balik data

Pengantar

Ia sering dikatakan bahawa perdagangan adalah seni, dan seni datang dari inspirasi. jadi hari ini saya ingin berkongsi dengan anda bagaimana untuk menggunakan FMZ Quant fungsi pemutaran data untuk meneroka inspirasi perdagangan saya.

Inspirasi dan perasaan pasaran perdagangan

Apa yang biasanya kita panggil inspirasi merujuk kepada keadaan kreatif yang dihasilkan orang dalam proses berfikir. Bagi pedagang, hemisfera kiri otak kita telah menyelesaikan perumusan satu siri peraturan seperti penulisan strategi, peruntukan modal dan penetapan parameter. Inspirasi dan perasaan pasaran perdagangan berasal dari hemisfera kanan otak.

Ramai orang pernah mendengar perkataan perasaan pasaran, yang merupakan sejenis perasaan yang tidak jelas, seperti déjà vu apa yang sedang berlaku pada masa ini.

Bagaimana untuk mendapatkan inspirasi

Dalam mata orang awam, perasaan pasaran adalah misteri. Ia adalah bakat misteri. Dengan itu, anda boleh berdiri di pasaran. Sebenarnya, ia adalah ringkasan pengalaman perdagangan subjektif oleh otak. Ia adalah perasaan prasangka yang tidak jelas yang diwujudkan melalui bertahun-tahun menonton pasaran.

Walaupun secara ketat, inspirasi tidak sama dengan perasaan pasaran, kami percaya bahawa selepas beribu-ribu kali penyempurnaan pasaran, kami akan mempunyai pemahaman yang lebih mendalam tentang pasaran, dan kami akan dapat mengembangkan strategi dengan mudah. Jadi jika anda ingin memperoleh bakat ini dan membangunkan lebih banyak strategi perdagangan. Hanya melalui sejumlah besar transaksi, kami dapat meningkatkan sistem perdagangan kami.

Walau bagaimanapun, niaga hadapan komoditi domestik dan saham hanya mempunyai beberapa jam masa dagangan sehari, jadi ia akan menjadi luar biasa untuk meningkatkan pengalaman seseorang dalam menonton pasaran, membentuk corak keuntungan dan peraturan dagangan sendiri, dan melatih refleks bersyarat seseorang secara tidak sedar dari perdagangan langsung sahaja.

Cara menggunakan pemutaran data

Fungsi pemutaran data boleh dilatih tanpa mengira jam dagangan bursa, dan ia menyokong pelbagai masa hadapan komoditi dan jenis mata wang digital. Pasaran boleh dimainkan semula secara manual atau automatik, dan masa permulaan dan akhir dan kelajuan pemutaran pasaran sejarah boleh ditetapkan secara bebas. Berbanding dengan perisian lain, mod pemutaran data K-line digunakan secara meluas, sementara FMZ Quant menggunakan mod pemutaran data pada tahap Tick, yang benar-benar dekat dengan persekitaran backtesting bot dagangan sebenar, dan ia menghasilkan semula data jumlah harga pasaran, yang membolehkan peniaga menyelam ke dalam dunia nyata.

Buka laman web rasmi FMZ Quant (fmz.comUntuk mendaftar dan log masuk, dan kemudian klik Pangkalan Data di Dasbor untuk memaparkan halaman fungsi main semula data. Terdapat empat kotak pilihan dan satu butang pilihan. Pertama, klik butang pilihan untuk memaparkan hanya varieti yang menyokong main semula bot sebenar, kemudian pilih varieti yang akan diputar semula di sebelah kiri atas, kemudian pilih waktu permulaan dan akhir data dalam dua kotak pilihan seterusnya, kemudian pilih tempoh masa data sebagai main semula bot sebenar, dan akhirnya klik butang Go di sebelah kanan untuk memulakan fungsi main semula data.

img

Terdapat tiga bahagian di bawah label data. Di sebelah kiri adalah sejarah dagangan, di mana semua pesanan yang telah ditutup dipaparkan dalam urutan kronologi. Di tengah adalah kedalaman 20 kedudukan setiap data pesanan beli dan jual. Di sebelah kanan adalah kawasan kawalan pemutaran data, di mana anda boleh memilih kaedah pemutaran data manual dan automatik, seperti menggunakan pemain media.

img

Indeks kedudukan boleh menyeret kursor ke hadapan dan ke belakang dari kiri ke kanan, membolehkan anda memilih masa permulaan pemutaran data dengan cepat.

img

Kelajuan pemutaran data juga boleh dikawal di bahagian bawah dengan menggerakkan kursor ke kanan ke kiri, dalam mili saat, untuk mempercepat dan melambatkan data semasa pemutaran.

img

Membina logik strategi

Walaupun terdapat banyak faktor yang mempengaruhi harga meningkat dan menurun, termasuk persekitaran ekonomi global, dasar makro negara, dasar industri yang berkaitan, hubungan bekalan dan permintaan, peristiwa antarabangsa, kadar faedah dan kadar pertukaran, inflasi dan deflasi, psikologi pasaran, faktor yang tidak diketahui, dan lain-lain, harga akhir di pasaran adalah hasil persaingan antara pelbagai pihak dan sisi kedudukan pendek. Jika lebih ramai orang membeli daripada menjual, harga akan meningkat; Sebaliknya, jika lebih ramai orang menjual daripada membeli, harga akan menurun. Kemudian kita hanya perlu menganalisis harga untuk membuat strategi perdagangan.

Melalui pemutaran FMZ Quant dari pasangan dagangan BTC_USDT pertukaran Binance bulan-bulan terakhir, kami mendapati bahawa apabila pasaran meningkat dan menurun dengan mendadak, buku pesanan data Tick jelas tidak simetri dari segi jumlah pesanan antara kedudukan panjang dan pendek. Apabila pasaran meningkat, jumlah pesanan panjang yang berlaku jelas lebih besar daripada jumlah pesanan pendek yang berlaku; Apabila pasaran meningkat, jumlah pesanan pendek yang berlaku jelas lebih besar daripada jumlah pesanan panjang yang berlaku. Jadi, adakah kita dapat meramalkan harga meningkat dan menurun dalam jangka masa yang singkat berdasarkan jumlah pesanan yang menunggu dalam buku pesanan?

Jawapannya adalah ya.

img

Apabila pasaran semakin meningkat, jumlah pesanan panjang jelas lebih besar daripada jumlah pesanan pendek.

img

Apabila pasaran berkurangan, jumlah pesanan pergi pendek adalah jelas lebih besar daripada jumlah pesanan pergi panjang.

Kita boleh mengumpul data Tick yang mendalam untuk mengira pesanan menunggu panjang dan pendek dan membandingkannya, jika gabungan pesanan menunggu panjang dan pendek sangat berbeza, ia mungkin menjadi peluang perdagangan yang berpotensi. Sebagai contoh, apabila jumlah pesanan kedudukan panjang adalah N kali daripada pesanan kedudukan pendek, kita boleh berfikir bahawa kebanyakan orang di pasaran adalah bullish, dan kebarangkalian kenaikan harga akan meningkat dalam masa yang singkat di masa depan; Apabila bilangan penjual pendek adalah N kali daripada penjual panjang, kita boleh berfikir bahawa kebanyakan orang di pasaran adalah bearish, dan kebarangkalian penurunan harga akan meningkat dalam masa terdekat.

Tulis strategi perdagangan

Menurut logik strategi di atas, ia mula dilaksanakan dalam kod.fmz.com> Login > Dashboard > Strategi > Tambah Strategi > Klik menu drop-down di sudut kanan atas untuk memilih bahasa Python dan mula menulis strategi. Strategi ini berfungsi sebagai pengenalan untuk mengajar, jadi saya cuba untuk mempermudah strategi dan memberi perhatian kepada komen dalam kod berikut.

Langkah 1: Menulis kerangka strategi

# Strategy main function
def onTick():
    pass


# Program entry
def main():
    while True:  # Enter the infinite loop mode
        onTick()  # Execute the strategy main function
        Sleep(1000)  # Sleep for 1 second

Kita harus menulis strategi kita dari besar ke kecil, seperti membina rumah, membina bingkai pertama dan kemudian dinding. Dalam rangka kerja ini, kita menggunakan dua fungsi: fungsi utama dan fungsi onTick. Fungsi utama adalah kemasukan program, iaitu, program akan dijalankan dari sini, kemudian masuk ke mod gelung tanpa akhir, dan melaksanakan fungsi onTick berulang kali. Kemudian kita hanya perlu menulis kandungan strategi ke dalam fungsi onTick.

Langkah 2: Tulis pembolehubah global

vol_ratio_arr = []  # Long/Short positions pending order ratio array
mp = 0  # Virtual positions

Sebab mengapa vol_ratio_arr ditakrifkan sebagai pembolehubah global, kerana strategi saya perlu mengumpul nisbah pesanan menunggu kedudukan panjang dan pendek sekeping data Tick. Jika kita meletakkan pembolehubah vol_ratio_arr ke dalam fungsi onTick, jelas tidak munasabah untuk menjalankan dengan gelung. Apa yang kita perlukan adalah mengubah nilai pembolehubah dalam mod gelung apabila keadaan tertentu dipenuhi. Cara yang paling munasabah adalah meletakkan pembolehubah di luar gelung.

Pengurusan kedudukan sangat diperlukan, kerana ia berkaitan dengan logik perdagangan. Secara amnya, kita mengira pasangan mata wang yang dipegang dengan memperoleh akaun dalam transaksi spot. Untuk mempermudah kod, pembolehubah kedudukan maya global ditakrifkan secara langsung untuk mengawal logik perdagangan.

Langkah 3: Hitung nisbah kosong kali semasa

depth = exchange.GetDepth()  # Get depth data
asks = depth['Asks']  # Get asks array
bids = depth['Bids']  # Get bids array
asks_vol = 0  # All pending orders at ask price
bids_vol = 0  # All pending orders at bid price
for index, ask in enumerate(asks):  # Iterate through the ask price array
    # Linear calculation of all pending orders at the ask price
    asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids):  # Iterate through the bid price array
    # Linear calculation of all pending orders at the bid price
    bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol  # Calculate long/short position ratio

Seperti yang kita semua tahu, mata wang digital biasanya 20 tahap data yang mendalam, jadi kita boleh menambah jumlah pesanan kedudukan panjang dan pendek untuk mengira nisbah antara kedudukan panjang dan pendek. Apabila nilai ini lebih besar daripada 1, ini bermakna bahawa orang bullish lebih besar daripada orang bearish, menunjukkan bahawa harga akan meningkat dalam jangka masa yang singkat di masa depan; apabila nilai ini kurang dari 1, ini bermakna bahawa orang bearish lebih besar daripada orang bullish, menunjukkan bahawa harga akan jatuh dalam jangka masa yang singkat di masa depan.

Walau bagaimanapun, ada satu perkara yang perlu dibezakan. Semakin dekat pesanan yang menunggu dengan pasaran pembukaan, semakin kuat keinginan untuk menaik atau berish. Sebagai contoh, pesanan peringkat pertama pasti lebih bersedia menaik daripada tahap ke-20. Oleh itu, apabila kita mengumpulkan pesanan yang menunggu, kita perlu memberikan berat yang berbeza kepada pesanan 20 tahap dengan cara linear, yang akan lebih munasabah.

Langkah 4: Pengiraan linear nisbah kedudukan panjang/pendek dalam tempoh masa

global vol_ratio_arr, mp  # Introduce global variables
vol_ratio_arr.insert(0, bidask_ratio)  # Put the long/short position ratio into the global variable array
if len(vol_ratio_arr) > 20:  # If the array exceeds the specified length
    vol_ratio_arr.pop()  # Delete the oldest elements
all_ratio = 0  # Temporary variable, ratio of all long and short position pending orders
all_num = 0  # Temporary variables, all linear multipliers
for index, vol_ratio in enumerate(vol_ratio_arr):  # Variable global variable arrays
    num = 20 - index  # Linear multiplier
    all_num = all_num + num  # Linear multiplier accumulation
    all_ratio = all_ratio + vol_ratio * num  # Accumulation of all long and short position pending orders ratio
ratio = all_ratio / all_num  # Linear long and short position pending order ratio

Nisbah kedudukan panjang-pendek boleh diperolehi dengan membahagikan pesanan pending kumulatif panjang dengan pesanan pending kumulatif pendek. Walau bagaimanapun, ini hanya data tik. Jika hanya satu data tik digunakan, ia mungkin bukan pilihan yang bijak untuk memutuskan transaksi membeli dan menjual, kerana di pasaran yang berubah dengan cepat, satu data tik tidak meyakinkan. Jadi kita perlu mengumpulkan sekeping data Tick tetap, dan akhirnya mengira nilai wajar melalui pengiraan linear.

Langkah 5: Buat pesanan

last_ask_price = asks[0]['Price']  # Latest buy one price for asks
last_bid_price = bids[0]['Price']  # Latest sell one price for bids
if mp == 0 and ratio > buy_threshold:  # If no currency is held currently, and the ratio is greater than the specified value
    exchange.Buy(last_ask_price, 0.01)  # Buy
    mp = 1  # Set the value of virtual position
if mp == 1 and ratio < sell_threshold:  # If there is currency held currently, and the ratio is less than the specified value
    exchange.Sell(last_bid_price, 0.01)  # Sell
    mp = 0  # Reset the value of virtual position

Oleh kerana kita perlu menentukan harga semasa membuat pesanan, kita boleh terus menggunakan harga jual satu terakhir semasa membeli; Apabila menjual, anda boleh terus menggunakan harga beli satu terakhir. Akhirnya, menetapkan semula nilai kedudukan maya selepas membuat pesanan.

Kesimpulan

Di atas adalah analisis kod strategi aliran pesanan menunggu Linear yang dibangunkan berdasarkan fungsi pemutaran data. Jika anda seorang pemula dalam perdagangan kuantitatif, fungsi pemutaran data dapat belajar berdagang dengan kos sifar dan memendekkan masa untuk memahami transaksi. Biasanya memerlukan beberapa tahun untuk bot sebenar atau transaksi simulasi untuk mencapai hasil awal. Ia memerlukan beberapa minggu untuk fungsi pemutaran data untuk mencapai kesan yang sama. Dengan premis tidak membuang masa, anda boleh belajar berdagang dengan kerugian minimum. Bagi peniaga maju, pemutaran semula dinamik dapat membantu anda menganalisis masalah masa lalu anda, mengesahkan dan meningkatkan strategi perdagangan, meningkatkan keyakinan peniaga dalam strategi, dan membantu menjana inspirasi strategik baru.


Berkaitan

Lebih lanjut