일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자동매매
- 오토사
- AUTOSAR
- Cloud
- GeorgiaTech
- 토플 라이팅
- backtrader
- python
- 자동차sw
- 백테스트
- 퀀트
- 개발자
- 프로그래밍
- 파이썬
- 블록체인
- 비트코인
- 토플
- can
- probability
- 클라우드
- it
- 확률
- toefl writing
- AWS
- Bitcoin
- backtest
- 암호화폐
- 아마존 웹 서비스
- 백트레이더
- TOEFL
- Today
- Total
목록전체 글 (622)
Leo's Garage
이번에는 볼린져 밴드 전략을 이용하여 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_..
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라고 ..
2020년부터 각종 로봇트레이딩 서비스를 이용해보았다. 대표적으로는 AIM https://home.getaim.co/ Home AIMing 제가 회사에서 중요한 일을 하게 될수록 점점 더 바빠지고, 자산을 제대로 관리할 수 있는 시간은 점점 더 부족해지는 건 당연한 거 같아요. 전문적인 PB의 관리를 받아서 내가 원하는 수익 home.getaim.co AIM은 시장을 사계절로 비유하여 각 상황에 맞게 전체 자산 보유 비율을 조정하는 식으로 투자한다. 또한 투자자의 성향에 맞게 기본적인 자산 비율을 조절한다. 사계절이라고 해서 올웨더식이냐고 생각하면 또 그렇지는 않다. 나는 AIM을 약 1년 반정도 운용해보았는데 결과적으로는 만족할 만한 성과를 얻었다. AIM의 장점은 하락장에서의 방어에 있었다. 만약 A..
PineScript는 기술적 지표, 전략, 알림 등을 생성하고 사용자 정의하는데 사용되는 프로그래밍 언어디. TradingView 차트 플랫폼에서 사용되며, 시장 데이터를 분석하여 의사 결정을 내릴 수 있도록 해준다. PineScript는 JavaScript와 C와 같은 다른 프로그래밍 언어와 유사한 간단한 구문을 가지고 있으며, 기술적 지표, 수학 연산, 데이터 조작 등을 위한 내장 함수를 포함한다. 또한, 고유 지표와 전략을 생성하는데 필요한 다양한 사용자 정의 옵션을 제공한다. 예를 들어, 종가의 이동평균을 그리는 간단한 PineScript 스크립트는 다음과 같다. // This source code is subject to the terms of the Mozilla Public License 2..
TradingView의 pinescript를 이용하여 변동성 돌파 매매 알람을 만들어보자 기본적으로 내가 만든 변동성 돌파 매매 알람 컨셉은 전일 종가 + ATR(Average True Range) 보다 종가가 상승으로 갈 경우 알람을 울리는 방식이다. 아주 간단한 컨셉이므로 해당 기본 아이디어를 바탕으로 세부적인 전략은 추가하면 된다. 간단하게 작성한 스크립트 코드는 다음과 같다. // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © downyK //@version=4 // Add volatility breakout to the chart study("..
BackTrader를 이용하여 간단한 변동성 돌파 매매 전략을 만들어보자. 변동성 돌파 매매는 Larry Williams에 의해 소개된 전략이다. 상승 추세를 따라가면서 일 단위로 빠르게 수익을 실현하는 단기 매매 전략이다. 아이디어의 골자는 트랜드 추종을 기본으로 하면서 상승하는 종목이 더 상승할 것이라는 추측을 기저로 한다. 전략 자체는 간단하다. 여러가지 개념이 있지만, 내가 사용한 전략을 설명하면, 금일 고가가 전일 종가 + ATR(Average True Range)보다 크면 매수한다. 여기서 ATR이란 변동성을 측정하는 지표면서 해당 종목의 위험도를 알려주는 지표이다. TR은 아래 3가지를 통해 계산하는데 1. 금일 고가 - 금일 저가 2. 금일 고가 - 전일 종가 3. 금일 저가 - 전일 종가..
50일 평균선보다 가격이 올라가면, 알람이 울리는 지표를 만들어보자. // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © downyK //@version=4 // Add 50 MA to the chart study("50 MA", overlay=true) ma50 = sma(close, 50) // Plot the 50 MA plot(ma50, color=color.red) // Create an alert for when the price crosses above the 50 MA alertcondition(close > ma50, title='Pri..