Strategi perdagangan kuantitatif dengan analisis momentum harga dalam Python

Penulis:Lydia, Dicipta: 2023-01-11 11:35:36, Dikemas kini: 2023-09-20 11:20:06

img

Strategi perdagangan kuantitatif dengan analisis momentum harga dalam Python

Pengenalan kepada strategi perdagangan momentum harga

Strategi perdagangan momentum menganalisis perbandingan pasukan kedudukan panjang dan pendek melalui hubungan antara harga pembukaan, harga tertinggi, dan harga terendah dalam tempoh masa tertentu, yang secara tidak langsung membolehkan kita memahami pengedaran semasa pasukan panjang dan pendek di pasaran.

Analisis momentum harga telah digunakan secara meluas dalam pesanan spekulatif manual tradisional, terutamanya dalam menentukan trend sepihak pada hari itu. Klishe lama, apa yang harus dimanfaatkan dari keadaan. Pengukuran terbaik keadaan adalah pengiraan perbandingan kekuatan antara sisi kedudukan panjang dan pendek. Analisis momentum harga adalah salah satu penunjuk terbaik.

Makalah ini akan menggunakan strategi ini untuk membangunkan program perdagangan spot automatik untuk mata wang digital di pasaran.Huobi.

Formula pengiraan momentum harga

AR = [Jumlah semua (High-Open) untuk N hari / Jumlah semua (Open-Low) untuk N hari] * 100

Antara mereka:

  • N: Jendela statistik kitaran masa harian biasanya 30 hari secara lalai, kerana hari dagangan efektif sebulan adalah kira-kira 30 hari (transaksi mata wang digital 24/7, yang mungkin konservatif)

  • Tinggi: harga tertinggi dalam satu hari

  • Terbuka: harga pembukaan untuk satu hari

  • rendah: harga terendah dalam satu hari

Cara menggunakan momentum harga

Momentum harga mencerminkan kedudukan harga pembukaan antara harga tertinggi dan harga terendah untuk tempoh masa.

  • Kita menganggap nilai ini adalah kira-kira 100. Jika lebih daripada 100, kuasa kedudukan panjang mula meningkat. Jika kurang daripada 100, kuasa kedudukan pendek mula berkumpul.
  • Apabila nilai AR meningkat, ini bermakna pasaran aktif dan popular, dan kedudukan panjang melonjak sepanjang jalan, tetapi jika harga terlalu tinggi, ini bermakna harga telah memasuki kawasan overbought, dan anda harus memilih masa untuk menutup kedudukan. Tidak ada standard khusus untuk ketinggian nilai AR. Secara amnya, apabila nilai AR meningkat kepada sekitar 120, harga mungkin akan jatuh kembali.
  • Apabila nilai AR menurun, ia menunjukkan bahawa pasaran menurun, dan kedudukan pendek berada dalam keadaan penuh, yang memerlukan usaha kedudukan panjang. Jika nilai AR terlalu rendah, ia menunjukkan bahawa harga mungkin telah jatuh ke kawasan oversold, dan anda boleh mempertimbangkan untuk menunggu peluang untuk pergi panjang. Secara umum, apabila nilai AR jatuh di bawah 50, harga akan berhenti jatuh dan naik pada bila-bila masa.

Nota: Nombor di atas adalah semua nilai lalai dan bukan formula kebenaran. Dalam proses perdagangan sebenar, kita harus menyesuaikan julat ini untuk menyesuaikan diri dengan keadaan pasaran semasa apabila pasaran berubah.

Melaksanakan strategi perdagangan kuantitatif untuk momentum harga di Python

Seperti biasa, kita bukaFMZ.COM, log masuk ke akaun kami, klik pada Dasbor, dan menyebarkan docker dan robot.

Sila rujuk artikel saya sebelum ini mengenai cara menggunakan docker dan robot:https://www.fmz.com/bbs-topic/9864.

Pembaca yang ingin membeli pelayan pengkomputeran awan mereka sendiri untuk menggunakan pelabuhan boleh merujuk artikel ini:https://www.fmz.com/digest-topic/5711.

Seterusnya, kita klik pada perpustakaan Strategi di lajur kiri dan klik pada Tambah strategi.

Ingat untuk memilih bahasa pengaturcaraan sebagai Python di sudut kanan atas halaman penyuntingan strategi, seperti yang ditunjukkan dalam gambar:

img

Seterusnya, kita akan menulis kod Python ke dalam halaman penyuntingan kod. Kod berikut mempunyai komen baris demi baris yang sangat terperinci, anda pembaca boleh mengambil masa anda untuk memahami. Lebih penting lagi, walaupun strategi ini ditulis berdasarkan perdagangan spot, kebolehluasan kod berikut juga mengambil kira perdagangan niaga hadapan. Pembaca yang berminat boleh cuba menulis semula kod berikut ke dalam perdagangan niaga hadapan. Logik strategi itu sendiri adalah sejagat. Di platform FMZ Quant, kami telah menyediakan antara muka API spot utama niaga hadapan dan bursa untuk anda, jadi penulisan semula akan menjadi sangat mudah dan mudah.

Kami akan menggunakan tempat Bitcoin Huobi sebagai sasaran dagangan dan mula melaksanakan strategi ini:

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.
def main(): # The main function, where the strategy logic begins.
    IDLE = 0 # It is used to mark the position status, which can be understood as 0, that is, idle status, i.e. short position status.
    LONG = 1 # Long positions
    SHORT = 2 # Short position. Note that this strategy is applied to the spot market, so there is no short opening or position. This is written here to facilitate understanding of the strategy and future expansion (such as extending to the futures market).
    state = IDLE # Variables that mark the status of a position
    while True: # Enter the loop
        r = exchange.GetRecords() # GetRecords is the official API of the FMZ Quant Platform, for detailed usage please refer to: https://www.fmz.com/api.
        if len(r) <= 1: # Judge whether the K-line is larger than one, that is, whether it is currently in the open state, or it may enter an endless loop. Here, it is also convenient for readers to expand, and the trend state of a larger K-line period is more stable.
           Log("The number of bars is not enough, wait for the next bar...") # Output logs
           continue # Python loop control statement, continuing with the next part of the loop.

        # Begin quantitative analysis of price momentum
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # Calculation formula

        account = _C(exchange.GetAccount) # Get account information, _C is also the official API of the FMZ Quant platform, for usage, please refer to: https://www.fmz.com/api.

        if ar < 95 and (state == IDLE or state == SHORT) :  # If the AR value is less than the oversold line and the account has funds, then buy all positions.
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # Buy all positions of the market order
                state = LONG # Change the position status to LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # If the AR value is greater than the overbought line and the account has a position, sell the whole position.
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # Sell all positions market order
                state = SHORT # Change the position status to SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # Update log information

Ujian belakang strategi

Selepas menulis strategi, perkara pertama yang perlu kita lakukan adalah menguji untuk melihat bagaimana ia bertindak dalam data sejarah. Tetapi sila ambil perhatian bahawa hasil backtest tidak sama dengan ramalan masa depan. Backtest hanya boleh digunakan sebagai rujukan untuk mempertimbangkan keberkesanan strategi kita. Sebaik sahaja pasaran berubah dan strategi mula mengalami kerugian besar, kita harus mencari masalah pada waktunya, dan kemudian mengubah strategi untuk menyesuaikan diri dengan persekitaran pasaran baru, seperti ambang yang disebutkan di atas. Jika strategi mempunyai kerugian lebih besar daripada 10%, kita harus menghentikan operasi strategi dengan segera, dan kemudian mencari masalah. Kita boleh mulakan dengan menyesuaikan ambang.

Klik backtest di halaman penyuntingan strategi. Pada halaman backtest, penyesuaian parameter boleh dilakukan dengan mudah dan cepat mengikut keperluan yang berbeza. Terutamanya untuk strategi dengan logik yang kompleks dan banyak parameter, tidak perlu kembali ke halaman kod sumber dan mengubahsuai satu demi satu.

Masa backtest adalah bulan terakhir. Klik untuk menambah pertukaran spot Huobi dan sasaran perdagangan BTC.

img

Hasil ujian belakang:

img

Kita boleh lihat bahawa strategi ini berjalan dengan baik dalam backtest bulan ini.

Kelebihan dan kelemahan strategi momentum harga

  • Kelebihan Berbanding dengan beberapa penunjuk teknikal tradisional yang lain, kelebihan momentum harga adalah bahawa ia tidak menggunakan harga pembukaan atau harga penutupan tunggal, tetapi memperkenalkan harga tertinggi dan terendah. Mereka dibandingkan secara dinamik, menjadikan maklumat pasaran lebih komprehensif, responsif dan makro melalui turun naik harga dalam hari.

  • Kelemahan Menggunakan nilai momentum harga secara bebas untuk menilai sama ada harga terlalu tinggi atau rendah, untuk menilai panjang / pendek, ia mungkin untuk keluar awal dalam gelombang trend utama, atau untuk memancing bawah awal dalam gelombang pasaran down utama.

Tetapan ambang strategi juga perlu ditentukan mengikut ciri-ciri objek dagangan. Fluktuasi harga pasaran mata wang digital agak besar, dan jumlah dagangan sangat besar, terutamanya pada mata wang arus perdana seperti Bitcoin, dan tidak ada had untuk kenaikan dan kejatuhan, jadi nilai ambang lebih tinggi daripada pasaran saham tradisional. Garis 80 oversold biasanya sukar disentuh, dan terdapat sedikit isyarat membeli; Walaupun garis 170 overbought sering berada di bawah ambang, isyarat jual sering dipicu. Ini akan menyebabkan strategi berada dalam kedudukan pendek untuk sebahagian besar masa, dan penggunaan dana menjadi sangat rendah. Sebagai contoh, sejak Januari tahun ini, harga Bitcoin telah meningkat dari 3500 menjadi hampir 13000 dalam gelombang pasaran lembu. Nilai ambang telah melintasi garis 170 dan sejak itu kita tidak mempunyai isyarat yang sangat tinggi. Jika kita menjual mengikut garis tradisional 170 lebih tinggi, maka hanya akan ada sebahagian kecil dari isyarat yang akan mendapat keuntungan dalam pasaran lembu, dan selepas gelombang pembukaan akan ada isyarat yang sangat kecil.

Oleh itu, tidak pernah ada strategi perdagangan Holy Grail di pasaran. Anda tidak boleh selalu membuat keuntungan tanpa backtesting dan debugging. Seperti peniaga subjektif, kami peniaga kuantitatif berakhir dengan matlamat yang sama dengan cara yang berbeza. Kami perlu menyesuaikan diri dengan keadaan tempatan mengikut perubahan pasaran dan bertindak balas terhadap perubahan pasaran. Apabila strategi tidak berkesan, kami perlu menyesuaikannya pada waktunya.

Jika anda mempunyai sebarang soalan, anda boleh meninggalkan mesej dihttps://www.fmz.com/bbs, sama ada mengenai strategi atau teknologi platform, platform FMZ Quant mempunyai profesional bersedia untuk menjawab soalan anda.


Berkaitan

Lebih lanjut