В процессе загрузки ресурсов... загрузка...

Пример картинки MACD Python

Автор:Изобретатели количественного измерения - мечты, Создано: 2020-02-27 19:18:17, Обновлено: 2023-10-09 22:50:01

img

Пример картинки MACD Python

На самом деле, до того, как мы сделали этот примерный код, изобретатели количественно оценили стратегию платформы:https://www.fmz.com/strategy/151972Уже есть примеры MACD-индикаторных графиков в JavaScript. Однако пользователи хотят написать примеры в Python, чтобы использовать их в качестве ссылки при разработке стратегии.

Код очень прост:

'''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 Диктант конфигурации графиков

ЭтоChartCfgСловарные переменные сохраняют графическую конфигурацию, например: Сколько линий на этом графике? (три линии - DIF, DEA, MACD) Есть ли в этом графике K-линия? MACD-значения относительно небольшие, если торговая пара BTC_USDT, показатели будут сжаты друг с другом во время рисования, поэтому график также должен быть сконфигурирован на 2 Y-оси.

Загрузка данных

В этом примере политика состоит в том, что main начинает выполнять инициализацию графика, вызывает функцию Chart, настраивает график ChartCfg как параметр, генерирует графический объект Chart. Затем входит в цикл, постоянно получает K-линиевые данные, решает, что количество BAR-линий больше 50 и может рассчитать MACD-индикаторы (BAR-линия недействительны); затем можно записать K-линиевые данные и индикаторные данные в график. Введите метод добавления к графику с использованием объекта chart. При записи последний параметр функции add, если он указан, -1, для обновления значения текущей точки данных; если не передается -1, для добавления новой точки данных. Добавляется новая точка данных при создании K-линии BAR, обновляется последняя BAR и соответствующий показатель при отсутствии K-линии BAR.

Можно сразу отслеживать

img

Он также может работать на диске:img

Название:https://www.fmz.com/strategy/187379

Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарии.


Связанные

Больше