Type/to search
8
Follow
1364
Followers
Contoh gambar MACD versi Python
Discussions
Created 2020-02-27 19:18:17  Updated 2023-10-09 22:50:01
 0
 2983

img

Contoh gambar MACD versi Python

Sebenarnya, sebelum membuat contoh kode ini, saya menemukan Inventor Quantitative Trading Platform Strategy Square: https://www.fmz.com/strategy/151972. Sudah ada versi JavaScript dari contoh gambar indikator MACD. Namun, sebagai tanggapan terhadap permintaan pengguna, versi Python dari contoh tersebut ditulis untuk dijadikan kode referensi saat mengembangkan dan merancang strategi.

Kodenya sangat sederhana:

'''backtest start: 2020-01-28 00:00:00 end: 2020-02-26 00:00:00 period: 1d exchanges: [{"eid":"OKEX","currency":"BTC_USDT"}] ''' ChartCfg = { '__isStock': True, 'title': { 'text': 'Python画图' }, 'yAxis': [{ 'title': {'text': 'K线'}, 'style': {'color': '#4572A7'}, 'opposite': False }, { 'title': {'text': '指标轴'}, 'opposite': True }], 'series': [{ 'type': 'candlestick', 'name': '当前周期', 'id': 'primary', 'data': [] }, { 'type': 'line', 'id': 'dif', 'name': 'DIF', "yAxis" : 1, 'data': [] }, { 'type': 'line', 'id': 'dea', 'name': 'DEA', "yAxis" : 1, 'data': [] }, { 'type': 'line', 'id': 'macd', 'name': 'MACD', "yAxis" : 1, 'data': [] }] } def main(): global ChartCfg preTime = 0 chart = Chart(ChartCfg) chart.reset() while True: while True: r = _C(exchange.GetRecords) if len(r) > 50: break # 计算指标 macd = TA.MACD(r) LogStatus(_D(), len(r)) # 画图 for i in range(len(r)): if r[i]["Time"] == preTime: chart.add(0, [r[i]["Time"], r[i]["Open"], r[i]["High"], r[i]["Low"], r[i]["Close"]], -1) chart.add(1, [r[i]["Time"], macd[0][i]], -1) chart.add(2, [r[i]["Time"], macd[1][i]], -1) chart.add(3, [r[i]["Time"], macd[2][i]], -1) elif r[i]["Time"] > preTime: chart.add(0, [r[i]["Time"], r[i]["Open"], r[i]["High"], r[i]["Low"], r[i]["Close"]]) chart.add(1, [r[i]["Time"], macd[0][i]]) chart.add(2, [r[i]["Time"], macd[1][i]]) chart.add(3, [r[i]["Time"], macd[2][i]]) preTime = r[i]["Time"] Sleep(500)

Kamus konfigurasi grafik ChartCfg

iniChartCfgVariabel kamus menyimpan informasi konfigurasi grafik, misalnya:
Ada berapa garis pada grafik ini? (Tiga garis indikator, yaitu DIF, DEA, MACD)
Apakah ada kandil dalam grafik ini? ('type': 'candlestick' berarti mengaturnya sebagai data candlestick)
Nilai MACD relatif kecil. Jika pasangan perdagangannya adalah BTC_USDT, indikator akan dipadatkan bersama saat menggambar grafik, yang sangat merepotkan untuk dibaca. Oleh karena itu, grafik harus dikonfigurasi dengan dua sumbu Y. (Jadi ada dua konfigurasi sumbu Y di 'yAxis', satu adalah sumbu indikator dan yang lainnya adalah sumbu garis K)

Memuat data

Dalam contoh strategi ini, fungsi utama mulai menjalankan inisialisasi bagan, memanggil fungsi Bagan, meneruskan konfigurasi bagan ChartCfg sebagai parameter, dan menghasilkan bagan objek bagan. Kemudian memasuki loop untuk terus memperoleh data K-line. Selama jumlah BAR data K-line lebih besar dari 50, indikator MACD dapat dihitung (jika BAR terlalu sedikit, tidak ada indikator efektif yang dapat dihitung) . Kemudian Anda dapat menulis data garis K dan data indikator ke dalam grafik.
Untuk menulis pada bagan, gunakan metode tambah pada objek bagan.
Saat menulis, jika parameter terakhir fungsi tambah adalah -1, nilai titik data saat ini akan diperbarui. Jika -1 tidak dilewatkan, titik data baru akan ditambahkan.
Saat K-line BAR baru dibuat, titik data baru ditambahkan. Saat K-line BAR tidak dibuat, BAR terakhir dan indikator terkait diperbarui. (Dinilai dengan membandingkan cap waktu K-line BAR)

Dapat melakukan backtest secara langsung

img

Anda juga dapat menjalankannya secara real time:
img

Contoh alamat kebijakan:
https://www.fmz.com/strategy/187379

Jika Anda memiliki pertanyaan, terima kasih telah meninggalkan pesan.

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)