암호통화 API2018. 3. 28. 23:10



바이낸스 (Binance) API 다뤄보기 #2편입니다.



2편에서는 "Error codes for Binance (2017-12-01)"에 대해 다뤄 보겠습니다.

 

 

아주 상세한 번역은 아니고 입맛대로 변환한 내용이며 대략 어떤 내용인지 이해만 할 수 있을 정도이니 감안하고 보기 바랍니다.



Binance API를 이용한 각종 요청에 대해 에러가 발생하게 되면 아래와 같은 형태의 에러 코드와 메시지의 값을 리턴하며 에러 코드는 정해져 있지만 메시지값은 상황에 따라 다를 수 있습니다.

 


{
  "code":-1121,
  "msg":"Invalid symbol."
}

10xx - 일반적으로 발생되는 서버나 네트워크 문제

-1000 알 수 없음

  • 요청을 처리하는 동안 알 수없는 오류가 발생했습니다.

-1001 접속 해제

  • 내부 에러; 요청을 처리 할 수 ​​없습니다. 다시 시도하십시오..

-1002 비공인

  • 실행할 수 있는 권한이 없습니다.

-1003 너무 많은 요청

  • 너무 많은 요청을 할 수 없습니다.
  • 너무 많은 요청이 대기중입니다.
  • 단위 시간당 처리할 수 있는 요청 제한을 확인해주세요.
  • 너무 많은 요청이 대기중이며 심할 경우 IP Ban 당할 수 있습니다.

-1006 예상치 못한 응답

  • 예상치 못한 응답이 메시지 버스에서 수신되었습니다.
  • 실행 상태를 알 수 없습니다.

-1007 시간제한

  • 응답 대기 시간 제한 초과입니다.
  • 요청 상태를 알 수 없습니다.
  • 실행 상태를 알 수 없습니다.

-1013 잘못된 메시지

  • 잘못된 메시지

-1014 주문표 구성 에러

  • 지원되지 않는 주문 조합입니다.

-1015 너무 많은 주문 요청

  • 너무 많은 주문 요청을 할 수 없습니다.
  • 너무 많은 주문 요청을 할 수 없습니다. 단위 시간당 처리할 수 있는 주문 요청 제한을 확인 해주세요.

-1016 서비스 종료

  • 이 서비스는 더 이상 제공되지 않습니다.

-1020 지원되지 않는 작업

  • 이 작업은 지원되지 않습니다.

-1021 잘못된 TIMESTAMP

  • 잘못된 TIMESTAMP

-1022 유효하지 않은 서명

  • 이 요청에 대한 서명이 유효하지 않습니다.

11xx - 요청 문제

-1100 잘못된 문자가 입력됨

 -1101 너무 많은 매개 변수

  • 너무 많은 매개 변수가 전달 되었습니다.
  • 중복된 매개 변수가 전달 되었습니다.

-1102 필수 매개 변수가 없는 문제

  • 필수 매개 변수가 전송되지 않았거나 널 (null)이거나 형식이 잘못되었습니다.

-1103 알 수 없는 매개 변수가 전달 됨

 -1104 일치하지 않는 매개 변수

-1105 매개 변수가 없거나 비어 있음

-1106 응답 할 수 없는 매개 변수

  • 불필요하거나 응답 할 수 없는 매개 변수가 전송되었습니다.

-1114 TimeInForce(TIF) 값이 불 필요한데 입력 되었음

-1115 TimeInForece(TIF) 값이 잘못 되었음

-1116 주문 타입이 잘못 입력 되었음

-1117 매수(BUY) / 매도(SELL) 구분이 잘못 되었음

-1118 OrderID가 누락되었음

 -1119 원주문의 OrderID가 누락되었음 (취소/정정 등에 필요)

 -1120 잘못된 Interval 값이 입력 되었음

-1121 잘못된 symbol이 입력되었음

-1125 잘못되거나 유효하지 않은 Listen Key 가 입력되었음

 -1128 Params 조합이 잘못됨

 -1130 잘못된 매개변수가 전달 됨

20xx - Processing Issues

-2008 잘못된 API-Key가 입력됨

 -2013 입력된 주문이 없음 (OrderID를 기준으로 정정, 수정 등의 경우에 발생)

-2014 API-Key 입력 형식이 잘못 됨

-2015 MBX-Key (API-Key, IP, 권한)이 잘못 됨

Messages for -1010 ERROR_MSG_RECEIVED, -2010 NEW_ORDER_REJECTED, and -2011 CANCEL_REJECTED

Error message Description
"Unknown order sent."

주문에 필요한orderIdclOrdIdorigClOrdId가 잘못 입력됨

"Duplicate order sent." 중복된 주문임
"Market is closed." 입력한 symbol은 현재 거래 가능한 상태가 아님
"Account has insufficient balance for requested action." 주문에 필요한 잔고가 충분하지 않음
"Market orders are not supported for this symbol." 시장가 주문이 불가능한 symbol 임
"Iceberg orders are not supported for this symbol." IceBerg 설정이 불가능한 symbol 임
"Stop loss orders are not supported for this symbol." STOP_LOSS 설정이 불가능한 symbol 임
"Stop loss limit orders are not supported for this symbol." STOP_LOSS_LIMIT 설정이 불가능한 symbol 임
"Take profit orders are not supported for this symbol." TAKE_PROFIT 설정이 불가능한 symbol 임
"Take profit limit orders are not supported for this symbol." TAKE_PROFIT_LIMIT 설정이 불가능한 symbol 임
"Price * QTY is zero or less." 주문 총액(가격 * 수량)이 기준치 미달임
"IcebergQty exceeds QTY." icebergQty 수량이 주문에 필요한 최소 수량에 미달됨
"This action disabled is on this account." 해당 처리가 불가능한 계좌임
"Unsupported order combination" orderTypetimeInForcestopPrice 그리고(또는)icebergQty 조합이 불가능함
"Order would trigger immediately."

생략

"Cancel order is invalid. Check origClOrdId and orderId." origClOrdId 또는orderId가 이미 전송 되었음
"Order would immediately match and take." 입력한 LIMIT_MAKER 주문 타입은 최근 체결 가격과 일치하지 않음.

-9xxx Filter failures

Error message Description
"Filter failure: PRICE_FILTER" 입력한 가격이 너무 낮/높거나 symbol의 exchange tick size에 맞지 않음
"Filter failure: LOT_SIZE" 입력한 수량이 너무 낮/높거나 symbol의 exchange의 step size에 맞지 않음
"Filter failure: MIN_NOTIONAL" 입력한 가격 * 수량에 의한 주문 총액이 너무 작은 규모임
"Filter failure: MAX_NUM_ORDERS"

 이미 너무 많은 주문이 입력되어 있음

"Filter failure: MAX_ALGO_ORDERS"  이미 너무 많은 청산 주문이 존재함
"Filter failure: EXCHANGE_MAX_NUM_ORDERS"  이미 너무 많은 주문이 입력 되어 있음
"Filter failure: EXCHANGE_MAX_ALGO_ORDERS"

 이미 너무 많은 청산 주문이 존재함


 

 

대충 입력한 것이므로 잘못된 내용이 있거나 누락된 내용이 있을 수 있음을 감안하고 보시고 추가로 궁금한 내용은 Comment 남겨 주세요.

 

 

Posted by 투자의神
암호통화 API2018. 1. 25. 16:00

 

 

"~API 다뤄보기" 시리즈를 작성하고 있다보니 이게 너무 간단한 구조이다보니 #2편으로 넘어가기 힘드네요.

 

 

그렇지만 API에 대해 잘 모르는 분들을 위해 쉽게 풀어 보도록 하겠습니다.

 

 

우선 업비트의 경우에는 공식적으로 API를 지원하지 않고 있으나 Web Request 를 통해 조회가 가능하고 국내의 다른 가상통화 거래소보다 업비트에 상장된 종목이 많은편이기에 JSon Parsing 을 조금만 안다면 업비트를 통해 시세 데이터를 받아오는것이 편리할 수 있을 것 같습니다.

 

 

우선 업비트에서 데이터를 받으려면 어떤 데이터를 전송 해달라고 할 것인지 업비트 서버에 요청을 해야 합니다.

 

 

요청문의 기본 프레임은 아래와 같습니다.

 

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/1?code=CRIX.UPBIT.KRW-BTC&count=10&to

 

 

 

위 텍스트를 다시 풀어내면 아래와 같은 구조가 됩니다.

 

 

 

- 1. 조회를 위한 기본 주소

 

 

- 2. 조회 기준을 입력하는데 필요한 데이터에 맞게 minutes, days, weeks, months 등을 입력

 

 

- 3. 조회 단위를 되는데 만약 2번에서 minutes가 입력되고 3번에서 1이 입력되면 매 '1분' 마다의 데이터를 전송

      ( 주의사항 : 3번의 입력은 2번의 값이 minutes 일때만 하면 됩니다. )

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/1?code=CRIX.UPBIT.KRW-BTC&count=10

 

 

      2번에서 minutes를 입력하고 3번에서 30을 입력하면 매 '30분' 마다의 데이터를 전송

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/30?code=CRIX.UPBIT.KRW-BTC&count=10

 

 

      2번에서 days를 입력하고 3번에서 1을 입력하면 매 '1일' 단위의 데이터를 전송 요청 할 수 있음

      ( 주의사항 : 아래의 조회 요청문은 위의 것과 다르게 days 이므로 3번 입력 항목이 없음)

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/days/?code=CRIX.UPBIT.KRW-BTC&count=10

 

 

 

- 4. 조회 요청할 종목코드를 입력할 수 있으며 필자가 업비트를 통해 수신받고 있는 종목코드 목록은 아래 별도 기입

 

 

- 5. 수신받을 데이터의 갯수를 입력

       2번 minutes, 3번 1, 5번에 10을 입력하면 업비트 서버에 "1분 단위의 데이터 10개를 보내주시오" 라는 조회 요청

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/1?code=CRIX.UPBIT.KRW-BTC&count=10

 

 

       2번 days, 3번 1, 5번에 50을 입력하면 업비트 서버에 '1일 단위의 데이터 50개를 보내주시오"라는 조회 요청

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/days/?code=CRIX.UPBIT.KRW-BTC&count=50

 

 

 

위 조회 요청문은 조회 요청 시점으로부터의 과거 데이터를 수신 받을 수 있으며 5번의 count값은 입력하기에 따라 수신 받을 수 있는 데이터의 갯수가 달라지며 최대값은 200입니다.

 

 

따라서 과거 데이터를 모두 받고 싶다면 별도의 조회 요청문이 필요한데 위에서 언급한 기본 프레임에서 살짝 살을 붙이기만 하면 되고 아래와 같습니다.

 

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/1?code=CRIX.UPBIT.KRW-BTC&count=10&to=2017-12-27%2005:10:00

 

 

 

기본 요청문 뒤에 특정 날짜, 시간값을 넣고 요청하면 해당 시점을 기준으로 과거 데이터를 보내주게 되는데 위 조회 요청문의 경우에는 2017년 12월 27일 오전 5시 10분을 기점으로 1분 단위의 데이터 10개를 보내 달라는 뜻이 됩니다.

 

 

기본적인 날짜시간값은 DATETIME 형식이기 때문에 각자가 사용하는 프로그램에 따라서 AddMinutes(), AddDays() 등의 함수를 이용하여 날짜시간값을 변경하여 연속 조회 요청하면 필요한 만큼의 과거 데이터를 충분히 받을 수 있습니다.

 

 

조회 요청에 의해 수신 받을 수 있는 JSON 파일을 메모장으로 열어보면 아래와 같은 데이터가 들어 있음을 확인할 수 있습니다.

 

 


     [

        { 

           "code":"CRIX.UPBIT.KRW-BTC",

           "candleDateTime":"2017-12-27T05:00:00+00:00",

           "candleDateTimeKst":"2017-12-27T14:00:00+09:00",

           "openingPrice":22495000.00000000,

           "highPrice":22563000.00000000,

           "lowPrice":22360000.00000000,

           "tradePrice":22496000.00000000,

           "candleAccTradeVolume":488.99434602,

           "candleAccTradePrice":10985289927.57700000,

           "timestamp":1514351400138,

           "unit":10

        }

     ]

 

 

▲ code : 종목코드

 

▲ candleDateTime : 해당 캔들(봉) 생성 시각

 

▲ candleDateTimeKst : 해당 캔들(봉) 생성 시각 (한국시각 기준. 한국은 UTC +09:00:00 임)

 

▲ openingPrice : 해당 캔들(봉) 시가

 

▲ highPrice : 해당 캔들(봉) 고가

 

▲ lowPrice : 해당 캔들(봉) 저가

 

▲ tradePrice : 해당 캔들(봉) 종가

 

▲ candleAccTradeVolume : 해당 캔들(봉) 거래량

 

▲ candleAccTradePrice : 해당 캔들(봉) 거래대금

 

▲ timestamp : UNIX 기준의 타임 스탬프

 

▲ unit : 조회 기준 (본문의 조회 요청문중 3번에 해당하는 값과 일치)

 

 

개인적으로 사용하기 위한 용도로 업비트 시세 수신 프로그램을 만들어서 운영하고 있으며 종목코드 목록은 아래와 같습니다.

 

 

 

종목명 (한글)

 

종목명 (영문)

종목코드 

 

에이다

 

Ada

KRW-ADA

 

스테이터스 네트워크 토큰

 

Status Network Token

KRW-SNT

 

리플

 

Ripple

KRW-XRP

 

비트코인

 

Bitcoin

KRW-BTC

 

네오

 

Neo

KRW-NEO

 

이더리움

 

Ethereum

KRW-ETH

 

퀀텀

 

Qtum

KRW-QTUM

 

루멘

 

Lumen

KRW-XLM

 

비트코인 골드

 

Bitcoin Gold

KRW-BTG

 

비트코인 캐시

 

Bitcoin Cash

KRW-BCC

 

이더리움 클래식

 

Ethereum Classic

KRW-ETC

 

뉴 이코노미 무브먼트

 

New Economy Movement

KRW-XEM

 

스트라티스

 

Stratis

KRW-STRAT

 

파워렛저

 

Power ledger

KRW-POWR

 

블록틱스

 

Blocktix

KRW-TIX

 

아인스타이늄

 

Einsteininum

KRW-EMC2

 

스팀

 

Steem

KRW-STEEM

 

머큐리

 

Mercury

KRW-MER

 

오미세고

 

OmiseGo

KRW-OMG

 

스팀달러

 

SteemDollars

KRW-SBD

 

라이트코인

 

Litecoin

KRW-LTC

 

모네로

 

Monero

KRW-XMR

 

코모도

 

Komodo

KRW-KMD

 

피벡스

 

PIVX

KRW-PIVX

 

리스크

 

Lisk

KRW-LSK

 

어거

 

Augur

KRW-REP

 

아크

 

Ark

KRW-ARK

 

그로스톨코인

 

Groestlcoin

KRW-GRS

 

스토리지

 

Storj

KRW-STORJ

 

대시

 

Dash

KRW-DASH

 

웨이브

 

Waves

KRW-WAVES

 

메탈

 

Metal

KRW-MTL

 

지캐시

 

Zcash

KRW-ZEC

 

버트코인

 

Vertcoin

KRW-VTC

 

 

위 내용들은 프로그램을 통해 시세 데이터를 수신 받아서 저장해두고 그것을 기반으로 어떤 아이디어나 매매 로직을 적용할 분들에게만 필요하고 손매매를 하는분께는 전혀 쓸모 없는 내용입니다만 뭔지 궁금한 분들은 위 '조회 요청문'을 인터넷 창(Internet Explorer, Chrome, Safari 등)의 주소 입력란에 넣고 엔터를 눌러보면 파일을 다운받을 수 있으니 메모장 등으로 확인 해보시면 됩니다.

( 쉽게 하려면, 본문에서 사각 테이블 안에 주소가 적힌 부분을 클릭하면 시세 데이터 파일을 다운 받을 수 있습니다. )

 

 

업비트는 정식 API를 지원하지 않기 때문에 시세 데이터 조회 요청시 최소 단위가 분(minutes)이고 실시간 체결 데이터인 틱(Tick) 단위의 데이터는 제공하지 않고 주문이 불가능한 상태이기 때문에 정식 API가 공개되기를 기다리는 분들이 많은것으로 알고 있는데 개인적으로도 염원하는바이며 정식 API가 공개되면 개인적으로 개발해서 사용하고 있는 시세 수신용 프로그램을 조금 더 다듬어서 주문 기능까지 포함하여 공개 하겠습니다.

 

 

정식 API가 지원되지 않는 경우에는 '거래'는 할 수 없고 단순히 시세 조회만 가능합니다.

 

 

더불어 얼마전 한 독자분께서 거래용 전용 프로그램의 제작을 의뢰 하기도 했는데 필자가 직접적으로 거래를 하지 않고 있는 상황이다보니 필요성에 대해 알지 못했습니다만 전일 밤 9시부터 새벽 3시까지 가상통화 거래하는분 여러명과 시간을 가지다보니 웹 브라우저의 경우 메모리 릭(누수, Lick) 현상 때문이라고 생각이 들었기에 현재 바쁜 작업들이 끝나고 나면 제작해서 공개 하겠습니다.

( 프로그램의 완성도는 독자님들의 피드백에 따라 달라질 수 있습니다. )

 

 

거래 전용 프로그램의 경우 우선적으로 작업되었으면 가상통화 거래소가 있으면 관련해서 Comment 남겨 주시고 UI(User Interface, 쉽게 말해 디자인.)은 거래소에 구분없이 동일하게 할 예정입니다.

 

 

호가창에서 뵙겠습니다.

 

 

Posted by 투자의神
시스템 성과 합산2017. 12. 6. 18:30

 

 

 

 

 

새벽에 눈이 떠지는 바람에 사무실에 출근해서 일 좀 보고 아침 일찍 낚시를 다녀왔습니다.

 

 

어차피 잃을 사람은 어떻게 해도 잃고 벌 사람은 어떻게든 벌게 되어 있는 것이므로 언제부터 신경 썼다고 시스템에 신경 쓸 생각도 없고 편안히 잘 다녀왔습니다.

 

 

얼마전 인천 영흥도 낚싯배 사고로 걱정하는 분들이 많으셨는데 필자의 경우 선상 낚시(배 위에서 낚시)는 즐기지 않는 편이라 다행이라면 다행이지요.

 

 

여러분의 염려덕에 잘 다녀왔습니다.

 

 

금일의 수익으로써 대략 한달여전의 복수전을 겨우 한 듯 보입니다.

 

 

새벽에 사무실에서 잠시 HTS를 켜보고는 "아 이거 갭상승 나오면 시스템 역방향 걸리겠는데?" 싶은 생각이 들었습니다만 다행히 그동안 잠잠하던 V2 7-72와 10-72가 침묵을 깨고 거래를 했고 어제까지 거래를 했던 13-64는 침묵을 지켰는데요.

 

 

7-72와 10-72가 하방으로 정방향 거래를 했고 13-64는 역방향에 걸렸지만 일전에도 말씀 드린적이 있는 여러 조건값에 의해서 거래 없이 관망만 했네요.

 

 

사실 예상 했던 흐름은 금일 갭상승 흐름이 나오면 바로 위에 저항대가 강하게 형성되어 있기 때문에 7-72와 10-72에서 역방향으로 큰 손실이 발생하고 13-64에서 일부 만회하는 것이었는데 예상이 보기좋게 빗나갔습니다.

 

 

그래도 수익을 내주니 기특하네요.

 

 

오늘 적당히 수익 냈으면 괜찮았을텐데 종가가 저가 부근이라 이 흐름을 이어 받아 내일 갭하락 출발후 상승 전환이나 갭 상승후 하락 흐름이 나오면 한번 당할것 같습니다.

 

 

물론 이 예상이 또 다시 빗나가기를 바라지만 말입니다.

 

 

오늘은 낚시로 바빴고 내일과 모레는 선약이 있으니 이번 주말경에는 일전에 예고했던대로 다른 시스템의 성과도 정리하여 올려볼까 생각중이니 많은 격려와 응원 바랍니다.

 

 

 

Posted by 투자의神
시스템 03호2017. 12. 6. 18:00

 

 

 

 

 

Posted by 투자의神
시스템 02호2017. 12. 6. 17:30

 

 

 

 

 

 

Posted by 투자의神
시스템 01호2017. 12. 6. 17:00

 

 

 

 

 

Posted by 투자의神
증권사 API2017. 12. 6. 00:30

 

 

이베스트 투자증권에서 제공하는 "주식현재가및호가_실습교육용_연결체크" 입니다.

 

 

xingAPI Guide #1부터의 내용을 따라오면서 직접 실습 해보기 위해서는

 

1. 이베스트 투자증권 회원가입

 

2. 모의투자 신청 또는 비대면 계좌 개설

 

3. xingAPI 사용등록

 

위 3개는 기본적으로 해두셔야 하며

 

 

이외에 부가적으로 독자분들의 컴퓨터에 Microsoft Excel 이 설치되어 있어야 하며 Excel에서 Visual Basic 옵션이 활성화 되어 있어야 하는데 이 부분은 일전에 포스팅 했던 내용으로 대체할테니 아래의 링크를 확인 해주세요.

( http://systemtraders.tistory.com/183?category=723909 )

 

 

샘플을 별도로 살펴보지는 않겠고 첨부 파일로 등록 해둘테니 필요한분은 다운로드 받아서 천천히 살펴보기 바랍니다.

 

 

이해가 잘 안되는 부분에 대해서는 VBA 코드를 포함한 질문 내용을 Comment로 남겨주세요.

 

 

주식현재가및호가_실습교육용_연결체크.xlsm

 

 

 

Posted by 투자의神
시스템 성과 합산2017. 12. 5. 18:30

 

 

 

 

모처럼 원웨이에 가까운 흐름이 나타났지만 장중에 HTS를 볼 시간도 없고 볼 필요도 없기에 모르고 있다가 점심경에 만난 손님중 한분이 시장 얘기를 하셔서 아이고 블로그에 공개한 3개 시스템 도합 한 1500~2000만원쯤 손실이 발생하겠구나 싶은 생각이 들었는데 조금전 사무실에 돌아와서 보니 오히려 가장 걱정이 컸던 2개 시스템은 거래가 없었고 아쉽게 2~3틱(호가) 차이로 역방향 진입 했겠구나 싶었던 시스템인 13-64 혼자 거래를 했고 수익을 내두었네요.

 

 

오랜만의 수익다운 수익을 거둔것 같은데 약 한달전 만기일에 입은 내상을 회복하기에는 역부족인것 같습니다.

 

 

7-72와 10-72는 거의 한달 가까이 거래를 쉬고 있고 12월물 옵션 만기일까지는 불과 일주일 남짓 남은 상황이니 곧 거래를 하리라 생각합니다.

 

 

비트코인, 이더리움 등의 가상화폐에 대한 관심도와 열기가 나날이 높아지는 것 같아 관련하여 글을 적어보려고 "가상화폐" 카테고리를 만들어 두었으니 가상화폐에 관심있는분은 한번 들러 보세요.

 

 

날씨가 많이 춥고 연말이 다가오고 있습니다.

 

 

남은 거래일동안 수익 가득하시길 바랍니다.

 

 

 

Posted by 투자의神
시스템 03호2017. 12. 5. 18:00

 

 

 

 

 

Posted by 투자의神
시스템 02호2017. 12. 5. 17:30

 

 

 

 

 

Posted by 투자의神