Die Ressourcen sind geladen. Beförderung...

MACD-Grafikbeispiel für Python

Schriftsteller:Die Erfinder quantifizieren - Kleine Träume, Erstellt: 2020-02-27 19:18:17, Aktualisiert: 2023-10-09 22:50:01

img

MACD-Grafikbeispiel für Python

Vor der Erstellung dieses Beispielcodes haben die Erfinder die Quantifizierung der Handelsplattform Strategie Square beschrieben:https://www.fmz.com/strategy/151972◦ Es gibt bereits MACD-Pointerdiagramm-Beispiele in der JavaScript-Version. ◦ Es ist jedoch ein Bedarf der Anwender, ein Beispiel in der Python-Version zu schreiben, das als Referenzcode für die Entwicklung von Designdiagrammen verwendet wird.

Der Code ist sehr einfach:

'''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 Chartkonfigurationswörterbuch

Das hier.ChartCfgIn den Wörterbuchvariablen werden Chartkonfigurationsinformationen gespeichert, z. B.: Wie viele Linien gibt es auf diesem Diagramm? (Drei Linien sind DIF, DEA und MACD) Gibt es K-Linien in diesem Diagramm? Die MACD-Werte sind relativ klein, wenn das Handelspare BTC_USDT ist, werden die Indikatoren beim Zeichnen sehr unpraktisch zusammengedrückt, so dass das Diagramm auch als 2 Y-Achs konfiguriert wird.

Daten einladen

In diesem Beispiel wird die Main-Funktion mit der Initialization des Chartes begonnen, die Chart-Funktion aufgerufen, das Chart als ChartCfg konfiguriert und als Parameter eingegeben, um ein Chart-Objekt zu erzeugen. Dann geht es in einen Kreislauf, holt ständig K-Linien-Daten ab und entscheidet, ob die Anzahl der K-Linien-Daten BAR größer als 50 ist, um einen MACD-Indikator zu berechnen. Schreiben Sie Methoden in ein Diagramm mit Chart-Objekten. Bei der Eingabe wird der letzte Parameter der Add-Funktion - 1 angegeben, wenn der Wert des aktuellen Datensatzes aktualisiert wird. Wenn nicht - 1 übermittelt wird, wird ein neuer Datensatz hinzugefügt. Wenn K-Line BAR neu erzeugt wird, wird ein neuer Datenpunkt hinzugefügt, wenn K-Line BAR nicht erzeugt wurde, wird das letzte BAR und die entsprechenden Indikatoren aktualisiert.

Sie können direkt zurückverfolgen.

img

Sie können auch auf einem Festplatte laufen:img

Das Strategie-Problem ist:https://www.fmz.com/strategy/187379

Wenn Sie Fragen haben, lassen Sie es uns bitte wissen.


Verwandt

Mehr