
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.
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 24⁄7, jadi angka ini mungkin agak konservatif)
Tinggi: Harga tertinggi hari itu
Buka: Harga pembukaan hari itu
Rendah: Harga terendah hari ini
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.
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.
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:

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) # 更新日志信息
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.

Lihat hasil backtest

Dapat dilihat bahwa strategi ini berkinerja baik dalam pengujian ulang bulan ini.
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.
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.