관리 메뉴

Leo's Garage

BackTrader - Nasdaq 100 적용 본문

파이프라인 만들기/Algo Trading

BackTrader - Nasdaq 100 적용

LeoBehindK 2023. 2. 16. 22:22
728x90
반응형

오늘은 index를 임의로 만들어서 전략에 녹여보려고 한다.

녹일 index는 바로 Nasdaq100이다.

전략은 다음과 같다. 

Nasdaq100의 종가가 Nasdaq100 50일 평균선 보다 올라가면 매수하고 떨어지면 매도한다. 

코드는 아래와 같다. 

import backtrader as bt
import yfinance as yf



class MyStrategy(bt.Strategy):
    
    def __init__(self):
        self.nasdaq = self.datas[0]
        self.stock = self.datas[1]
        self.order = None
        self.nasdaq_sma = bt.indicators.SMA(self.nasdaq.close, period=50)

    def next(self):
        if self.order:
            return  # if an order is pending, don't do anything

        if not self.position:  # if not in the market
            if self.nasdaq.close[0] > self.nasdaq_sma[0]:  # if the current NASDAQ-100 close is greater than its 50-day moving average
                self.buy()  # enter a long position
        else:
            if self.nasdaq.close[0] < self.nasdaq_sma[0]:  # if the current NASDAQ-100 close is less than its 50-day moving average
                self.sell()  # exit the long position


cerebro = bt.Cerebro()
cerebro.addstrategy(MyStrategy)

# Add data feed to cerebro
nasdaq_data = bt.feeds.PandasData(dataname= yf.download('^NDX','2018-01-01','2021-12-31'))
data = bt.feeds.PandasData(dataname= yf.download('TSLA','2018-01-01','2021-12-31'))

cerebro.adddata(nasdaq_data)
cerebro.adddata(data)

cerebro.run()
cerebro.plot()

해당 코드를 보면 이전 전략들과 다르게 data를 두 번 넣은 것을 볼 수 있다. 

이런식으로 BackTrader에는 여러가지 데이터들을 전략에 사용할 수 있다.

해당 코드를 돌려보면 아래와 같은 결과가 나오게 된다.

 

초기 자본은 10000이었는데 13294.53이 되었다. 

 

728x90
반응형

'파이프라인 만들기 > Algo Trading' 카테고리의 다른 글

BackTrader - WMA 활용  (0) 2023.02.20
BackTrader - S&P500 활용  (0) 2023.02.17
BackTrader - 단순 종가 비교 전략  (0) 2023.02.15
BackTesting.py - SMA  (1) 2023.02.05
BackTrader란  (0) 2023.02.03
Comments