Strategi perdagangan kuantitatif dengan analisis momentum harga di Python

Penulis:Lydia, Dibuat: 2023-01-11 11:35:36, Diperbarui: 2023-09-20 11:20:06

img

Strategi perdagangan kuantitatif dengan analisis momentum harga di Python

Pengantar strategi perdagangan momentum harga

Strategi perdagangan momentum menganalisis perbandingan kekuatan posisi panjang dan pendek melalui hubungan antara harga pembukaan, harga tertinggi, dan harga terendah selama periode waktu tertentu, yang secara tidak langsung memungkinkan kita untuk memahami distribusi saat ini kekuatan panjang dan pendek di pasar.

Analisis momentum harga telah banyak digunakan dalam pesanan spekulatif manual tradisional, terutama dalam menentukan tren sepihak pada hari itu. Klisé lama, apa yang harus dimanfaatkan dari situasi. Kuantifikasi terbaik dari situasi adalah kuantifikasi perbandingan kekuatan antara sisi posisi panjang dan pendek. Analisis momentum harga adalah salah satu indikator terbaik.

Makalah ini akan menggunakan strategi ini untuk mengembangkan program perdagangan spot otomatis untuk mata uang digital padaHuobi.

Rumus perhitungan momentum harga

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

Di antaranya:

  • N: Jendela statistik dari siklus waktu harian umumnya 30 hari secara default, karena hari perdagangan efektif dalam sebulan adalah sekitar 30 hari (transaksi mata uang digital 24/7, yang mungkin konservatif)

  • Tinggi: harga tertinggi dalam satu hari

  • Terbuka: harga pembukaan untuk satu hari

  • Low: harga terendah dalam satu hari

Cara menggunakan momentum harga

Momentum harga mencerminkan posisi harga pembukaan antara harga tertinggi dan harga terendah untuk jangka waktu tertentu. Posisi ini adalah dasar bagi kita untuk menilai kekuatan kedua pihak yang menarik bersama.

  • Kita asumsikan bahwa nilai ini adalah sekitar 100. jika lebih dari 100, gaya posisi panjang mulai meningkat. jika kurang dari 100, gaya posisi pendek mulai berkumpul.
  • Ketika nilai AR meningkat, itu berarti bahwa pasar aktif dan populer, dan posisi panjang melonjak sepanjang jalan, tetapi jika harga terlalu tinggi, itu berarti bahwa harga telah memasuki area overbought, dan Anda harus memilih waktu untuk menutup posisi.
  • Ketika nilai AR menurun, itu menunjukkan bahwa pasar menurun, dan posisi pendek sedang dalam pergolakan penuh, yang membutuhkan upaya posisi panjang. Jika nilai AR terlalu rendah, itu menunjukkan bahwa harga mungkin telah jatuh ke area oversold, dan Anda dapat mempertimbangkan untuk menunggu kesempatan untuk pergi panjang. Secara umum, ketika nilai AR turun di bawah 50, harga akan berhenti turun dan naik kapan saja.

Catatan: Angka di atas adalah semua nilai default dan bukan rumus kebenaran. Dalam proses perdagangan nyata, kita harus menyesuaikan kisaran ini untuk menyesuaikan dengan keadaan pasar saat ini karena perubahan pasar.

Menerapkan strategi perdagangan kuantitatif untuk momentum harga di Python

Seperti biasa, kami membukaFMZ.COM, masuk ke akun kami, klik pada Dashboard, dan menyebarkan docker dan robot.

Silakan lihat artikel saya sebelumnya tentang cara mengimplementasikan docker dan robot:https://www.fmz.com/bbs-topic/9864.

Pembaca yang ingin membeli server komputasi awan mereka sendiri untuk menyebarkan dockers dapat merujuk pada artikel ini:https://www.fmz.com/digest-topic/5711.

Selanjutnya, kita klik pada pustaka Strategi di kolom kiri dan klik pada Tambahkan strategi.

Ingatlah untuk memilih bahasa pemrograman sebagai Python di sudut kanan atas halaman pengeditan strategi, seperti yang ditunjukkan pada gambar:

img

Selanjutnya, kami akan menulis kode Python ke dalam halaman pengeditan kode. Kode berikut memiliki komentar baris demi baris yang sangat rinci, Anda pembaca dapat meluangkan waktu untuk memahami. Yang lebih penting, meskipun strategi ini ditulis berdasarkan perdagangan spot, ekstensibilitas kode berikut juga memperhitungkan perdagangan futures. Pembaca yang tertarik dapat mencoba menulis ulang kode berikut ke dalam perdagangan futures. Logika strategi itu sendiri adalah universal. Di platform FMZ Quant, kami telah menyiapkan antarmuka API futures spot dan bursa utama untuk Anda, sehingga penulisan ulang akan sangat mudah dan nyaman.

Kami akan menggunakan Bitcoin spot Huobi sebagai target perdagangan dan mulai menerapkan 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

Strategi backtesting

Setelah menulis strategi, hal pertama yang perlu kita lakukan adalah mengujinya untuk melihat bagaimana perilakunya dalam data historis. Tetapi harap dicatat bahwa hasil backtest tidak sama dengan prediksi masa depan. Backtest hanya dapat digunakan sebagai referensi untuk mempertimbangkan efektivitas strategi kita. Setelah pasar berubah dan strategi mulai memiliki kerugian besar, kita harus menemukan masalah tepat waktu, dan kemudian mengubah strategi untuk beradaptasi dengan lingkungan pasar baru, seperti ambang batas yang disebutkan di atas. Jika strategi memiliki kerugian lebih dari 10%, kita harus menghentikan operasi strategi segera, dan kemudian menemukan masalah. Kita dapat mulai dengan menyesuaikan ambang batas.

Klik backtest di halaman editing strategi. Pada halaman backtest, penyesuaian parameter dapat dilakukan dengan mudah dan cepat sesuai dengan kebutuhan yang berbeda. Terutama untuk strategi dengan logika yang kompleks dan banyak parameter, tidak perlu kembali ke halaman kode sumber dan memodifikasinya satu per satu.

Waktu backtest adalah bulan terakhir. Klik untuk menambahkan bursa spot Huobi dan target perdagangan BTC.

img

Hasil tes balik:

img

Kita bisa melihat bahwa strategi berkinerja baik dalam backtest bulan ini.

Keuntungan dan kerugian dari strategi momentum harga

  • Keuntungan Dibandingkan dengan beberapa indikator teknis tradisional lainnya, keuntungan momentum harga adalah bahwa ia tidak menggunakan harga pembukaan atau harga penutupan tunggal, tetapi memperkenalkan harga tertinggi dan terendah. Mereka dibandingkan secara dinamis, membuat informasi pasar lebih komprehensif, responsif dan makro melalui fluktuasi harga intraday.

  • Kelemahan Menggunakan nilai momentum harga secara independen untuk menilai apakah harga terlalu tinggi atau terlalu rendah, untuk menilai panjang / pendek, kemungkinan untuk keluar awal dalam gelombang tren utama, atau untuk memancing dasar awal dalam gelombang down utama pasar.

Peraturan ambang batas strategi juga perlu ditentukan sesuai dengan karakteristik objek perdagangan. Fluktuasi harga pasar mata uang digital relatif besar, dan volume perdagangan sangat besar, terutama pada mata uang arus utama seperti Bitcoin, dan tidak ada batas untuk naik dan turun, sehingga nilai ambang batas lebih tinggi daripada pasar saham tradisional. Garis oversold 80 biasanya sulit disentuh, dan ada sedikit sinyal beli; Sementara garis overbought 170 sering di bawah ambang batas, sinyal jual sering dipicu. Hal ini akan menyebabkan strategi berada dalam posisi pendek untuk sebagian besar waktu, dan pemanfaatan dana menjadi sangat rendah. Misalnya, sejak Januari tahun ini, harga Bitcoin telah naik dari 3500 menjadi hampir 13000 dalam gelombang pasar bull. Nilai ambang batas telah melintasi garis 170 sejak awal dan kami tidak memiliki sinyal yang sangat tinggi. Jika kita menjual di atas garis 170 tradisional, maka hanya akan ada sebagian kecil sinyal yang akan menghasilkan keuntungan di pasar bull, setelah gelombang pembukaan, dan setelah itu kita tidak akan mendapatkan sinyal yang sangat tinggi.

Oleh karena itu, tidak pernah ada strategi trading Holy Grail di pasar. Anda tidak selalu bisa menghasilkan keuntungan tanpa backtesting dan debugging. Seperti trader subjektif, kita trader kuantitatif berakhir dengan tujuan yang sama dengan cara yang berbeda. Kita perlu beradaptasi dengan kondisi lokal sesuai dengan perubahan pasar dan menanggapi perubahan pasar. Ketika strategi tidak efektif, kita perlu menyesuaikannya tepat waktu.

Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan dihttps://www.fmz.com/bbs, apakah itu tentang strategi atau teknologi platform, platform FMZ Quant memiliki para profesional siap menjawab pertanyaan Anda.


Berkaitan

Lebih banyak