পাইথন সংস্করণ MACD গ্রাফিক উদাহরণ

লেখক:ছোট্ট স্বপ্ন, তৈরিঃ 2020-02-27 19:18:17, আপডেটঃ 2023-10-09 22:50:01

img

পাইথন সংস্করণ 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画图'
    },
    '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 চার্ট কনফিগারেশন অভিধান

এইটাChartCfgএকটি অভিধান ভেরিয়েবলের মধ্যে চার্ট কনফিগারেশন তথ্য সংরক্ষণ করা হয়, যেমনঃ এই চার্টে কতটি লাইন আছে? (তিনটি লাইন ডিআইএফ, ডিইএ, ম্যাকডি) এই চার্টে কি K-লাইন আছে? (type:candlestick) এই টাইপটি K-লাইন ডেটা হিসাবে সেট করা হয়। ম্যাকডি মানগুলি তুলনামূলকভাবে ছোট, যদি বিটিসি_ইউএসডিটি হয় তবে চার্টটি আঁকতে সময় সূচকগুলি একসাথে সংকুচিত হতে পারে, তাই চার্টটি 2 টি ওয়াই-অক্সে কনফিগার করা হয়।

ডাটা লোড করুন

এই প্যাটার্নের নীতিতে main ফাংশনটি চার্টটি ইনস্টল করতে শুরু করে, চার্ট ফাংশনটি কল করে, চার্টটি কনফিগার করে, চার্ট সিএফজিকে একটি প্যারামিটার হিসাবে ইনপুট করে, একটি চার্ট অবজেক্ট তৈরি করে। তারপর একটি লুপে যান, ক্রমাগত K-লাইন ডেটা পান, K-লাইন ডেটা BAR এর সংখ্যা 50 এর চেয়ে বড় হলেই MACD নির্দেশক গণনা করতে পারেন। তারপর K-লাইন ডেটা এবং নির্দেশক ডেটা চার্টে লিখতে পারেন। Chart object ব্যবহার করে চার্টে পদ্ধতি লিখুন add ফাংশন । লেখার সময়, add ফাংশনের শেষ প্যারামিটারটি যদি নির্দিষ্ট করা হয় -1, বর্তমান ডেটা পয়েন্টের মান আপডেট করার জন্য; যদি না পাঠানো হয় -1, একটি নতুন ডেটা পয়েন্ট যোগ করার জন্য। যখন K-line BAR নতুনভাবে তৈরি হয়, তখন একটি নতুন ডেটা পয়েন্ট যোগ করা হয়, যখন K-line BAR তৈরি হয় না, তখন শেষ BAR এবং সংশ্লিষ্ট সূচক আপডেট করা হয়।

সরাসরি পুনরায় সনাক্ত করা যায়

img

এটি একটি বাস্তব ডিস্কের সাথেও কাজ করতে পারেঃimg

এখান থেকে আপনি একটি ভিডিও দেখতে পারেন।https://www.fmz.com/strategy/187379

যদি আপনার কোন প্রশ্ন থাকে, তাহলে মন্তব্যের জন্য ধন্যবাদ।


সম্পর্কিত

আরো