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

Пример рисунка MACD Python

Автор:FMZ~Lydia, Создано: 2022-12-01 16:54:01, Обновлено: 2023-09-11 08:59:21

img

На самом деле, до создания этого примерного кода, уже существует версия JavaScript на примере рисунка индикатора MACD на квадрате стратегии FMZ Quant Trading Platform:https://www.fmz.com/strategy/151972. Однако, в соответствии с потребностями пользователя, мы все еще пишем пример версии 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 drawing'
    },
    'yAxis': [{
        'title': {'text': 'K-line'},
        'style': {'color': '#4572A7'},
        'opposite': False
    }, {
        'title': {'text': 'index axis'},
        'opposite': True
    }],
    'series': [{
        'type': 'candlestick',
        'name': 'current period',
        '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
        # calculate the indicator
        macd = TA.MACD(r)
        
        LogStatus(_D(), len(r))
        
        # drawing
        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)

ДиаграммаСловарь конфигурации диаграмм CFG

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

Данные по нагрузке

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

Он может быть проверен напрямую.

img

Он также может работать на настоящем боте:

img

Пример адреса стратегии:https://www.fmz.com/strategy/187379

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


Связанные

Больше