Sebenarnya, sebelum membuat kod contoh ini, sudah ada versi JavaScript contoh lukisan penunjuk MACD pada kotak strategi Platform Dagangan Kuantum FMZ:https://www.fmz.com/strategy/151972. Walau bagaimanapun, mengikut pengguna
Kodnya sangat mudah:
'''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 pemboleh ubah menyimpan maklumat konfigurasi carta, seperti:
Berapa banyak garis terdapat dalam carta ini? (Tiga garis penunjuk, DIF, DEA dan MACD masing-masing)
Adakah terdapat K-garis dalam carta? (
Dalam strategi contoh ini, fungsi utama bermula untuk memulakan carta, ia memanggil fungsi Carta, dan lulus konfigurasi carta ChartCfg sebagai parameter untuk menjana objek carta. Kemudian ia memasuki gelung, mendapatkan data K-garis secara berterusan, menilai bahawa bilangan BAR dalam data K-garis lebih daripada 50, dan kemudian mengira penunjuk MACD (terlalu sedikit BAR tidak dapat mengira penunjuk berkesan). Kemudian kita boleh menulis data K-garis dan data penunjuk ke dalam carta. Kita tulis dalam carta dengan menggunakan fungsi tambah objek carta. Apabila menulis, jika parameter terakhir -1 fungsi tambah ditentukan, ia adalah nilai untuk mengemas kini titik data semasa. Apabila K-line BAR baru dijana, titik data baru ditambahkan. Apabila K-line BAR tidak dijana, BAR terakhir dan penunjuk yang sepadan dikemas kini. (Ditentukan dengan membandingkan cap masa K-line BAR)
Ia juga boleh berjalan pada bot sebenar:
Alamat contoh strategi:https://www.fmz.com/strategy/187379
Jika anda mempunyai sebarang soalan, sila tinggalkan mesej.