일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Cloud
- 파이썬
- 프로그래밍
- 아마존 웹 서비스
- 비트코인
- python
- GeorgiaTech
- it
- 블록체인
- 토플 라이팅
- 퀀트
- toefl writing
- can
- backtest
- 토플
- AWS
- 자동차sw
- 개발자
- backtrader
- TOEFL
- 암호화폐
- 확률
- 백테스트
- 오토사
- probability
- 자동매매
- 백트레이더
- 클라우드
- Bitcoin
- AUTOSAR
- Today
- Total
목록퀀트 (22)
Leo's Garage
오늘은 일목균형표를 적용한 전략을 만들어 보겠다. 일목균형표의 영어 이름은 Ichi moku로 이름에서 알 수 있다시피 일본에서 만들어진 지표이다. 뜻은 시장의 '균형'을 '일목요연'하게 나타내는 '표'이다. 일목 균형표는 아래의 공식으로 계산한다. 전환선 = (최근 9일간 최고가 + 최근 9일간 최저가) / 2 기준선 = (최근 26일간 최고가 + 최근 26일간 최저가) / 2 선행 스팬1 = (당일의 기준선 값 + 당일의 전환선 값) / 2 선행 스팬2 = (최근 52일간 최고가 + 최근 52일간 최저가) / 2 후행 스팬 = 현재의 가격을 26일 뒤 쪽에 표시 구름대 = 선행 스팬1과 선행 스팬2 사이를 칠하면 띠를 형성하게 되는데, 이것을 구름대라고 한다. 자세한 해석은 아래의 링크를 참조하자. ..
오늘은 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..
오늘은 새로운 BackTesting Framework인 BackTesting.py를 이용하여 간단한 SMA cross 전략을 만들어보겠다. https://kernc.github.io/backtesting.py/ Backtesting.py - Backtest trading strategies in Python Does it seem like you had missed getting rich during the recent crypto craze? Fret not, the international financial markets continue their move rightwards every day. You still have your chance. But successful traders all agre..
두번째 상승장 판단 전략을 만들어보자. 이번에는 단순히 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..
이번에는 상승장을 판단하는 전략을 간단하게 만들어서 테스트해보겠다. 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..
이번에는 골든 크로스와 데드 크로스를 이용해서 간단한 전략을 만들어보자 이번에 작성할 전략은 두 개의 이평선이 서로 교차하는 지점을 기준으로 매수 / 매도를 하려고한다. 하나는 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_..