Bahkan sebelum membuat kode contoh ini, penemu kuantitas trading platform strategi Square:https://www.fmz.com/strategy/151972◦ Sudah ada contoh MACD Pointer Graph versi JavaScript. Namun kebutuhan pengguna adalah untuk menulis contoh versi Python untuk digunakan sebagai referensi kode ketika mengembangkan grafik desain.
Kode 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)
Yang iniChartCfg
Variabel kamus menyimpan informasi konfigurasi grafik, seperti:
Ada berapa garis di grafik ini? (tiga garis indikator, yaitu DIF, DEA, MACD)
Apakah ada K-line di grafik ini?
MACD adalah angka yang relatif kecil, jika pasangan perdagangan adalah BTC_USDT, maka indikator akan dikompresi bersama-sama saat menggambar, jadi grafik juga harus dikonfigurasi menjadi dua sumbu Y.
Dalam strategi contoh ini, fungsi main mulai melakukan inisialisasi grafik, memanggil fungsi Chart, mengkonfigurasi grafik ChartCfg sebagai parameter input, menghasilkan sebuah objek grafik chart. Kemudian masuk ke sebuah loop, terus-menerus mengambil data K-line, menilai jumlah data K-line BAR hanya lebih besar dari 50 untuk menghitung indikator MACD (BAR tidak terlalu efektif untuk menghitung indikator); kemudian data K-line dan data indikator dapat ditulis ke dalam grafik. Cara menulis grafik menggunakan obyek chart dengan fungsi add. Pada saat menulis, jika parameter terakhir dari fungsi add ditentukan -1, untuk memperbarui nilai titik data saat ini; jika tidak diteruskan -1, untuk menambahkan titik data baru. Sebuah titik data baru ditambahkan ketika K-line BAR baru dibuat, dan ketika K-line BAR belum dibuat, update BAR terakhir dan indikator yang sesuai.
Anda juga bisa menggunakan hard drive:
Contoh strategi di alamat:https://www.fmz.com/strategy/187379
Jika ada pertanyaan, terima kasih untuk meninggalkan komentar.