본문 바로가기

전체 글

(50)
강화학습으로 비트코인 차트 학습시키기 저번 포스트에서 예고했듯이 snake game ai에 이용했던 강화학습 알고리즘을 비트코인 차트에 적용시켜 보겠습니다. # game.py 비트코인 차트 환경이 game 환경이 될 것입니다. 본격적인 설명에 앞서 먼저 말씀드릴게 있습니다. snake game과 비트코인 차트 학습은 다른 점이 있습니다. snake game은 특정상황에서 해야할 행동에 대한 보상이 바로 정해집니다. 그리고 그 보상이 모델을 옳은 방향으로 학습시켜줍니다. 또한 발생되는 환경의 경우의 수가 그렇게 많지 않습니다. 그러나 차트는 그렇지 않습니다. 셀 수없이 많은 경우의 수가 있습니다. 제가 사용하는 한정된 차트 데이터는 overfitting을 유발할 수 있으므로 차트 데이터를 두 가지로 나눠줄 필요가 있습니다. 하나는 학습 데이터..
강화학습으로 snake game 학습시키기_2 해당 블로그는 유튜브 "freeCodeCampe.org" 님의 https://youtu.be/L8ypSXwyBds?si=GTo6sJqoXQU25LM6 영상을 참고했습니다. 관련 코드는 https://github.com/patrickloeber/snake-ai-pytorch 를 참고해 주세요. # 필요 라이브러리 다운 이번 포스팅에서는 강화학습에 필요한 라이브러리를 다운해보겠습니다. 터미널에서 pip install pygame을 통해 pygame을 다운로드하여주세요. 그리고 강화학습에 필요한 pytorch를 다운로드받아 주겠습니다. https://pytorch.org/get-started/locally/ 해당 파이토치 다운 사이트로 가서 본인에게 맞는 os를 선택한 후 pip, python, cpu을 선택..
강화학습으로 snake game 학습시키기_1 해당 블로그는 유튜브 "freeCodeCampe.org" 님의 https://youtu.be/L8ypSXwyBds?si=GTo6sJqoXQU25LM6 영상을 참고했습니다. 관련 코드는 https://github.com/patrickloeber/snake-ai-pytorch 를 참고해주세요. 저는 기존 매매 알고리즘으로는 좋은 수익률의 매매 알고리즘이 찾기에는 한계가 있다는 것을 깨닫고 강화학습을 매매 알고리즘에 적용 해야겠다고 마음 먹었습니다. 그러기 위해서는 간단한 게임에 강화학습을 적용시켜본 후, 강화학습의 개념을 먼저 익혀보도록 하겠습니다. 이번 포스팅에서는 강화학습의 개념들을 먼저 소개시켜 드리겠습니다. 강화학습을 적용 시켜 볼 그 게임은 snake 게임 입니다. # 게임 설명 사용자가 방향키로 ..
비트코인 차트에 코사인 유사도 접목하기 이번에는 "코사인 유사도"를 이용하여 비트코인 차트 매매에 사용해보겠습니다. 우선 코사인 유사도란, 내적공간의 두 벡터간 각도의 코사인값을 이용하여 측정된 벡터간의 유사한 정도를 의미합니다. 과거 차트중에 현재 차트 모양과 비슷한(코사인 유사도가 높은) 차트 구간을 찾습니다. 그리고 해당 차트 구간 뒤의 봉을 몇개 확인합니다. 그리고 그 몇개의 봉이 상승하면, 현재의 차트도 상승, 하락하면 현재의 차트도 하락 할것이라고 예상할 수 있습니다. 즉, '과거의 차트에서 이 모양일 때 이렇게 움직였으니, 지금의 비슷한 모양의 차트도 이렇게 움직일것이다' 라고 예측할 수 있을 것입니다. 나머지는 코드를 통해 추가 설명 해드리겠습니다. #코드 from binance.client import Client import..
[백테스팅]MACD와 RSI를 이용한 선물 매매하기 지금까지 제가 포스팅한 글에서는 상승 배팅만 가능한 백테스팅 코드였습니다. 그러나 이번에는 하락에도 배틱이 가능하면 레버리지 또한 조절 가능한 코드를 소개 해드리겠습니다. 이번 백테스팅에 적용할 매매 아이디어는 다음과 같습니다. 매수조건 1. MACD 와 MACD signal 골든크로스 2. 조건1 발생 5봉 이내에 rsi 과매도 발생 3. 조건 2 발생 시 ema 정배열일 경우 롱 매도 조건 (매수조건의 반대 경우) 1. MACD 와 MACD signal 데드크로스 2. 조건1 발생 5봉 이내에 rsi 과매수 발생 3. 조건 2 발생 시 ema 역배열일 경우 숏 그리고 기본적으로 손익비 5퍼센트, 수수료 0.05퍼센트, 레버리지 3배로 설정하겠습니다. 차트 데이터는 한국 비트코인 5분봉 4만개 데이터를..
[백테스팅]MACD 와 MACD signal을 이용하여 매매하기 차트 보조지표 중 하나인 macd, macd signal, 그리고 rsi을 추가적으로 이용하여 매매 백테스팅을 진행해 보겠습니다. 구체적인 매매 아이디어는 다음과 같습니다. 매수조건 1. macd 선이 macd singnal 상향돌파 (골든 크로스) 발생 2. rsi가 35 이하로 과매도 손익비는 1퍼센트로 하겠습니다. 한국 비트코인 5분봉 2만개 차트에서 백테스팅을 진행해보겠습니다. #코드 본격적인 코드를 소개해드리겠습니다. import pyupbit access = "123abc" # 본인 값으로 변경 secret = "123abc" # 본인 값으로 변경 upbit = pyupbit.Upbit(access, secret) print(upbit.get_balance("KRW-BTC")) # KRW-BT..
[백테스팅] 하이킨아시 캔들 이용하여 매매하기 하이킨아시 캔들을 이용하여 매매 백테스팅을 진행해 보도록 하겠습니다. 기본적인 매매 아이디어는 유튜버 코비딕 님의 "한 달 만에 10만원 → 6000만원 만든 매매법 분석" 에서 따왔습니다. 매매 아이디어는 다음과 같습니다. 매수조건: 1. 200일 이평선 위에 하이킨아시 캔들들이 있음 2. stochastic rsi에서 k가 d를 상향돌파 -> 과매도로 판단 3. 2번째 조건 발생 5봉 이내에, 이전 양봉보다 몸통이 길고 아랫꼬리가 없는 양봉이 나오면 매수! 손익비는 익절 3퍼, 손절 1.5퍼로 맞춰줍니다. 이제 본격적인 코드를 소개해드리겠습니다. import pyupbit access = "abc123" # 본인 값으로 변경 secret = "abc123" # 본인 값으로 변경 upbit = pyup..
[벡테스팅]볼린저 밴드를 이용한 백테스팅 이번 백테스팅에 사용할 지표는 볼린저 밴드입니다. 저의 알고리즘은 다음과 같습니다. 매수 조건: 고점대비 20% 이상 하락을 경험하고, 볼린저밴드의 +1 시그마 상향 돌파시 매수 매도조건1: -1 시그마 터치시 전액 매도 매도조건2: 매도조건 1 충족 안됐을 때, 직전 고점 대비 +10% 달성시 50% 익절 매도조건3: 매도조건 2 충족됐을 때, 1시그마 터치시 전액 청산 본격적으로 저의 코드를 소개하겠습니다. import talib import yfinance as yf stock_data = yf.download('^GSPC')#S&P500 데이터에 해당 count = 5000 stock_data = stock_data.tail(count) stock_data['upper'], middle, stoc..