일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 암호화폐
- python
- AUTOSAR
- 파이썬
- backtest
- Bitcoin
- it
- 비트코인
- GeorgiaTech
- 토플
- 아마존 웹 서비스
- 자동차sw
- can
- 오토사
- probability
- backtrader
- 확률
- 백트레이더
- AWS
- Cloud
- 개발자
- 자동매매
- 프로그래밍
- 퀀트
- 블록체인
- 토플 라이팅
- toefl writing
- TOEFL
- 백테스트
- 클라우드
- Today
- Total
목록python (34)
Leo's Garage
unit test는 함수 단위로 코드 동작성을 검사하는 테스트이다. 통합 테스트는 여러개의 함수가 동작하는 묶음에 대한 동작 검증 테스트이다. 실제로 내가 일하고 있는 자동차 임베디드 SW 분야에서도 이와 같이 테스트를 진행한다. 실제 각 함수 단에 대한 unit test를 진행하고 나서 요구사항에 따른 특정 기능에 대한 동작 검증을 통합 테스트로 묶어서 진행하곤 한다. smtm의 저자분도 이러한 점을 강조하면서 통합테스트의 중요성을 강조하고 있다. 자 저자분이 작성한 통합 테스트 코드를 살펴보자. import unittest from smtm import TddExercise from unittest.mock import * import requests class TddExerciseIntegratio..
mock란 실제 테스트하기에는 비용이 크거나 혹은 테스트할 수 없는 상황에 마치 진짜인 것처럼 동작하게 하는 모조품을 이르는 말이다. 이전 포스트에서 smtm 코드의 테스트 코드 예제를 살펴보면서 REST API의 테스트 코드를 작성하였다. 여기에는 큰 문제가 하나 있는데 REST API는 결국 외부의 서버(업비트)에게 정보를 요청하고 받게 된다는 점이다. 만약에 테스트 환경에서 internet이 안되거나 혹은 업비트의 서버가 불안정해서 정확한 정보를 받을 수 없다면 테스트 자체를 신뢰할 수 없는 상황이 된다. 우리는 테스트 환경을 일정하게 만들 필요가 있다. 실험 시 외부 요인을 통제하지 못한다면 실험 자체가 무의미한 것과 마찬가지이기 때문이다. 이러한 환경을 통제하기 위해서 우리는 unittest 모..
지난 시간에 이어서 smtm 코드 내에 TDD 예시 코드를 분석해보겠다. https://github.com/msaltnet/smtm GitHub - msaltnet/smtm: It's a game to get money It's a game to get money. Contribute to msaltnet/smtm development by creating an account on GitHub. github.com 자 지난 시간에 우리는 업비트에서 제공하는 REST API 예제를 살펴보았다. 자 그런데 여기서 REST API가 뭔지 모르는 분도 있을 테니 간단히 설명하겠다. REST API는 두 컴퓨터 시스템이 인터넷을 통해서 전달하는 정보를 안전하게 교환하기 위한 일종의 약속이자 Interface라고 ..
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..
AutoTradingBot을 공부하기로 했다. 기존에 따로 만들고 있고 운영하고 있는 Bot이 있긴 한데, Bot을 업데이트하기 전에 다른 분들이 만들어 놓은 여러가지 자동 매매 프로그램을 공부해보고자 한다. 첫번째 SW는 smtm이다. https://github.com/msaltnet/smtm GitHub - msaltnet/smtm: It's a game to get money It's a game to get money. Contribute to msaltnet/smtm development by creating an account on GitHub. github.com 필명 맛소금님이 개발하신 smtm(show me the money)이다. 이 분의 약력을 얼핏 살펴보았는데 정확하게 잘 알지는 못..
자 이번에는 users model을 좀 더 업데이트 해보도록 하자. from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class User(AbstractUser): class GenderChoices(models.TextChoices): MALE = ("male", "Male") FEMALE = ("female", "Female") class LanguageChoices(models.TextChoices): KR = ("kr", "Korean") EN = ("en", "English") class CurrencyChoices(models.TextChoices): ..
이전 포스팅에서 이어서 Users App을 수정하도록 하겠다. 이전 포스팅에서 아래와 같은 에러 메시지를 보았다. 이 말은 user의 데이터 구조는 변경하였는데, admin 패널에 페이지는 기존의 user app의 admin 패널을 그대로 상속했기 때문에 문제가 된다는 것을 알려주는 것이다. 즉 우리는 first name과 last name을 데이터에서 받지 않는데 admin 패널에서는 그것들을 찾고 있는 상황이다. 자 그러면 users의 admin.py의 코드를 살펴보자 from django.contrib import admin from django.contrib.auth.admin import UserAdmin from .models import User # Register your models he..