پیتھون MACD ڈرائنگ کا مثال

مصنف:لیدیہ, تخلیق: 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لغت متغیر اسٹورز چارٹ ترتیب کی معلومات، جیسے: اس چارٹ میں کتنی لائنیں ہیں؟ (ترتیب کے مطابق تین اشارے کی لائنیں ، ڈی آئی ایف ، ڈی ای اے اور ایم اے سی ڈی) کیا چارٹ میں K لائن ہے؟ (type: candlestick K لائن ڈیٹا کے طور پر مقرر کردہ قسم سے مراد ہے) MACD اقدار نسبتا small چھوٹی ہیں۔ اگر تجارتی جوڑی BTC_USDT ہے تو ، ڈرائنگ کرتے وقت ، اشارے ایک ساتھ دبا دیئے جائیں گے ، جو دیکھنے میں بہت تکلیف دہ ہے ، لہذا چارٹ کو بھی دو Y محور کے طور پر تشکیل دیا جانا چاہئے۔ (لہذا ، yAxis میں دو Y محور کی تشکیلیں ہیں ، ایک اشارے محور ہے اور دوسرا K لائن محور ہے)

بوجھ کے اعداد و شمار

اس مثال کی حکمت عملی میں ، مرکزی فنکشن چارٹ کو شروع کرنا شروع کرتا ہے ، اسے چارٹ فنکشن کہتے ہیں ، اور چارٹ کی تشکیل ChartCfg کو چارٹ آبجیکٹ تیار کرنے کے لئے ایک پیرامیٹر کے طور پر پاس کرتے ہیں۔ پھر یہ لوپ میں داخل ہوتا ہے ، K- لائن کے اعداد و شمار کو مستقل طور پر حاصل کرتا ہے ، فیصلہ کرتا ہے کہ K- لائن کے اعداد و شمار میں BAR کی تعداد 50 سے زیادہ ہے ، اور پھر MACD اشارے کا حساب لگاتا ہے (بہت کم BAR موثر اشارے کا حساب نہیں لگاسکتا) ۔ پھر ہم K- لائن کے اعداد و شمار اور اشارے کے اعداد و شمار کو چارٹ میں لکھ سکتے ہیں۔ ہم اسے چارٹ آبجیکٹ کے شامل فنکشن کا استعمال کرتے ہوئے چارٹ میں لکھتے ہیں۔ لکھتے وقت ، اگر شامل فنکشن کا آخری پیرامیٹر -1 متعین کیا گیا ہے تو ، یہ موجودہ ڈیٹا پوائنٹ کو اپ ڈیٹ کرنے کی قدر ہے۔ اگر -1 منتقل نہیں کیا جاتا ہے تو ، ایک نیا ڈیٹا پوائنٹ شامل کیا جاتا ہے۔ جب K- لائن BAR نئی طرح سے تیار کیا جاتا ہے تو ، ایک نیا ڈیٹا پوائنٹ شامل کیا جاتا ہے۔ جب K- لائن BAR تیار نہیں ہوتا ہے تو ، آخری BAR اور اسی اشارے کو اپ ڈیٹ کیا جاتا ہے۔ (K- لائن BAR کے ٹائم اسٹیمپ کا موازنہ کرکے طے کیا جاتا ہے)

یہ براہ راست بیک ٹیسٹ کیا جا سکتا ہے

img

یہ ایک حقیقی بوٹ پر بھی چل سکتا ہے:

img

حکمت عملی کا مثال کا پتہ:https://www.fmz.com/strategy/187379

اگر آپ کے پاس کوئی سوالات ہیں تو، براہ مہربانی ایک پیغام چھوڑ دیں. شکریہ ~


متعلقہ

مزید