관리 메뉴

Leo's Garage

BackTrader - 일목균형표 본문

파이프라인 만들기/Algo Trading

BackTrader - 일목균형표

LeoBehindK 2023. 2. 21. 22:45
728x90
반응형

오늘은 일목균형표를 적용한 전략을 만들어 보겠다. 

일목균형표의 영어 이름은 Ichi moku로 이름에서 알 수 있다시피 일본에서 만들어진 지표이다.

뜻은 시장의 '균형'을 '일목요연'하게 나타내는 '표'이다.

일목 균형표는 아래의 공식으로 계산한다.

 

전환선 = (최근 9일간 최고가 + 최근 9일간 최저가) / 2

기준선 = (최근 26일간 최고가 + 최근 26일간 최저가) / 2

선행 스팬1 = (당일의 기준선 값 + 당일의 전환선 값) / 2

선행 스팬2 = (최근 52일간 최고가 + 최근 52일간 최저가) / 2

후행 스팬 = 현재의 가격을 26일 뒤 쪽에 표시 

구름대 = 선행 스팬1과 선행 스팬2 사이를 칠하면 띠를 형성하게 되는데, 이것을 구름대라고 한다.

 

자세한 해석은 아래의 링크를 참조하자.

https://namu.wiki/w/%EC%9D%BC%EB%AA%A9%EA%B7%A0%ED%98%95%ED%91%9C

 

일목균형표 - 나무위키

전환선 (과거 9일간의 최고가+과거 9일간의 최저가)/2기준선(과거 26일간의 최고가+과거 26일간의 최저가)/2후행스팬금일 종가를 26일 전에 기입선행스팬1(금일 전환선값+금일 기준선값)/2, 이 수치

namu.wiki

 

자 코드는 아래와 같다.

import backtrader as bt
import yfinance as yf



class MyStrategy(bt.Strategy):
    
    def __init__(self):
        self.stock = self.datas[0]
        self.order = None
        self.ichimoku = bt.indicators.Ichimoku(self.stock)

    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.ichimoku.senkou_span_a[0] and self.ichimoku.tenkan_sen[0] > self.ichimoku.kijun_sen[0]:
                self.buy()  # enter a long position
        else:
            if self.stock.close[0] < self.ichimoku.senkou_span_b[0]:
                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('^GSPC','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()

당일 종가가 기준선 위 그리고 선행스팬 1보다 크면 매수한다.

그리고 선행스팬2보다 작으면 매도 한다. 

테슬라 주가에 적용했을 경우, 초기 자본 10000에서 11515.34가 되었다.

 

728x90
반응형

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

BackTrader - KDJ index  (0) 2023.02.25
BackTrader - WMA 활용  (0) 2023.02.20
BackTrader - S&P500 활용  (0) 2023.02.17
BackTrader - Nasdaq 100 적용  (0) 2023.02.16
BackTrader - 단순 종가 비교 전략  (0) 2023.02.15
Comments