Sebenarnya, sebelum membuat kode contoh ini, sudah ada versi JavaScript dari contoh gambar indikator MACD pada kotak strategi dari FMZ Quant Trading Platform:https://www.fmz.com/strategy/151972Namun, sesuai dengan kebutuhan pengguna, kita masih menulis contoh versi Python, yang dapat digunakan sebagai kode referensi dalam strategi pengembangan desain gambar.
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 drawing'
},
'yAxis': [{
'title': {'text': 'K-line'},
'style': {'color': '#4572A7'},
'opposite': False
}, {
'title': {'text': 'index axis'},
'opposite': True
}],
'series': [{
'type': 'candlestick',
'name': 'current period',
'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
# calculate the indicator
macd = TA.MACD(r)
LogStatus(_D(), len(r))
# drawing
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)
PeraturanChartCfg
Kamus variabel menyimpan informasi konfigurasi grafik, seperti:
Berapa banyak garis yang ada dalam grafik ini? (Tiga garis indikator, masing-masing DIF, DEA dan MACD)
Apakah ada K-line dalam grafik? (
Dalam strategi contoh ini, fungsi utama mulai menginisialisasi grafik, memanggil fungsi Chart, dan melewati konfigurasi grafik ChartCfg sebagai parameter untuk menghasilkan objek grafik. Kemudian masuk ke loop, mendapatkan data K-line terus-menerus, menilai bahwa jumlah BAR dalam data K-line lebih dari 50, dan kemudian menghitung indikator MACD (terlalu sedikit BAR tidak dapat menghitung indikator yang efektif). Kemudian kita dapat menulis data K-line dan data indikator ke dalam grafik. Kita menulisnya dalam grafik dengan menggunakan fungsi add dari objek grafik. Saat menulis, jika parameter terakhir -1 dari fungsi add ditentukan, itu adalah nilai untuk memperbarui titik data saat ini. Ketika K-line BAR baru dihasilkan, titik data baru ditambahkan. Ketika K-line BAR tidak dihasilkan, BAR terakhir dan indikator yang sesuai diperbarui.
Ini juga bisa berjalan pada bot nyata:
Contoh alamat strategi:https://www.fmz.com/strategy/187379
Jika Anda memiliki pertanyaan, silakan tinggalkan pesan.