관리 메뉴

Leo's Garage

BackTrader - 골든 크로스 / 데드 크로스 전략 본문

파이프라인 만들기/Algo Trading

BackTrader - 골든 크로스 / 데드 크로스 전략

LeoBehindK 2023. 1. 15. 14:27
728x90
반응형

이번에는 골든 크로스와 데드 크로스를 이용해서 간단한 전략을 만들어보자

 

이번에 작성할 전략은 두 개의 이평선이 서로 교차하는 지점을 기준으로 매수 / 매도를 하려고한다.

하나는 20일선, 그리고 50일 선이다.

기본적으로 20일선이 50일선 위로 올라가는 시점을 골든크로스 지점으로 보고 매수한다.

50일선이 20일선 위로 올라가는 시점을 데드크로스 지점으로 보고 매도한다.

간단한 전략을 기반으로 BackTrader를 이용해서 전략을 세워보자.

import backtrader as bt
import yfinance as yf

class GoldenDeadCross(bt.Strategy):
    params = (
        ('fast_period', 20),
        ('slow_period', 50),
    )

    def __init__(self):
        self.fast_sma = bt.indicators.SimpleMovingAverage(
            self.data.close, period=self.params.fast_period)
        self.slow_sma = bt.indicators.SimpleMovingAverage(
            self.data.close, period=self.params.slow_period)

    def next(self):
        if not self.position:
            if self.fast_sma[0] > self.slow_sma[0]:
                self.buy()
        else:
            if self.fast_sma[0] < self.slow_sma[0]:
                self.close()

cerebro = bt.Cerebro()

data = bt.feeds.PandasData(dataname= yf.download('TSLA','2019-01-01','2021-12-31'))
cerebro.adddata(data)

cerebro.addstrategy(GoldenDeadCross)

cerebro.run()

cerebro.plot()

데이터는 테슬라의 2019년부터 2021년까지 3년간 데이터를 기준으로 돌려보았다.

결과는 다음과 같다.

10000 캐쉬로 시작해서 끝나는 시점에 10179 캐쉬가 되었다.

아주 러프하고 간단한 전략이지만 이 전략을 기본으로 좀 더 세부 전략을 키워가면 나름 쓸만한 전략이 될 수도 있겠다. 

728x90
반응형
Comments