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

আপনি এটি বাস্তব ডিস্কেও চালাতে পারেন:

নীতিমালার উদাহরণ ঠিকানা: https://www.fmz.com/strategy/187379
আপনার কোন প্রশ্ন থাকলে, একটি বার্তা ছেড়ে দিন.