일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자동매매
- GeorgiaTech
- AWS
- TOEFL
- 백테스트
- backtrader
- 오토사
- python
- 자동차sw
- Cloud
- 확률
- 개발자
- toefl writing
- 백트레이더
- 아마존 웹 서비스
- 퀀트
- can
- 토플 라이팅
- 암호화폐
- 프로그래밍
- probability
- Bitcoin
- it
- 파이썬
- 클라우드
- 비트코인
- backtest
- 토플
- AUTOSAR
- 블록체인
- Today
- Total
목록backtrader (22)
Leo's Garage
이번에는 상승장을 판단하는 전략을 간단하게 만들어서 테스트해보겠다. SMA(Simple Moving Average)와 RSI(Relative Strength Index)를 섞어서 상승장을 판단한다. 금일 종가가 200일과 50일 SMA보다 위에 있고, 동시에 RSI가 50보다 크면 매수한다. 금일 종가가 SMA 50일보다 작을 때 매도한다. import backtrader as bt import yfinance as yf class BullishStrategy(bt.Strategy): def __init__(self): self.sma200 = bt.indicators.SimpleMovingAverage(self.data.close, period=200) self.sma50 = bt.indicators...
이번에는 MACD를 활용해서 전략을 작성해보겠다. MACD(Moving Average Convergence Divergence)는 장단기 이동평균선(SMA) 차이를 이용해서 매매신호를 포착하는 기법이다. MACD의 원리는 장기 이동평균선과 단기 이동평균선이 서로 멀어지면 (Divergence) 다시 가까워지는 (Convergence) 성질을 이용하여 두 개의 이동평균선이 멀어지는 시점을 찾으려 하는 것이다. 공식은 아래와 같다. MACD : 12일 이동평균선 - 26일 이동평균선 Signal : MACD의 9일 지수이동평균선 Osillator : MACD - Signal MACD 곡선과 Signal선이 교차하는 신호를 매매 신호로 본다. 보통 MACD가 Signal보다 커질 때 매수하고, MACD가 Si..
이번에는 볼린져 밴드 지표와 RSI 지표를 섞어서 전략을 만들어 보겠다. 볼린져 밴드는 기간 20일과 Factor는 2로 지정한다. 볼린져 밴드에 Factor에 대한 설명은 아래 링크를 참조 바란다. https://downyk.tistory.com/63 BackTrader - 볼린져 밴드 전략 이번에는 볼린져 밴드 전략을 이용하여 BackTrader로 BackTesting을 해보겠다. 우선 볼린져 밴드에 대해 간략히 설명하자면, 주가 또는 지수와 같은 시계열 데이터의 변동 범위를 설정해서 데이터의 downyk.tistory.com RSI는 14일을 기준으로 하고, 30 이하를 과매도, 70 이상을 과매수 조건으로 지정한다. 그리고 전략은 다음과 같다. 포지션이 없을 경우, 현재 종가가 볼린져 밴드 하단보..
이번에는 지표 2개를 섞어서 매수 매도 하는 전략을 만들어보겠다. 사용할 지표는 SMA(이동평균선)과 RSI(상대 강도)이다. 전략의 내용은 간단하게 아래와 같다. 포지션이 없을 경우, 20일 SMA가 50일 SMA보다 크면서 동시에 7일 RSI가 40보다 작으면 매수한다. 포지션이 있을 경우, 20일 SMA가 50일 SMA보다 작거나 7일 RSIrk 60보다 크면 매도한다. import backtrader as bt import yfinance as yf class MultiIndicatorStrategy(bt.Strategy): params = ( ('sma1_period', 20), ('sma2_period', 50), ('rsi_period', 7), ('rsi_oversold', 40), ('r..
이번에는 볼린져 밴드 전략을 이용하여 BackTrader로 BackTesting을 해보겠다. 우선 볼린져 밴드에 대해 간략히 설명하자면, 주가 또는 지수와 같은 시계열 데이터의 변동 범위를 설정해서 데이터의 변동성을 분석하는 도구라고 보면 된다. 쉽게 말해서 주가나 지수같은 데이터들은 특정 범위 내에서 변동성을 가지는데 그 상한과 하한을 표현하는 방법이라고 보면 된다. 볼린져 밴드를 계산하는 방법은 다음과 같다. 중심선 : 이동 평균선 상단선 : 주가 이동 평균 + (주가 표준편차 * Factor) 하단선 : 주가 이동 평균 - (주가 표준 편차 * Factor) 이동 평균은 흔히 생각하는 SMA를 뜻하고 표준편차란 결국 얼마나 중심에서 멀어져 있는가를 의미한다. 이를 이용해 BackTrader에서 전략..
이번에는 골든 크로스와 데드 크로스를 이용해서 간단한 전략을 만들어보자 이번에 작성할 전략은 두 개의 이평선이 서로 교차하는 지점을 기준으로 매수 / 매도를 하려고한다. 하나는 20일선, 그리고 50일 선이다. 기본적으로 20일선이 50일선 위로 올라가는 시점을 골든크로스 지점으로 보고 매수한다. 50일선이 20일선 위로 올라가는 시점을 데드크로스 지점으로 보고 매도한다. 간단한 전략을 기반으로 BackTrader를 이용해서 전략을 세워보자. import backtrader as bt import yfinance as yf class GoldenDeadCross(bt.Strategy): params = ( ('fast_period', 20), ('slow_period', 50), ) def __init_..
BackTrader를 이용하여 간단한 변동성 돌파 매매 전략을 만들어보자. 변동성 돌파 매매는 Larry Williams에 의해 소개된 전략이다. 상승 추세를 따라가면서 일 단위로 빠르게 수익을 실현하는 단기 매매 전략이다. 아이디어의 골자는 트랜드 추종을 기본으로 하면서 상승하는 종목이 더 상승할 것이라는 추측을 기저로 한다. 전략 자체는 간단하다. 여러가지 개념이 있지만, 내가 사용한 전략을 설명하면, 금일 고가가 전일 종가 + ATR(Average True Range)보다 크면 매수한다. 여기서 ATR이란 변동성을 측정하는 지표면서 해당 종목의 위험도를 알려주는 지표이다. TR은 아래 3가지를 통해 계산하는데 1. 금일 고가 - 금일 저가 2. 금일 고가 - 전일 종가 3. 금일 저가 - 전일 종가..
RSI(relative strength index) - 상대강도지수 이다. RSI는 가격의 상승압력과 하락압력간의 상대적인 강도를 의미한다. 즉, 이 종목이 과매수인지 과매도인지 나타낸다. RSI를 이용한 간단한 전략은 아래와 같다. import backtrader as bt import yfinance as yf class RSIStrategy(bt.Strategy): params = ( ('period', 14), ('buy_level', 70), ('sell_level', 30), ) def __init__(self): self.rsi = bt.indicators.RSI(self.data.close, period=self.params.period) def next(self): if self.rsi[..
추세추종전략 모델을 간단히 만들어보자 SMA(이동평균선)이 교차할 때마다 매수 매도 신호를 준다. import backtrader as bt import yfinance as yf class TrendTrader(bt.Strategy): params = ( ('fast_period', 5), ('slow_period', 20) ) def __init__(self): self.fast_sma = bt.indicators.SimpleMovingAverage(self.data.close, period=self.params.fast_period) self.slow_sma = bt.indicators.SimpleMovingAverage(self.data.close, period=self.params.slow_pe..
Backtrader로 간단한 역추세 매매 로직을 만들어보자 역추세 매매란 결국 시장의 가격이 평균으로 회귀하는 성질을 이용하는 것이라 볼 수 있다. 그래서 이를 평균회귀 전략이라고도 한다. MeanReversion이라는 전략을 하나 생성한다. 이 전략은 간단하게 볼린져 밴드를 지표로 사용하여 과매도 과매수를 식별, 매수 매도 신호를 발생시킨다. from datetime import datetime import backtrader as bt import yfinance as yf class MeanReversion(bt.Strategy): params = ( ('period', 20), ('devfactor', 2) ) def __init__(self): self.sma = bt.indicators.Sim..