0
fokus pada
78
Pengikut

Menerapkan strategi perdagangan kuantitatif untuk analisis momentum harga menggunakan Python

Dibuat di: 2019-08-09 15:49:06, diperbarui pada: 2024-12-19 21:03:15
comments   1
hits   3521

Menerapkan strategi perdagangan kuantitatif untuk analisis momentum harga menggunakan Python

Pengantar Strategi Perdagangan Momentum Harga

Strategi perdagangan momentum menganalisis perbandingan kekuatan panjang dan pendek melalui hubungan antara harga pembukaan, harga tertinggi, dan harga terendah dalam periode waktu tertentu, dan secara tidak langsung memahami distribusi kekuatan panjang dan pendek di pasar saat ini. Menganalisis fluktuasi harga untuk melacak tren harga di masa mendatang.

Analisis momentum harga banyak digunakan dalam perdagangan manual tradisional, terutama dalam menentukan tren unilateral intraday. Ini adalah topik yang umum, apa yang terjadi dengan tren? Cara terbaik untuk mengukur tren adalah dengan membandingkan kekuatan sisi panjang dan pendek. Dalam hal perbandingan kuantitatif, analisis momentum harga adalah salah satu indikator terbaik.

Artikel ini akan menggunakan strategi ini untuk mengembangkan program perdagangan spot otomatis untuk mata uang digital di Huobi.com.

Rumus untuk menghitung momentum harga

AR = [Jumlah semua (Tinggi-Buka) dalam N hari / jumlah semua (Buka-Rendah) dalam N hari] * 100

Diantara mereka:

  • N: Jendela statistik periode waktu harian, yang umumnya 30 hari secara default, karena ada sekitar 30 hari perdagangan yang valid dalam sebulan (mata uang digital diperdagangkan 247, jadi angka ini mungkin agak konservatif)

  • Tinggi: Harga tertinggi hari itu

  • Buka: Harga pembukaan hari itu

  • Rendah: Harga terendah hari ini

Cara menggunakan momentum harga

Momentum harga mencerminkan posisi harga pembukaan antara harga tertinggi dan harga terendah selama periode waktu tertentu. Posisi ini menjadi dasar bagi kita untuk menilai tarik menarik antara kedua belah pihak.

  • Kami berasumsi bahwa nilai ini berada di kisaran 100. Jika nilainya melebihi 100, kekuatan bullish mulai meningkat, dan jika nilainya kurang dari 100, kekuatan bearish mulai terkumpul.
  • Bila nilai AR meningkat, artinya pasar sedang aktif, popularitas sedang tinggi, dan bulls sedang naik dengan cepat. Namun, jika terlalu tinggi, artinya harga sudah memasuki area overbought, dan Anda harus memilih waktu yang tepat untuk tutup posisi. Tidak ada standar khusus untuk tinggi nilai AR. Secara umum, ketika nilai AR naik hingga sekitar 120, harga cenderung turun kembali.
  • Bila nilai AR menurun, artinya pasar sedang dalam resesi, para bear sedang bersemangat, dan para bull perlu bekerja lebih keras. Jika terlalu rendah, artinya harga mungkin telah jatuh ke area oversold, dan Anda dapat mempertimbangkan untuk menunggu kesempatan untuk mengambil posisi beli. Secara umum, ketika nilai AR turun di bawah 50, harga akan berhenti turun dan malah naik.

Catatan: Angka-angka di atas semuanya merupakan nilai default dan tidak berarti kebenaran. Dalam proses perdagangan sesungguhnya, kita perlu menyesuaikan kisaran ini untuk beradaptasi dengan kondisi pasar terkini seiring perubahan pasar.

Menerapkan strategi perdagangan kuantitatif untuk momentum harga menggunakan Python

Seperti biasa, kita buka FMZ.COM, masuk ke akun, klik pusat kendali, lalu pasang host dan robot.

Untuk informasi lebih lanjut tentang cara menyebarkan host dan robot, silakan lihat artikel saya sebelumnya: https://www.fmz.com/bbs-topic/4140

Pembaca yang ingin membeli host penyebaran server komputasi awan mereka sendiri dapat merujuk ke artikel ini: https://www.fmz.com/bbs-topic/2848

Selanjutnya, kita klik pada Perpustakaan Strategi di kolom kiri dan klik Strategi Baru.

Di sudut kanan atas halaman penulisan strategi, ingatlah untuk memilih Python sebagai bahasa pemrograman, seperti yang ditunjukkan pada gambar:

Menerapkan strategi perdagangan kuantitatif untuk analisis momentum harga menggunakan Python

Selanjutnya, kita tulis kode Python ke halaman penyuntingan kode. Kode berikut memiliki komentar baris demi baris yang sangat terperinci, dan pembaca dapat memahami dan menghargainya secara perlahan. Yang lebih penting, meskipun strategi ini ditulis berdasarkan perdagangan spot, Skalabilitas kode berikut juga mempertimbangkan perdagangan berjangka. Pembaca yang tertarik dapat mencoba menulis ulang kode berikut ke dalam perdagangan berjangka. Logika strategi itu sendiri bersifat universal. Dalam Platform Kuantitatif Inventor, kami telah menyiapkan antarmuka API bursa spot dan berjangka utama untuk Anda, sehingga pekerjaan penulisan ulang akan sangat mudah dan nyaman.

Kami akan menggunakan spot Bitcoin Huobi sebagai target perdagangan dan mulai menerapkan strategi ini:

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型
def main(): # 主函数,策略逻辑从这里开始
    IDLE = 0 # 用来标记持仓状态,可以理解为0即为空闲状态,也就是空仓状态
    LONG = 1 # 多头持仓
    SHORT = 2 # 空头持仓,注意,此策略应用于现货市场,所以不存在空头开仓或者持仓情况,这里这样写,是为了方便理解策略和以后的扩展(如扩展到期货市场)
    state = IDLE # 标记持仓状态的变量
    while True: # 进入循环
        r = exchange.GetRecords() #GetRecords是发明者量化平台的官方API,详细用法请参见:https://www.fmz.com/api
        if len(r) <= 1: # 判断K线是否大于一根,也就是当前是否为开盘状态,否则可能会进入死循环,这里也方便读者进行扩展,大一些的K线周期趋势状态更稳定。
           Log("bar的数量不足, 等待下一根bar...") # 输出日志
           continue # Python循环控制语句,继续下边的循环内容

        # 开始进行价格动量的量化分析
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # 计算公式

        account = _C(exchange.GetAccount) # 获取账户信息,_C同样为发明者量化平台的官方API,用法请参见:https://www.fmz.com/api

        if ar < 95 and (state == IDLE or state == SHORT) :  # AR值小于超卖线且账户拥有资金,则全仓买入
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # 市价单全仓买入
                state = LONG # 改变持仓状态为LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # AR值大于超买线且账户有持仓,则全仓卖出
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # 市价单全仓卖出
                state = SHORT # 改变持仓状态为SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # 更新日志信息

Pengujian Ulang Strategi

Setelah menulis strategi, hal pertama yang perlu kita lakukan adalah melakukan backtesting untuk melihat bagaimana kinerjanya dalam data historis. Namun, perlu diingat bahwa hasil backtesting tidak sama dengan prediksi masa depan. Backtesting hanya dapat digunakan sebagai Lihat informasi untuk mempertimbangkan efektivitas strategi kami. Setelah pasar berubah dan strategi mulai mengalami kerugian besar, kita harus segera mengidentifikasi masalahnya dan kemudian mengubah strategi untuk beradaptasi dengan lingkungan pasar yang baru. Misalnya, jika strategi mengalami kerugian lebih dari 10%, kita harus segera hentikan strategi dan cari masalahnya, dimulai dengan menyesuaikan ambang batas.

Klik pada simulasi backtest di halaman pengeditan strategi. Pada halaman backtest, parameter dapat disesuaikan sesuai dengan kebutuhan yang berbeda untuk debugging yang mudah dan cepat. Khusus untuk strategi dengan logika kompleks dan banyak parameter, tidak perlu kembali ke kode sumber dan memodifikasinya satu per satu.

Untuk waktu pengujian ulang, kami memilih bulan terbaru, klik untuk menambahkan bursa spot Huobi dan target perdagangan BTC.

Menerapkan strategi perdagangan kuantitatif untuk analisis momentum harga menggunakan Python

Lihat hasil backtest

Menerapkan strategi perdagangan kuantitatif untuk analisis momentum harga menggunakan Python

Dapat dilihat bahwa strategi ini berkinerja baik dalam pengujian ulang bulan ini.

Keuntungan dan Kerugian Strategi Momentum Harga

  • Keuntungan

Keuntungan momentum harga dibandingkan beberapa indikator teknis tradisional lainnya adalah ia tidak lagi menggunakan harga pembukaan atau penutupan tunggal, melainkan menggabungkan harga tertinggi dan terendah. Mereka dibandingkan secara dinamis, dan melalui fluktuasi harga intraday, informasi pasar lebih komprehensif, responsnya lebih cepat, dan lebih makro.

  • Kekurangan

Menggunakan nilai momentum harga secara independen untuk menilai apakah harga terlalu tinggi atau rendah, untuk menilai apakah akan membeli atau menjual, cenderung keluar terlalu dini dalam tren besar, atau membeli harga terendah terlalu dini dalam kejatuhan pasar besar. . Secara umum, strategi ini masih termasuk ke dalam strategi efektivitas kejutan.

Penetapan ambang batas strategi juga perlu ditentukan berdasarkan karakteristik target transaksi. Fluktuasi harga di pasar mata uang digital relatif besar, dan volume perdagangannya sangat besar, terutama untuk mata uang arus utama seperti Bitcoin, yang tidak memiliki batasan harga, sehingga ambang batasnya lebih tinggi daripada pasar saham tradisional, dan 80 oversold Garis tersebut biasanya sulit disentuh. Oleh karena itu, sinyal beli lebih sedikit; sedangkan garis jenuh beli 170 sering kali berada di bawah ambang batas, sehingga sinyal jual sering kali dipicu. Hal ini akan menyebabkan strategi berada dalam posisi kosong sebagian besar waktu ketika dijalankan, dan tingkat pemanfaatan modal akan menjadi sangat rendah. Sejak Januari tahun ini, Bitcoin mengalami kenaikan tajam, dengan harga naik dari \(3.500 menjadi hampir \)13.000. Ambang batasnya melewati batas 170 sangat awal dan tetap tinggi sejak saat itu. Kalau kita jual menurut garis jenuh beli tradisional 170, kita akan keluar dari pasar pada sekitar 5.000, dan tidak akan ada sinyal untuk membuka posisi setelah itu, jadi kita hanya mendapat sedikit keuntungan di pasar yang sedang menguat.

Oleh karena itu, tidak pernah ada strategi perdagangan yang benar-benar jitu di pasar ini, yaitu strategi yang dapat menghasilkan uang selamanya tanpa harus melakukan pengujian ulang atau debugging. Kita, para pedagang kuantitatif, seperti halnya para pedagang subjektif, pada akhirnya akan mencapai tujuan yang sama. Kita perlu beradaptasi dengan perubahan pasar, beradaptasi dengan kondisi lokal, dan menanggapi keadaan yang terus berubah. Ketika suatu strategi tidak efektif, kita perlu melakukan penyesuaian tepat waktu.

Teman-teman yang memiliki pertanyaan dapat meninggalkan pesan di https://www.fmz.com/bbs. Baik itu tentang strategi atau teknologi platform, Inventor Quantitative Platform memiliki staf profesional yang siap menjawab Anda kapan saja.