250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 아마존 웹 서비스
- 클라우드
- probability
- backtrader
- 자동매매
- 토플
- Cloud
- backtest
- 개발자
- toefl writing
- python
- 토플 라이팅
- Bitcoin
- 백테스트
- TOEFL
- 자동차sw
- AUTOSAR
- 확률
- 비트코인
- can
- 백트레이더
- it
- GeorgiaTech
- 프로그래밍
- 퀀트
- AWS
- 블록체인
- 오토사
- 암호화폐
- 파이썬
Archives
- Today
- Total
Leo's Garage
BackTrader - KDJ index 본문
728x90
반응형
오늘은 KDJ index를 사용해서 전략을 만들어보도록 하겠다.
우선 KDJ index에 대해서 먼저 설명하겠다.
KDJ index는 주가 트랜드의 변화를 예측하고 분석하는데 사용되는 지표이며 다른 말로는 랜덤 지표라고도 알려져 있다.
이 지표는 시장의 단기 트랜드를 분석하는데 아주 자주 사용된다.
KDJ 지표는 스토케스틱 오실레이터 지표의 파생형 지표인데 기존 지표에 J라인이 추가된 점이 차이점이다.
% K, %D라인 값은 주식이 과매수 (80 이상), 과매도 (20 미만) 인지 나타낸다.
% J 라인 값은 상승과 하락이 전환되는 시점에 0 혹은 100으로 가는 성질이 있다.
따라서 K 라인과 D 라인의 상대적 위치 (떨어져 있는지, 모였는지), 기울기 그리고 RSI 지표 등을 같이 살피면 고점, 저점에서 매수, 매도를 할 수 있다.
코드는 아래와 같다.
import backtrader as bt
import yfinance as yf
class MyStrategy(bt.Strategy):
def __init__(self):
self.stock = self.datas[0]
self.order = None
self.kdj = bt.indicators.Stochastic(self.stock, period=14, period_dfast=3, period_dslow=3)
self.sma = bt.indicators.SimpleMovingAverage(self.stock, period=200)
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.kdj.lines.percK[0] > 20 and self.kdj.lines.percD[0] > 20 and (3 * self.kdj.lines.percD[0] - 2 * self.kdj.lines.percK[0]) > 20 and self.stock.close[0] > self.sma[0]:
self.buy() # enter a long position
else:
if self.kdj.lines.percK[0] < 80 and self.kdj.lines.percD[0] < 80 and (3 * self.kdj.lines.percD[0] - 2 * self.kdj.lines.percK[0]) < 80:
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()
상기 코드를 테슬라 3개년 데이터에 적용해보았다.
결과는 아래와 같다.
최초 10000에서 시작한 자산은 10746.60까지 증가하였다.
728x90
반응형
'파이프라인 만들기 > Algo Trading' 카테고리의 다른 글
BackTrader - 일목균형표 (0) | 2023.02.21 |
---|---|
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