336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

완벽한 전략은 없다.

상황에 따라 손절도 할수있고, 잠시 멈출필요도 있다.

이런것들은 모두 시뮬레이션을 통해서 적절한 설정이 필요하다.

 

 

처음에 공격적인 설정을 했다가.. 시뮬레이션을 통해서 지금은 보수적인 설정으로 운용중..

 

 

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. CCXT
CCXT는 다양한 API를 지원해서 많이 사용된다.
분봉데이터를 가져오거나 주문를 위한 API가 잘 만들어져 있다.
그러나, 주문후 체결되지 않은 정보(open position), 체결후 정보(closed position)에 대한 실시간 처리가 미흡하다.
주문후 지속적으로 확인하기 위한 요청을 하다 보면 Block 당한다.

2. 웹소켓
웹소켓의 API는 Low level로 단순하다.
connection을 연결하면, 1초이내에 정보가 계속 업데이트 된다.
정보에는 position정보와 현재 코인의 가격정보 등등이 있다.
connection은 코인별로 만들어야 한다.

3. delta server
ccxt/웹소켓을 장기간 사용하다 보면.. 문제가 발생할때가 있는데 reset을 시키는데 어려움이 있다면, 이것을 추천한다.

4. TA-LIB
TA-LIB는 스토캐스틱, 볼린저밴드같은 기술적 분석을 위해서 필요한 API를 제공한다.

5. 텔레그램 API
운용중인 상태를 메시지로 받고 싶을때 사용한다.
운용 정보를 요청/응답 받을 수 있다.

6. influxDB, Grafana
운용 상태를 모니터링하기 위해서 필요하다.

모니터링 대상 예시

1. 현재가

2. 잔고

3. 매매수량/수익률

4. 콜/풋 신호

 

 

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

ccxt와 websocket api를 사용중에 문제가 생겼다.

 

ccxt와 websocket api 

https://stocknotes.tistory.com/51?category=762346

 

[비트맥스] 2. CCXT와 웹소켓, 그리고 TA-LIB

자동매매 프로그램을 만들기 위해서 기본적으로 알아야하는 라이브러리가 있다. 1. CCXT CCXT는 다양한 API를 지원해서 많이 사용된다. 분봉데이터를 가져오거나 주문를 위한 API가 잘 만들어져 있다. 그러나, 주..

stocknotes.tistory.com

websocket api로 주문 및 포지션 정보를 얻을수있는데,

제대로 데이터가 안들어오고 먹통이 되는 상황이 발생한다. 특히, 비트코인(BTCUSD)은 너무 자주 발생한다..

강제로 bitmex_websocket을 reset도 시도해 봤지만, 효과를 보지 못했고.. 

이런저런 고민끝에 Delta Server를 사용하게 되었다.

 

https://github.com/BitMEX/api-connectors/tree/master/official-ws/delta-server

 

BitMEX/api-connectors

Libraries for connecting to the BitMEX API. Contribute to BitMEX/api-connectors development by creating an account on GitHub.

github.com

nodejs에서 실시간데이터를 가져오는 서버를 구동시키고, 거기서 데이터를 가져온다.

이 서버를 사용해도 주문/포지션 정보가 먹통이 되는데, 이때 마다 서버를 종료시키고 다시 실행시키면 유지가 가능하다.

 

 

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. 코인: 비트코인, 이더리움

2. 메인 프로그램

  a. 코인의 기술적 분석을 통해서 매매/매도 여부를 결정한다.

  b. 조건 만족시, 

     -. 이전 주문(중복주문)이 있는지 확인후, 동일 주문이 있었으면 주문을 하지 않는다.

     -. 현재 잔고를 조회하고, 주문 수량을 결정한다.

     -. 주문을 하고, 주문정보를 저장한다.

3. 웹소켓 스레드

  a.  프로그램 시작시, 각 코인별로 웹소켓 인스턴스를 생성한다.

  b. 현재가격과 포지션 정보를 꾸준히 업데이트한다.

      -. 체결되어 position이 있는 경우, 수익률을 계산하여 손절/익절을 결정한다.

  c. 주문이 들어오면, (open position)

      -. 포지션 정보를 확인해서 업데이트 한다.

  d. 주문이 체결되면, (closed position)

      -. 포지션 정보를 확인해서 업데이트 한다.

      -. 실시간으로 업데이트 되는 가격정보를 통해서 수익률을 모니터링 한다.

   

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

** 웹소켓 포지션 정보

 

ws.open_position()

{
'account': 210000,
'symbol': 'XRPM19',
'currency': 'XBt',
'underlying': 'XRP',
'quoteCurrency': 'XBT',
'commission': 0.0025,
'initMarginReq': 0.05,
'maintMarginReq': 0.025,
'riskLimit': 5000000000,
'leverage': 20,
'crossMargin': True,
'deleveragePercentile': 1,
'rebalancedPnl': -12,
'prevRealisedPnl': 0,
'prevUnrealisedPnl': 0,
'prevClosePrice': 4.758e-05,
'openingTimestamp': '2019-06-19T08:00:00.000Z',
'openingQty': 1,
'openingCost': 5027,
'openingComm': 0,
'openOrderBuyQty': 0,
'openOrderBuyCost': 0,
'openOrderBuyPremium': 0,
'openOrderSellQty': 0,
'openOrderSellCost': 0,
'openOrderSellPremium': 0,
'execBuyQty': 0,
'execBuyCost': 0,
'execSellQty': 0,
'execSellCost': 0,
'execQty': 0,
'execCost': 0,
'execComm': 0,
'currentTimestamp': '2019-06-19T08:09:00.091Z',
'currentQty': 1,
'currentCost': 5027,
'currentComm': 0,
'realisedCost': 0,
'unrealisedCost': 5027,
'grossOpenCost': 0,
'grossOpenPremium': 0,
'grossExecCost': 0,
'isOpen': True,
'markPrice': 4.758e-05,
'markValue': 4758,
'riskValue': 4758,
'homeNotional': 1,
'foreignNotional': -4.758e-05,
'posState': '',
'posCost': 5027,
'posCost2': 5027,
'posCross': 269,
'posInit': 252,
'posComm': 14,
'posLoss': 0,
'posMargin': 535,
'posMaint': 140,
'posAllowance': 0,
'taxableMargin': 0,
'initMargin': 0,
'maintMargin': 266,
'sessionMargin': 0,
'targetExcessMargin': 0,
'varMargin': 0,
'realisedGrossPnl': 0,
'realisedTax': 0,
'realisedPnl': 0,
'unrealisedGrossPnl': -269,
'longBankrupt': 0,
'shortBankrupt': 0,
'taxBase': 0,
'indicativeTaxRate': 0,
'indicativeTax': 0,
'unrealisedTax': 0,
'unrealisedPnl': -269,
'unrealisedPnlPcnt': -0.0535,
'unrealisedRoePcnt': -1.0702,
'simpleQty': None,
'simpleCost': None,
'simpleValue': None,
'simplePnl': None,
'simplePnlPcnt': None,
'avgCostPrice': 5.027e-05,
'avgEntryPrice': 5.027e-05,
'breakEvenPrice': 5.039e-05,
'marginCallPrice': 0,
'liquidationPrice': 0,
'bankruptPrice': 0,
'timestamp': '2019-06-19T08:09:00.091Z',
'lastPrice': 4.758e-05,
'lastValue': 4758
}

 

 

** 웹소켓 주문 정보

 

ws.open_orders()

 

{
'orderID': '5bbcf9da-8ced-d630-7bb7-4ce3ae39b815',
'clOrdID': '',
'clOrdLinkID': '',
'account': 210000,
'symbol': 'TRXM19',
'side': 'Buy',
'simpleOrderQty': None,
'orderQty': 1,
'price': 3e-06,
'displayQty': None,
'stopPx': None,
'pegOffsetValue': None,
'pegPriceType': '',
'currency': 'XBT',
'settlCurrency': 'XBt',
'ordType': 'Limit',
'timeInForce': 'GoodTillCancel',
'execInst': '',
'contingencyType': '',
'exDestination': 'XBME',
'ordStatus': 'New',
'triggered': '',
'workingIndicator': True,
'ordRejReason': '',
'simpleLeavesQty': None,
'leavesQty': 1,
'simpleCumQty': None,
'cumQty': 0,
'avgPx': None,
'multiLegReportingType': 'SingleSecurity',
'text': 'Submission from testnet.bitmex.com',
'transactTime': '2019-06-11T10:04:02.915Z',
'timestamp': '2019-06-11T10:04:02.915Z'
}

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

자동매매 프로그램을 만들기 위해서 기본적으로 알아야하는 라이브러리가 있다.

 

1. CCXT

CCXT는 다양한 API를 지원해서 많이 사용된다.

분봉데이터를 가져오거나 주문를 위한 API가 잘 만들어져 있다.

그러나, 주문후 체결되지 않은 정보(open position), 체결후 정보(closed position)에 대한 실시간 처리가 미흡하다.

주문후 지속적으로 확인하기 위한 요청을 하다 보면 Block 당한다.

 

2. 웹소켓

웹소켓의 API는 Low level로 단순하다.

connection을 연결하면, 1초이내에 정보가 계속 업데이트 된다.

정보에는 position정보와 현재 코인의 가격정보 등등이 있다.

connection은 코인별로 만들어야 한다.

 

3. TA-LIB

TA-LIB는 스토캐스틱, 볼린저밴드같은 기술적 분석을 위해서 필요한 API를 제공한다.

 

 

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

서론



1년전에 6개월간 빗썸계좌로 자동매매를 했었다.


코인가격이 주구장창 떨어지기만 하다보니... 매수 포지션만으로는 어떤전략을 갖다 붙여도 통하지 않았다.


코인가격 하락에 비하면 그나마 손실이 크지 않다는 위안(?)뿐.


위안은 소용없고 결국 중단..



이제..


비트맥스의 롱,숏을 이용한 매매로 다시 시작한다.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

한가지 전략으로 비트코인만 매매하던 프로그램을 벗어나, 이제는 여러 코인을 다양한 방법으로 매매하는 프로그램으로 바꿨다.


새로운 전략도 효과가 좋은것같다.






새로운 전략을 시뮬레이션 해보니, 


일부 코인은 시간이 지남에 따라 점차 수익이 늘어나는것으로 보아 당분간 이것을 사용해 보기로 했다.




336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1.0이라고 할만한것도 아닌게 나온지 얼마 되지 않았는데, 전량 리뉴얼을 하게 되었다.





다른 매매프로그램UI/UX 급조해서 만든거라 아주 엉망이다.


==================================


코인ATM 2.0


1. 요구사항

  1) UI/UX

    - 다양한 코인 조회

    - 코인별로 잔고 확인

    - 전체 자산을 확인

    - 현재 매수/매도 호가 조회

    - 코인별 개별 시뮬레이션 결과

    - 시간대별 모든 코인 시뮬레이션 결과

  2) 기능

    - 코인별 자산배분(설정파일)

    - 코인별 스케줄링

  3) 구조

    - FAT(Feed - Analyze - Trade) 실시간, 시뮬레이션 모두 동일한 결과

  

  




+ Recent posts