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 크기의 광고 코드만 넣을 수 있습니다.

주식은 도박이다

 

오르거나 떨어지거나.. 둘중에 하나에 배팅을 하는것이다.

확률은 50%인데, 승률이 사람마다 다르다. 

 

기업이 성장하는 한, 주식투자가 제로섬 게임은 아니겠지만, 

소수만이 이익을 많이 얻고, 다수가 재미를 못보는건 사실이다.

 

기업이 성장하는 만큼만 수익이 난다면, 주식투자를 하려고 하는 사람은 없을 것이다.

더 싸게사서 더 비싸게 팔아야하는데, 이 과정에서는 분명 손실을 보는 사람이 생길수 밖에 없다.

 

3년전부터 자동매매 프로그램을 개발해서 시뮬레이션과 모의투자를 하고 있다.

혹자는 프로그램 매매가 주가 혹은 미래를 예측하는 거라고 할수도 있겠지만, 나는 무작정 달려드는 투자자의 돈을 취하는 것이 맞는 표현이라고 본다.

 

내가 지금 잃는 도박을 하고 있는것인지 다시 생각해보자.

 

"확실하지 않은 것에 승부를 걸지 말라." -평경장-

"If you can't spot the sucker in the first half hour at the table, then you ARE the sucker." - Mike McDermott -

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

서론



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


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


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


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



이제..


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



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
구분KOSPI200 옵션
기초자산코스피200지수
거래단위코스피200옵션가격 X 25만(거래승수)
결제월매월
상장결제월비분기월 4개 및 분기월 7개(3,9월 각 1개, 6월 2개, 12월 3개)
행사가격의 설정* 각 결제월의 최초 상장시 행사가격 설정방법
  최근 6개월 : 2.5포인트 간격으로 ATM 1개, ITM 16개, OTM 16개
  제 7 및 8근월물 : 5포인트 간격으로 ATM 1개, ITM 12개, OTM 12개
  최종결제월이 가장 나중에 도래하는 3개 월물 : 10포인트 간격으로 ATM 1개, ITM 6개, OTM 6개

* 지수 변동에 따라 항상 ATM 기준으로 아래 행사가격 수가 유지되도록 추가 설정 
  최근 6개월 : 33개
  제 7 및 8근월물 : 25개
  최종결제월이 가장 나중에 도래하는 3개 월물 : 13개

* 최종거래일 도래로 신규결제월 상장 시 결제월 순서에 따라 상기와 같이 행사가격 추가 설정
가격의 표시프리미엄(포인트)
호가가격단위프리미엄 10 포인트 미만 : 0.01포인트
프리미엄 10 포인트 이상 : 0.05포인트
최소가격변동금액프리미엄 10 포인트 미만 : 2,500원(25만X0.01 포인트)
프리미엄 10 포인트 이상 : 12,500원(25만X0.05 포인트)
거래시간09:00 ~ 15:45 (최종거래일 09:00 ~ 15:20)
최종거래일각 결제월의 두 번째 목요일(공휴일인 경우 순차적으로 앞당김)
최종결제일최종거래일의 다음 거래일
권리행사최종거래일에만 가능(European 형)
결제방법현금결제
가격제한폭기초자산 기준가격 대비 아래에 해당하는 옵션이론가격을 단계적으로 확대적용
① ±8% ② ±15% ③ ±20%
거래증거금 기준가격최종 약정가격(최종 약정가격이 없는 경우, 옵션이론가격)
기준가격전일의 거래증거금 기준가격
단일가격경쟁거래개장시(08:00 ~ 09:00) 및 거래종료시(15:35 ~ 15:45)
필요적 거래중단현물가격 급변으로 매매거래 중단 시 선물거래 일시중단 및 단일가로 재개


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
코스피200 주가지수 선물(KOSPI200 Index Futures)은 대한민국의 코스피200 주가지수를 대상으로 하는 선물거래이다. 대한민국의 최초이자 최대의 선물시장이다. 금융시장 발전을 위해 1980년대 말에 도입이 논의되었다. 1995년부터 한국증권거래소에서 모의시장을 운영하다가 1996년 5월 3일 정식 개장했다. 2003년 부산광역시에 위치한 한국선물거래소로 거래 시스템과 청산소가 이관되었고 2009년부터는 한국거래소 파생상품시장과 시카고 상업거래소 글로벡스에서 거래되고 있다. 2009년 이후 선물가격을 지수화한 코스피200 선물지수(F-KOSPI200)와 코스피200 레버리지/인버스 지수가 발표되고 있다.


  1. 기초자산: 코스피200 지수
  2. 거래단위: 코스피200 지수 × 250,000 
  3. 호가단위: 0.05 (틱가치: 12,500 원)
  4. 주문종류: 지정가, 시장가, 조건부지정가, 최유리지정가 
    야간시장과 정규장 최근월물 만기 4일 전까지는 지정가 주문만 허용
  5. 주문조건: IOC, FOK
  6. 거래소: 08:00~15:45 한국거래소 Exture, 18:00~05:00 시카고 상업거래소 Globex
  7. 거래시간: 한국거래소가 지정한 휴장일 제외 KST 월요일~금요일
    정규장:개장시 동시호가 08:00~08:59
    개별경쟁매매 09:00~15:34
    거래종료 동시호가 15:35~15:45
    야간장: 개별경쟁매매 18:00~05:00
    만기가 도래한 종목은 정규장 15:20 종료 
    호가 급변시 사이드카 또는 서킷 브레이커 발동
  8. 가격제한폭: 정규장 전일 정산가 대비 ±10%
  9. 증거금: 
    기본예탁금: 3,000만원/1,500만원/500만원/면제 4단계 차등적용
    개시증거금: 13.5% 유지증거금: 9%
    증거금은 현금 및 대용증권으로 납부할 수 있지만 최소유지증거금의 1/3은 반드시 현금 또는 현금에 상당하는 외화로 납부하여야 한다.
  10. 결제방식: 현금결제, 매일정산
  11. 월물 및 최종거래: 3,6,9,12월의 2번째 목요일 14:50 (휴장일일 경우 앞당김)
    각 월물 거래 종료 익일 차년도 해당월물 상장
  12. 종목코드: 코스피200 F
  13. 표준코드: KR4101
  14. 월물코드: 3,6,9,C(12월물) 표준코드는 각각 1,2,3,4
  15. 미결제약정 제한: 5,000 계약, 호가당 1,000 계약
    양건(헷지 포지션) 보유 불가
  16. 거래 수수료: 금융투자회사 자율이나 최소 한국거래소 수수료 계약당 매매체결대금의 0.000142% 포함


출처


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


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

엑셀로 3년치 데이터 검증..






모의투자로 시뮬레이션만 1년..



이제 실계좌로 전환..

UI/UX는 아주 허접하지만, 나름 잘 돈다.




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

설치


https://www.autohotkey.com/download/



자동로그인 처리 코드


F3::

Gui, Add, Text, x30 y5 w150 h20, 인증서자동선택

Gui, Add, Text, x30 y50 w150 h20 vB, 준비중...

Gui, Add, Button, x20 y80 w150 h20, 시작

Gui, Add, Button, x20 y110 w150 h20, 종료

Gui, Show


running:=false


return


Button시작:


running:=true


Loop

{

ImageSearch, vx, vy, 0,0, A_ScreenWidth, A_ScreenHeight, *50 login_click.png

IF ErrorLevel = 0

{

Gui, Submit, nohide

GuiControl, , B, 찾음.중지

vx:=vx+20

vy:=vy+5

MouseClick, left, %vx%, %vy%

send, {ENTER}

break

}

IF ErrorLevel = 1

{

Gui, Submit, nohide

GuiControl, , B, 동작중.못찾음

}

IF ErrorLevel = 2

{

Gui, Submit, nohide

GuiControl, , B, 동작중.파일없음

}

Sleep, 5000

if (running=false)

{

break

}

}

Return


Button종료:

{

running:=false

}

return


+ Recent posts