avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Ví dụ vẽ MACD phiên bản Python

Được tạo ra trong: 2020-02-27 19:18:17, cập nhật trên: 2023-10-09 22:50:01
comments   0
hits   2701

Ví dụ vẽ MACD phiên bản Python

Ví dụ vẽ MACD phiên bản Python

Trên thực tế, trước khi tạo mã mẫu này, tôi đã tìm thấy Inventor Quantitative Trading Platform Strategy Square: https://www.fmz.com/strategy/151972. Đã có phiên bản JavaScript của ví dụ vẽ chỉ báo MACD. Tuy nhiên, để đáp ứng nhu cầu của người dùng, phiên bản Python của ví dụ này đã được viết để làm mã tham khảo khi phát triển và thiết kế các chiến lược.

Mã này rất đơn giản:

'''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)

Từ điển cấu hình biểu đồ ChartCfg

cái nàyChartCfgBiến từ điển lưu trữ thông tin cấu hình biểu đồ, ví dụ: Có bao nhiêu dòng trong biểu đồ này? (Ba đường chỉ báo, cụ thể là DIF, DEA, MACD) Có nến nào trong biểu đồ này không? (‘kiểu’: ‘nến’ có nghĩa là đặt nó dưới dạng dữ liệu nến) Giá trị MACD tương đối nhỏ. Nếu cặp giao dịch là BTC_USDT, các chỉ báo sẽ được nén lại với nhau khi vẽ biểu đồ, rất bất tiện khi đọc. Do đó, biểu đồ phải được cấu hình với hai trục Y. (Vì vậy, có hai cấu hình trục Y trong ‘yAxis’, một là trục chỉ báo và trục còn lại là trục K-line)

Đang tải dữ liệu

Trong ví dụ chiến lược này, hàm chính bắt đầu thực hiện khởi tạo biểu đồ, gọi hàm Chart, truyền cấu hình biểu đồ ChartCfg làm tham số và tạo đối tượng biểu đồ chart. Sau đó, nó đi vào một vòng lặp để liên tục thu thập dữ liệu K-line. Miễn là số lượng BAR dữ liệu K-line lớn hơn 50, chỉ báo MACD có thể được tính toán (nếu có quá ít BAR, không thể tính toán được chỉ báo hiệu quả) . Sau đó, bạn có thể ghi dữ liệu đường K và dữ liệu chỉ báo vào biểu đồ. Để ghi vào biểu đồ, hãy sử dụng phương thức add của đối tượng biểu đồ. Khi viết, nếu tham số cuối cùng của hàm add là -1, giá trị của điểm dữ liệu hiện tại sẽ được cập nhật. Nếu không vượt qua -1, một điểm dữ liệu mới sẽ được thêm vào. Khi một thanh K-line BAR mới được tạo, một điểm dữ liệu mới sẽ được thêm vào. Khi một thanh K-line BAR không được tạo, thanh cuối cùng và chỉ báo tương ứng sẽ được cập nhật. (Đánh giá bằng cách so sánh dấu thời gian của K-line BAR)

Có thể kiểm tra ngược trực tiếp

Ví dụ vẽ MACD phiên bản Python

Bạn cũng có thể chạy nó theo thời gian thực: Ví dụ vẽ MACD phiên bản Python

Địa chỉ ví dụ về chính sách: https://www.fmz.com/strategy/187379

Nếu bạn có bất kỳ câu hỏi nào, cảm ơn bạn đã để lại tin nhắn.