প্রকৃতপক্ষে, এই উদাহরণ কোড তৈরি করার আগে, ইতিমধ্যে FMZ কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের কৌশল স্কোয়ারে MACD সূচক অঙ্কন উদাহরণটির একটি জাভাস্ক্রিপ্ট সংস্করণ রয়েছেঃhttps://www.fmz.com/strategy/151972. যাইহোক, ব্যবহারকারীর চাহিদা অনুযায়ী, আমরা এখনও পাইথন সংস্করণ একটি উদাহরণ লিখুন, যা কৌশল উন্নয়ন নকশা অঙ্কন রেফারেন্স কোড হিসাবে ব্যবহার করা যেতে পারে.
কোডটি খুবই সহজ:
'''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)
দ্যChartCfg
শব্দকোষ ভেরিয়েবল স্টোর চার্ট কনফিগারেশন তথ্য, যেমনঃ
এই চার্টে কয়টি লাইন আছে? (তিনটি সূচক লাইন, যথাক্রমে ডিআইএফ, ডিইএ এবং এমএসিডি)
চার্টে কি একটি কে-লাইন আছে? (
এই উদাহরণ কৌশল, প্রধান ফাংশন চার্ট শুরু, এটি চার্ট ফাংশন কল, এবং একটি চার্ট অবজেক্ট তৈরি করতে একটি পরামিতি হিসাবে চার্ট কনফিগারেশন ChartCfg পাস। তারপর এটি একটি লুপ প্রবেশ, ক্রমাগত K- লাইন তথ্য পেতে, বিচার যে K- লাইন তথ্য বার সংখ্যা 50 বেশী, এবং তারপর MACD সূচক গণনা (খুব কম বার কার্যকর সূচক গণনা করতে পারে না) । তারপর আমরা চার্ট মধ্যে K- লাইন তথ্য এবং সূচক তথ্য লিখতে পারেন। আমরা চার্ট অবজেক্টের যোগ ফাংশন ব্যবহার করে চার্টে লিখছি। লেখার সময়, যদি যোগ ফাংশনের শেষ পরামিতি -1 নির্দিষ্ট করা হয়, এটি বর্তমান ডেটা পয়েন্ট আপডেট করার মান। যদি -1 স্থানান্তরিত না হয়, তবে একটি নতুন ডেটা পয়েন্ট যুক্ত করা হয়। যখন কে-লাইন BAR নতুনভাবে তৈরি করা হয়, তখন একটি নতুন ডেটা পয়েন্ট যুক্ত করা হয়। যখন কে-লাইন BAR তৈরি করা হয় না, তখন শেষ BAR এবং সংশ্লিষ্ট সূচক আপডেট করা হয়। (কে-লাইন BAR এর টাইমস্ট্যাম্পগুলির তুলনা করে নির্ধারিত)
এটি একটি বাস্তব বোটের উপরও চালানো যেতে পারে:
কৌশল উদাহরণ ঠিকানাঃhttps://www.fmz.com/strategy/187379
যদি আপনার কোন প্রশ্ন থাকে, দয়া করে একটি বার্তা ছেড়ে. ধন্যবাদ ~