Sumber daya yang dimuat... Pemuatan...

Python versi MACD contoh gambar

Penulis:Penemu Kuantitas - Mimpi Kecil, Dibuat: 2020-02-27 19:18:17, Diperbarui: 2023-10-09 22:50:01

img

Python versi MACD contoh gambar

Bahkan sebelum membuat kode contoh ini, penemu kuantitas trading platform strategi Square:https://www.fmz.com/strategy/151972◦ Sudah ada contoh MACD Pointer Graph versi JavaScript. Namun kebutuhan pengguna adalah untuk menulis contoh versi Python untuk digunakan sebagai referensi kode ketika mengembangkan grafik desain.

Kode sangat sederhana:

'''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 Kamus konfigurasi grafik

Yang iniChartCfgVariabel kamus menyimpan informasi konfigurasi grafik, seperti: Ada berapa garis di grafik ini? (tiga garis indikator, yaitu DIF, DEA, MACD) Apakah ada K-line di grafik ini? MACD adalah angka yang relatif kecil, jika pasangan perdagangan adalah BTC_USDT, maka indikator akan dikompresi bersama-sama saat menggambar, jadi grafik juga harus dikonfigurasi menjadi dua sumbu Y.

Mengunggah data

Dalam strategi contoh ini, fungsi main mulai melakukan inisialisasi grafik, memanggil fungsi Chart, mengkonfigurasi grafik ChartCfg sebagai parameter input, menghasilkan sebuah objek grafik chart. Kemudian masuk ke sebuah loop, terus-menerus mengambil data K-line, menilai jumlah data K-line BAR hanya lebih besar dari 50 untuk menghitung indikator MACD (BAR tidak terlalu efektif untuk menghitung indikator); kemudian data K-line dan data indikator dapat ditulis ke dalam grafik. Cara menulis grafik menggunakan obyek chart dengan fungsi add. Pada saat menulis, jika parameter terakhir dari fungsi add ditentukan -1, untuk memperbarui nilai titik data saat ini; jika tidak diteruskan -1, untuk menambahkan titik data baru. Sebuah titik data baru ditambahkan ketika K-line BAR baru dibuat, dan ketika K-line BAR belum dibuat, update BAR terakhir dan indikator yang sesuai.

Dapat dihitung kembali secara langsung

img

Anda juga bisa menggunakan hard drive:img

Contoh strategi di alamat:https://www.fmz.com/strategy/187379

Jika ada pertanyaan, terima kasih untuk meninggalkan komentar.


Berkaitan

Lebih banyak