পাইথন এমএসিডি অঙ্কনের উদাহরণ

লেখক:লিডিয়া, তৈরিঃ 2022-12-01 16:54:01, আপডেটঃ 2023-09-11 08:59:21

img

প্রকৃতপক্ষে, এই উদাহরণ কোড তৈরি করার আগে, ইতিমধ্যে 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)

চার্টCfg চার্ট কনফিগারেশন অভিধান

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

লোড ডেটা

এই উদাহরণ কৌশল, প্রধান ফাংশন চার্ট শুরু, এটি চার্ট ফাংশন কল, এবং একটি চার্ট অবজেক্ট তৈরি করতে একটি পরামিতি হিসাবে চার্ট কনফিগারেশন ChartCfg পাস। তারপর এটি একটি লুপ প্রবেশ, ক্রমাগত K- লাইন তথ্য পেতে, বিচার যে K- লাইন তথ্য বার সংখ্যা 50 বেশী, এবং তারপর MACD সূচক গণনা (খুব কম বার কার্যকর সূচক গণনা করতে পারে না) । তারপর আমরা চার্ট মধ্যে K- লাইন তথ্য এবং সূচক তথ্য লিখতে পারেন। আমরা চার্ট অবজেক্টের যোগ ফাংশন ব্যবহার করে চার্টে লিখছি। লেখার সময়, যদি যোগ ফাংশনের শেষ পরামিতি -1 নির্দিষ্ট করা হয়, এটি বর্তমান ডেটা পয়েন্ট আপডেট করার মান। যদি -1 স্থানান্তরিত না হয়, তবে একটি নতুন ডেটা পয়েন্ট যুক্ত করা হয়। যখন কে-লাইন BAR নতুনভাবে তৈরি করা হয়, তখন একটি নতুন ডেটা পয়েন্ট যুক্ত করা হয়। যখন কে-লাইন BAR তৈরি করা হয় না, তখন শেষ BAR এবং সংশ্লিষ্ট সূচক আপডেট করা হয়। (কে-লাইন BAR এর টাইমস্ট্যাম্পগুলির তুলনা করে নির্ধারিত)

এটি সরাসরি ব্যাকটেস্ট করা যাবে

img

এটি একটি বাস্তব বোটের উপরও চালানো যেতে পারে:

img

কৌশল উদাহরণ ঠিকানাঃhttps://www.fmz.com/strategy/187379

যদি আপনার কোন প্রশ্ন থাকে, দয়া করে একটি বার্তা ছেড়ে. ধন্যবাদ ~


সম্পর্কিত

আরো