avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Contoh gambar MACD versi Python

Dibuat di: 2020-02-27 19:18:17, diperbarui pada: 2023-10-09 22:50:01
comments   0
hits   2701

Contoh gambar MACD versi Python

Contoh gambar MACD versi Python

Sebenarnya, sebelum membuat contoh kode ini, saya menemukan Inventor Quantitative Trading Platform Strategy Square: https://www.fmz.com/strategy/151972. Sudah ada versi JavaScript dari contoh gambar indikator MACD. Namun, sebagai tanggapan terhadap permintaan pengguna, versi Python dari contoh tersebut ditulis untuk dijadikan kode referensi saat mengembangkan dan merancang strategi.

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

Kamus konfigurasi grafik ChartCfg

iniChartCfgVariabel kamus menyimpan informasi konfigurasi grafik, misalnya: Ada berapa garis pada grafik ini? (Tiga garis indikator, yaitu DIF, DEA, MACD) Apakah ada kandil dalam grafik ini? (‘type’: ‘candlestick’ berarti mengaturnya sebagai data candlestick) Nilai MACD relatif kecil. Jika pasangan perdagangannya adalah BTC_USDT, indikator akan dipadatkan bersama saat menggambar grafik, yang sangat merepotkan untuk dibaca. Oleh karena itu, grafik harus dikonfigurasi dengan dua sumbu Y. (Jadi ada dua konfigurasi sumbu Y di ‘yAxis’, satu adalah sumbu indikator dan yang lainnya adalah sumbu garis K)

Memuat data

Dalam contoh strategi ini, fungsi utama mulai menjalankan inisialisasi bagan, memanggil fungsi Bagan, meneruskan konfigurasi bagan ChartCfg sebagai parameter, dan menghasilkan bagan objek bagan. Kemudian memasuki loop untuk terus memperoleh data K-line. Selama jumlah BAR data K-line lebih besar dari 50, indikator MACD dapat dihitung (jika BAR terlalu sedikit, tidak ada indikator efektif yang dapat dihitung) . Kemudian Anda dapat menulis data garis K dan data indikator ke dalam grafik. Untuk menulis pada bagan, gunakan metode tambah pada objek bagan. Saat menulis, jika parameter terakhir fungsi tambah adalah -1, nilai titik data saat ini akan diperbarui. Jika -1 tidak dilewatkan, titik data baru akan ditambahkan. Saat K-line BAR baru dibuat, titik data baru ditambahkan. Saat K-line BAR tidak dibuat, BAR terakhir dan indikator terkait diperbarui. (Dinilai dengan membandingkan cap waktu K-line BAR)

Dapat melakukan backtest secara langsung

Contoh gambar MACD versi Python

Anda juga dapat menjalankannya secara real time: Contoh gambar MACD versi Python

Contoh alamat kebijakan: https://www.fmz.com/strategy/187379

Jika Anda memiliki pertanyaan, terima kasih telah meninggalkan pesan.