일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 퀀트
- python
- 토플
- Bitcoin
- 클라우드
- 확률
- 아마존 웹 서비스
- 오토사
- 백테스트
- AWS
- 파이썬
- backtest
- TOEFL
- 자동차sw
- 백트레이더
- 비트코인
- 프로그래밍
- GeorgiaTech
- toefl writing
- 토플 라이팅
- backtrader
- Cloud
- 암호화폐
- it
- 블록체인
- 자동매매
- AUTOSAR
- can
- 개발자
- probability
- Today
- Total
목록자동매매 (29)
Leo's Garage
오늘은 KDJ index를 사용해서 전략을 만들어보도록 하겠다. 우선 KDJ index에 대해서 먼저 설명하겠다. KDJ index는 주가 트랜드의 변화를 예측하고 분석하는데 사용되는 지표이며 다른 말로는 랜덤 지표라고도 알려져 있다. 이 지표는 시장의 단기 트랜드를 분석하는데 아주 자주 사용된다. KDJ 지표는 스토케스틱 오실레이터 지표의 파생형 지표인데 기존 지표에 J라인이 추가된 점이 차이점이다. % K, %D라인 값은 주식이 과매수 (80 이상), 과매도 (20 미만) 인지 나타낸다. % J 라인 값은 상승과 하락이 전환되는 시점에 0 혹은 100으로 가는 성질이 있다. 따라서 K 라인과 D 라인의 상대적 위치 (떨어져 있는지, 모였는지), 기울기 그리고 RSI 지표 등을 같이 살피면 고점, 저점..
오늘은 일목균형표를 적용한 전략을 만들어 보겠다. 일목균형표의 영어 이름은 Ichi moku로 이름에서 알 수 있다시피 일본에서 만들어진 지표이다. 뜻은 시장의 '균형'을 '일목요연'하게 나타내는 '표'이다. 일목 균형표는 아래의 공식으로 계산한다. 전환선 = (최근 9일간 최고가 + 최근 9일간 최저가) / 2 기준선 = (최근 26일간 최고가 + 최근 26일간 최저가) / 2 선행 스팬1 = (당일의 기준선 값 + 당일의 전환선 값) / 2 선행 스팬2 = (최근 52일간 최고가 + 최근 52일간 최저가) / 2 후행 스팬 = 현재의 가격을 26일 뒤 쪽에 표시 구름대 = 선행 스팬1과 선행 스팬2 사이를 칠하면 띠를 형성하게 되는데, 이것을 구름대라고 한다. 자세한 해석은 아래의 링크를 참조하자. ..
이번에는 WMA라는 지표를 활용해서 전략을 만들어 보고자 한다. WMA (Weighted moving average) - 가중 이동평균 SMA(단순 이동 평균)은 많이 들어봤을 것이다. WMA는 단순히 이동평균을 구하는 것이 아니라 최근의 주가에 가중치를 두어서 계산하는 방식을 취한다. 공식은 아래와 같다. 사실 이 방식은 널리 쓰이는 방식은 아니다. 가장 최근의 일자에 가장 큰 가중치를 두기 때문에 SMA에 비해서 최근 시장 분위기를 잘 반영한다는 장점이 있다. SMA와 마찬가지로 그 기간의 가격을 대표하는 값이며 이동평균 안에 그 가격의 움직임을 포함하고 있다. 해당 전략을 코드에 적용하면 아래와 같다. import backtrader as bt import yfinance as yf class My..
이번에는 이전 포스팅에 이어서 S&P500 index를 활용하여 전략을 짜보겠다. 이전 나스닥 활용과 마찬가지로 S&P500의 50일 평균선을 기준으로 금일 S&P500 종가와 비교하여 매수 매도 하는 전략이다. 우선 코드는 아래와 같다. import backtrader as bt import yfinance as yf class MyStrategy(bt.Strategy): def __init__(self): self.sp500 = self.datas[0] self.stock = self.datas[1] self.order = None self.sp500_sma = bt.indicators.SMA(self.sp500.close, period=50) def next(self): if self.order: ..
오늘은 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 se..
오늘은 아주 간단한 전략을 만들어보았다. 바로 그냥 단순히 종가를 비교해서 전날보다 오늘 높으면 사고, 전날보다 낮으면 파는 아주 아주 심플한 전략이다. 우선 코드부터 확인해보자 import backtrader as bt import yfinance as yf class MyStrategy(bt.Strategy): def __init__(self): self.dataclose = self.datas[0].close self.order = None 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.dataclose[0..
이번에는 여러 지표를 섞어서 매매 전략을 만들어보도록 하겠다. 이번 전략에는 기본적으로 SMA(Simple Moving Average)와 MACD(Moving Average Convergence Divergence) 그리고 RSI(Relative Strength Index) 이 세 가지 지표를 섞어서 전략을 만들어보려고 한다. 각 지표에 대한 설명 및 동작에 대한 내용은 아래 포스팅들을 참조하기 바란다. https://downyk.tistory.com/66 BackTrader - MACD 활용 이번에는 MACD를 활용해서 전략을 작성해보겠다. MACD(Moving Average Convergence Divergence)는 장단기 이동평균선(SMA) 차이를 이용해서 매매신호를 포착하는 기법이다. MACD의..
BackTrader를 통해서 여러가지 전략을 손쉽게 작성하고 백테스트를 하고 있었는데 생각해보니 BackTrader에 대해 정확하게 소개한 적이 없어서 이 글을 쓴다. BackTrader는 Trader나 투자자들이 마켓에 본인만의 전략이나 알고리즘을 이용해서 테스트하는 것을 도와주는 일종의 오픈 소스 프레임워크라고 이해하면 된다. 이 프레임워크는 기본적으로 자동매매 시스템을 개발, 테스트, 실행하는데 굉장히 강건하면서도 유연한 플랫폼을 제공해주고 사실 강력한 Back Testing Tool이라고 보는것이 더 정확할 수 있다 . BackTrader를 설명하는 몇 가지 키워드가 있다. 1. 다양한 데이터 사용 가능 : BackTrader는 다양한 소스로 부터 다양한 데이터 형식을 넣을 수 있는데, 가량 일반..
이전에 올렸던 역추세 매매 전략은 볼린져 밴드를 이용한 방법이었다. https://downyk.tistory.com/50 BackTrader - 역추세 매매 Backtrader로 간단한 역추세 매매 로직을 만들어보자 역추세 매매란 결국 시장의 가격이 평균으로 회귀하는 성질을 이용하는 것이라 볼 수 있다. 그래서 이를 평균회귀 전략이라고도 한다. MeanRevers downyk.tistory.com 오늘 해 볼 역추세 매매는 SMA(Simple Moving Average)를 이용해 보려고 한다. 전략은 간단한데 사는 전략은 아래와 같다. 30일 SMA가 10일 SMA보다 커지는 순간에 산다. 이 때 가격을 기준으로 3% 손실이 나거나 5% 수익인 경우에 대해서 stop loss와 take profit 가격..
두번째 상승장 판단 전략을 만들어보자. 이번에는 단순히 SMA 2개를 가지고 장세를 판단해본다. 20일 SMA과 50일 SMA 2개와 금일 종가와 비교를 한다. 두 SMA보다 종가가 높으면 매수한다. 두 SMA보다 종가가 낮으면 매도한다. 이때 매수는 and 조건, 매도는 or 조건이다. 코드는 아래와 같다. import backtrader as bt import yfinance as yf class UpTrend(bt.Strategy): params = ( ('fast_ma_period', 20), ('slow_ma_period', 50), ) def __init__(self): self.fast_ma = bt.indicators.SimpleMovingAverage( self.data.close, pe..