일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- backtrader
- it
- 개발자
- 백트레이더
- python
- 토플
- toefl writing
- 프로그래밍
- 파이썬
- AUTOSAR
- GeorgiaTech
- 자동차sw
- 아마존 웹 서비스
- 블록체인
- 비트코인
- backtest
- 암호화폐
- Bitcoin
- probability
- 백테스트
- TOEFL
- Cloud
- AWS
- 토플 라이팅
- 오토사
- 퀀트
- can
- 자동매매
- 클라우드
- 확률
- Today
- Total
목록파이썬 (27)
Leo's Garage
Numpy에서 Matrix 형태로 Data를 선언한 뒤에 목적에 맞게 Column이나 Row로 분리할 수 있다. import numpy as npdata = np.array([[1,2,3],[4,5,6],[7,8,9]])print('data is', data)x = data[:,0] # convert data column 0 to rowprint('x is', x)y = data[:,1] # convert data column 1 to rowprint('y is', y)z = data[:,2] # convert data column 2 to rowprint('z is', z)a = data[0,:] # convert data row 0 to rowprint('a is', a)print('the shape..
pathlib 모듈은 파일, 디렉토리 경로를 객체로 취급하여 조작하거나 처리가 가능하다. 편리한 기능인데, 내장된 함수가 다양하여 파일명이나 부모 디렉토리를 알아내거나, 경로의 목록을 얻어내거나, 파일을 작성하거나 삭제할 수 있다. 파일관련된 처리가 가능하다. pathlib는 python 3.4부터 추가된 모듈이며, 표준 라이브러리에 포함되어 있어서 별도 설치가 필요없다. Object 생성 import pathlib import os file = pathlib.Path('dev/config.txt') Constructor pathlib.Path() 객체를 생성할 수 있다. 인수로는 경로의 문자열을 지정할 수 있고, 상대경로 혹은 절대경로든 상관없이 가능하다. file.is_file() file.is_di..
오늘은 KDJ index를 사용해서 전략을 만들어보도록 하겠다. 우선 KDJ index에 대해서 먼저 설명하겠다. KDJ index는 주가 트랜드의 변화를 예측하고 분석하는데 사용되는 지표이며 다른 말로는 랜덤 지표라고도 알려져 있다. 이 지표는 시장의 단기 트랜드를 분석하는데 아주 자주 사용된다. KDJ 지표는 스토케스틱 오실레이터 지표의 파생형 지표인데 기존 지표에 J라인이 추가된 점이 차이점이다. % K, %D라인 값은 주식이 과매수 (80 이상), 과매도 (20 미만) 인지 나타낸다. % J 라인 값은 상승과 하락이 전환되는 시점에 0 혹은 100으로 가는 성질이 있다. 따라서 K 라인과 D 라인의 상대적 위치 (떨어져 있는지, 모였는지), 기울기 그리고 RSI 지표 등을 같이 살피면 고점, 저점..
이번에는 이전 포스팅에 이어서 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: ..
오늘은 아주 간단한 전략을 만들어보았다. 바로 그냥 단순히 종가를 비교해서 전날보다 오늘 높으면 사고, 전날보다 낮으면 파는 아주 아주 심플한 전략이다. 우선 코드부터 확인해보자 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..
이번에는 상승장을 판단하는 전략을 간단하게 만들어서 테스트해보겠다. 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...