암호화폐 자동 거래 봇 개발하기 2번째: 변동성 돌파 전략에 따른 목표 가격 계산하기
이전 글에서 이어지는 내용입니다.
ayogom님 말대로 Github에서 "자동 매매" 키워드로 검색하니 정말 많은 소스 코드가 공개되어 있습니다. 하지만 대부분 파이썬 코드로 작성되어 있습니다. 만약 주 개발언어가 파이썬이라면 괜찮아 보이는 소스 코드를 다운받아서, 코인 자동 매매를 바로 시작할 수 있을 것 같습니다.
![]() |
---|
하지만 저는 "자동 매매 프로그램"을 타입스크립트(Typescript)로 개발할 겁니다. 제가 최근에 가장 많이 사용하는 개발 언어입니다. 그리고 개발 환경은 이렇습니다.
# 개발환경
- macOS Big Sur
- Node v14.16.0
- npm v6.14.11
- Visual Studio Code
타입스크립트로 프로젝트 구성하기
https://www.typescriptlang.org
타입스크립트 홈페이지의 "Project Configuration" 문서를 참고하여 프로젝트를 구성합니다. 공식 문서에서 추천하는 방법으로 프로젝트를 구성해봅니다.
먼저 typescript
와 @tsconfig/recommended
를 설치합니다.
npm init -y
npm install typescript
npm install --save-dev @tsconfig/recommended
그다음 tsconfig.json
파일을 작성합니다.
{
"extends": "@tsconfig/recommended/tsconfig.json",
"compilerOptions": {
"preserveConstEnums": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
업비트 API 패키지 설치하기
업비트 거래소의 Open API를 사용하기 위해서는 업비트 개발자 센터에서 API Reference 문서를 보면서 직접 구현해야합니다. 하지만 구현하기 귀찮으니 다른 개발자가 만들어 놓은 패키지가 있는지 먼저 검색해봤습니다.
![]() |
---|
npm packages repository에서 "upbit" 키워드로 검색하니 몇 가지 패키지가 존재합니다. 각 패키지를 확인해보니 마지막 업데이트 날짜가 대부분 3년 전입니다. 하지만, 그 동안 업비트API 규격에 변동사항이 없었으니 그냥 사용해도 괜찮을 것 같습니다.
이 중에서 다운로드 수가 가장 많고 타입스크립트로 개발되어 있는 upbit-api
가 좋을 것 같습니다. upbit-api 를 설치합니다.
npm install upbit-api
방금 설치한 upbit-api 패키지를 그대로 사용해도 되지만, 저는 Upbit 래퍼 클래스를 만들어서 사용할꺼에요. 왜냐하면 upbit-api에서 제공하는 functions 이름이 마음에 들지 않는 것도 있지만, 혹시라도 더 좋은 upbit 패키지가 나오면 교체할 생각입니다.
import upbitApi from "upbit-api";
export default class Upbit {
getMarketCodes = upbitApi.allMarket;
getTicker = upbitApi.ticker;
getOrderBook = upbitApi.orderBook;
getTradesTicks = upbitApi.ticks;
getCandlesMinutes = upbitApi.candlesMinutes;
getCandlesDays = upbitApi.candlesDay;
getCandlesWeeks = upbitApi.candlesWeek;
getCandlesMonths = upbitApi.candlesMonth;
}
하지만 upbit-api 패키지의 Readme.md를 읽어보니, 업비트 API가 다 구현되어 있는것은 아니네요. 매매에 필요한 Order API가 구현 안되어 있습니다. upbit-api를 개발한 신재헌님이 나머지 API도 업데이트 해 주면 좋겠지만, 제 생각에 더이상 업데이트는 없을 것 같습니다.
어쩔 수 없지만 구현되어 있지 않은 Order API는 나중에 제가 직접 구현해야 할 것 같습니다.
변동성 돌파 전략에 따른 목표 가격 계산하기
래리 윌리엄스의 변동성 돌파 전략을 다시 복습해봅니다. 변동성 돌파 전략을 정리하면 다음과 같습니다.
- Range = 어제 고가(high) - 어제 저가(low)
- 매수진입: 현재가(price) > (오늘 시가(open) + Range * 0.5)
- 매도청산: 다음날 시가(open)
이제 위 전략을 사용하여 금일 매수 목표가를 계산합니다. 업비트 API의 일자별 캔들봉 데이터에서 전일 종가/고가/저가 정보를 가져옵니다.
async function getTargetPrice(market: string) {
const data = await upbit.getCandlesDays(market, 2);
const yesterdayCandle = data[1]; // 어제자 캔들
const range = yesterdayCandle.high - yesterdayCandle.low;
const targetPrice = yesterdayCandle.price + range * 0.5; // 목표가격
return targetPrice;
}
그리고 STEEM 코인에 적용해서 목표 가격을 계산해보았습니다.
async function main() {
const targetPrice = await getTargetPrice("KRW-STEEM");
console.log(targetPrice);
}
main();
1397.5 라는 값이 나옵니다. STEEM 가격이 1397.5에 도달하면 매수하면 될 것 같습니다.
그리고 지금 시각에 STEEM 가격은 1175 이네요. 음...🤔
생각보다 쉽지 않을 것 같습니다.
이 글을 읽으신 분들 모두 성공적인 투자하시길 바랍니다.
@anpigon transfered 1.0 KRWP to @krwp.burn. voting percent : 0.24%, voting power : 91.95%, steem power : 1751987.49, STU KRW : 1200.
@anpigon staking status : 40 KRWP
@anpigon limit for KRWP voting service : 0.2 KRWP (rate : 0.005)
What you sent : 1.0 KRWP
Refund balance : 0.8 KRWP [53054896 - 68d32d13a7f73c32088c58b1d0b982307c2bae8d]
오랜만에 안피곤님의 포스팅을 보네요!
반갑습니다!
필현님 반갑습니다. 요즘 다시 스팀잇 글쓰기에 취미를 붙이고 있습니다. ㅎㅎ
자동거래 봇 재밌을듯!!!! ㅋㅋ 요즘은 너무 급등락이 심해서 전략이 중요하고 중요해 보이긴 하넹 ㅎㅎ
재미 있을것 같긴 해. ㅋㅋㅋ
[US$49.00](▼14%)[Nespresso]스타벅스 네스프레소 호환 캡슐 7종 / 120 캡슐 골라담기 / 20개씩 총 6종류 교차 선택 가능 / 중복 선택 가능 / 재고 확보 / 무료배송 / 개당 약 486원 최저가★
WWW.QOO10.COM[US$48.50](▼31%)[illy]★큐텐 최저가!!★일리 100캡슐/야콥스 100캡슐/돌체구스토 108캡슐/스타벅스 120캡슐 네스프레소 호환 캡슐★무료배송★
WWW.QOO10.COM오~ 이거 잘되면 변동 신경안쓰고 알아서 사고 팔고 수익 내주겠네요~ 응원합니다~
응원감사합니다!~