관리 메뉴

Leo's Garage

BackTrader - WMA 활용 본문

파이프라인 만들기/Algo Trading

BackTrader - WMA 활용

LeoBehindK 2023. 2. 20. 22:29
728x90
반응형

이번에는 WMA라는 지표를 활용해서 전략을 만들어 보고자 한다. 

WMA (Weighted moving average) - 가중 이동평균

SMA(단순 이동 평균)은 많이 들어봤을 것이다.

WMA는 단순히 이동평균을 구하는 것이 아니라 최근의 주가에 가중치를 두어서 계산하는 방식을 취한다. 

공식은 아래와 같다. 

사실 이 방식은 널리 쓰이는 방식은 아니다. 

가장 최근의 일자에 가장 큰 가중치를 두기 때문에 SMA에 비해서 최근 시장 분위기를 잘 반영한다는 장점이 있다. 

SMA와 마찬가지로 그 기간의 가격을 대표하는 값이며 이동평균 안에 그 가격의 움직임을 포함하고 있다.

해당 전략을 코드에 적용하면 아래와 같다. 

import backtrader as bt
import yfinance as yf

class MyStrategy(bt.Strategy):
    
    def __init__(self):
        self.stock = self.datas[0]
        self.order = None
        self.vwma = bt.indicators.WMA(self.stock, period=20)

    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.stock.close[0] > self.vwma[0]:  # if the current close price is greater than the VWMA
                self.buy()  # enter a long position
        else:
            if self.stock.close[0] < self.vwma[0]:  # if the current close price is less than the VWMA
                self.sell()  # exit the long position


cerebro = bt.Cerebro()

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

cerebro.addstrategy(MyStrategy)

cerebro.run()

cerebro.plot()

해당 전략을 테슽라 주가에 반영해보면 결과는 아래와 같다 .

 

10000으로 시작할 경우, 10217.96이 됨을 알 수 있다. 

 

728x90
반응형

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

BackTrader - KDJ index  (0) 2023.02.25
BackTrader - 일목균형표  (0) 2023.02.21
BackTrader - S&P500 활용  (0) 2023.02.17
BackTrader - Nasdaq 100 적용  (0) 2023.02.16
BackTrader - 단순 종가 비교 전략  (0) 2023.02.15
Comments