리소스 로딩... 로딩...

파이썬 버전 MACD 그래프 예제

저자:발명가들의 수량화 - 작은 꿈, 2020-02-27 19:18:17, 업데이트: 2023-10-09 22:50:01

img

파이썬 버전 MACD 그래프 예제

실제로, 이 사례 코드를 만들기 전에, 발명가들은 거래 플랫폼 전략 광장을 측정했습니다:https://www.fmz.com/strategy/151972▲ 이미 자바스크립트 버전의 MACD 지표 그래프 예제가 있다. 그러나 사용자 요구에 따라, 전략 개발 디자인 그래프의 참조 코드로서의 예를 위해 파이썬 버전의 예제를 작성해야 한다.

이 코드는 매우 간단합니다.

'''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줄이 있나요? (type: candlestick) MACD 값은 상대적으로 작고, 거래 쌍이 BTC_USDT인 경우, 그래프를 그리는 동안 지표가 압축되는 것은 매우 불편합니다. 따라서 그래프는 2 개의 Y 축으로 구성됩니다.

데이터 로드

이 예제 정책에서 main 함수는 차트의 초기화를 시작하여, Chart 함수를 호출하여, 차트 구성 ChartCfg를 매개 변수로 입력하여, 차트 객체 차트를 생성합니다. 그 다음 루프에 들어가서, 계속 K 라인 데이터를 취득하고, K 라인 데이터의 BAR 수가 50보다 많을 때마다 MACD 지표를 계산할 수 있습니다. 그리고 K 라인 데이터와 지표 데이터를 차트에 쓸 수 있습니다. 차트 객체를 사용하는 방법을 추가 함수와 같이 입력합니다. 입력 시, 추가 함수의 마지막 매개 변수를 지정하면 -1, 현재 데이터 포인트의 값을 업데이트한다. 전송하지 않으면 -1, 새로운 데이터 포인트를 추가한다. K 라인 BAR가 새로 생성될 때 새로운 데이터 포인트를 추가하고, K 라인 BAR가 생성되지 않을 때 마지막 BAR와 해당 지표를 업데이트한다.

바로 재검토할 수 있습니다.

img

이 비디오는 이 비디오에서 볼 수 있습니다.img

전략 모범 주소:https://www.fmz.com/strategy/187379

이 글은 제 생각에는 제 생각보다 더 좋은 글입니다.


관련

더 많은