현재 upbit에서 일부 암호화폐에 대하여 grid trading 중인데요.

매매 대상을 넓히는 것이 수익률에 좋을 것 같아서 ebest api로 주식도 함께 거래하도록 개발을 하였습니다.

이전에 만든 소스가 있어서 참고를 하려고 했는데, 너무 옛날에 만들 소스라서 그동안 개선한 사항들 update가 되어 있지 않아서 upbit에서 돌리는 소스를 기반으로 ebest에서도 동작할 수 있도록 수정하였습니다.

 

upbit api와 ebest api는 사용방법이 틀리기 때문에 upbit api 기반으로 ebest api를 변경한 wrapper를 하나 만들었습니다.

 

구조적으로 보면 아래 형태를 띕니다.

 

 

 

이건 class 개념을 알아야 사용할 수 있는데요. 일단 class를 안다고 가정합니다.

 

Exchange라고 하는 base class를 선언하고 Exchange를 부모 class로 갖는 Ebest, Upbit을 선언합니다. 그리고 관련 함수를 추가합니다.

 

이렇게 한 후 EBest를 사용하는 경우에는 EBEST라는 변수를 1로 설정하고 돌리면 전략 관련 코드는 수정할 필요없이 ebest용 api가 동작합니다. 전략 코드 내부에서는 exchange라고 하는 base class에 있는 함수만 사용하기 때문에 거래소가 어디인지 구분할 필요가 없습니다.

EBEST = 1
class Exchange:
   :
   :

class EBest(Exchange):
   :
   :

class Upbit(Exchange):
   :
   :

exchange = None
if EBEST :
   ebest = EBest()
   exchange = ebest
else :
   upbit = Upbit()
   exchange = upbit

do_trading(exchange)
 

 

특정 거래소만 사용하는 경우에는 이런 개념을 적용할 필요는 없습니다. 하지만 암호화폐 거래소도 거래량도 많고 변동성도 좋기 때문에 좋은 전략이 있다면 암호화폐 거래소에도 적용하지 않을 이유가 없습니다.

 

전략 자체가 워낙 간단하기 때문에 특별하게 언급할 필요는 없습니다만, 거래 여부를 확인하는 방법에 대하여 간단하게 기술합니다.

 

ebest api의 경우에는 거래가 발생하면 callback이 날아옵니다. 따라서 거래 여부를 실시간으로 확인이 가능합니다. 하지만 제가 사용한 원 소스가 upbit 기반이다 보니 거래 callback을 사용하지 않고 주기적으로 미체결 주문을 확인하여 거래 여부를 판단합니다.

 

코드 내부적을 관리해야할 정보입니다.

- 이전 주문 기록

- 거래가 발생한 경우 다음 주문 가격 결정

- 더 이상 매수 주문이 나가지 않는 가격 설정 (하락시 최소 매수가)

- 매도 후 다음 매수 주문을 낼 때 더 이상 매수 주문이 나가지 않는 가격 설정(상승시 최대 매수가)

 

이를 바탕으로 로직의 개략적인 흐름입니다.

 

초기화과정
while(1) :
  미체결 주문을 받는다.
  if 이전 주문과 차이가 있는가? :
       매수인지 매도인지 구분하여 다음 주문을 낸다.
 

흐름은 간단하지만 중간 중간 점검해야할 사항이 조금 많습니다. 흐름도에서는 단순히 "주문을 낸다" 이지만 주문시 이런 저런 조건이 있기 때문에 모두 check하고 주문을 내야할 상황인 경우에만 주문을 내야합니다. 이런 부분이 코드의 완성도를 좌우하며 조건에 따라 난이도가 틀립니다.

 

 

주말에 관련 개발을 하면서 발생했던 문제점들을 정리합니다. 향후 이와 유사한 전략을 개발하실 때 반드시 고려하시기 바랍니다.

 

1. 어떤 이유이건 매수 혹은 매도 주문이 실패할 수 있습니다. 이런 경우에 중복으로 주문이 나갈 수 있으므로, 이에 대한 대처 필요. 즉 주문을 하기 전에 동일한 주문이 있는지 반드시 확인

2. 가격에 따라 1 tick이 틀리다. 특히 1 tick이 변하는 구간에서는 주의해야한다. 예를들어 100,000원 이하는 100원 그 이상은 500원 단위

3. 장 종료시 일부만 거래가 된 경우에 다음날 거래시 반영(이 부분은 코드 난이도가 높기 때문에 수동으로 처리)

 

오늘 장이 급락하였을 때 일부 종목 매수하여 자동매매 시작하였습니다. 오늘 매도된 종목은 없고, 내일부터는 매수/매도가 반복될 듯 합니다.

 

grid trading은 박스권 중간 위치에서 매수를 시작하는 것이 좋습니다. 혹은 바닥에서 수량을 mutiple로 매수하고 시작하여도 되고요.

 

마지막으로 희망(?) 수익률도 정리해봅니다.

 

3.25% 구간으로 grid를 만든다고 가정합니다. 0.25%는 거래세. 따라서 실제 수익은 3% 정도이며, 한번 매매될 때 마다 9,900원 수익입니다. 2-3번 매매되면 치킨 한마리군요.

매매가 많이 될 수록 수익이 쌓이는 구조입니다. 이틀에 한번씩만 거래가 되어도 연 10%

 

물론 그리드 하방을 돌파하여 손실이 난 종목도 있겠죠?

보수적으로(?) 반은 손실이라고 가정하고 평균 20% 손실이면 -1백만원.. 이틀에 한번만 거래가 되면 even은 되겠군요.

 

결국 하방이 어느정도 막혀있는 박스권 종목을 잘 찾는 다면 좋은 전략이 될 듯 합니다.

아마도 지주사들, 금융사들, 고배당주들 정도?

 

 

반응형

설정

트랙백

댓글

암호화폐 시장이 다운되고 있지만 그래도 급등하는 종목이 있죠..

이런 걸 찾아서 진입만 할 수 있다면.. ㅎ

최근 상폐 유의 발표나면서 급등한 LTC.. 상폐인데 왜 급등을 하는지..

이런 종목 초반에 들어갔다가 내리기 전에 나오면 좋겠죠?

당시 거래한 tick 정보를 기반으로 분석 들어갑니다.

평상시 거래 패턴입니다. 심심하죠.

그러다가.. 누군가는 상폐 소식을 알겠죠?

라고 생각했는데 상폐 공시가 나왔군요. 정확하게 상폐 공시 이후 부터 움직입니다. 정보보안이 잘 되고 있는 듯 합니다.

거래량이 증가합니다.

 

 

급등전에는 항상 거래가 증가합니다. 특히 매수량이 증가합니다. 그 와중에 누군가는 본전에 파는 분들이 나오죠. 454개나 팔았군요. 그래도 가격은 유지됩니다. 그만큼 대기 매수가 많다는 말입니다.

패턴을 보면 초반 상승, 눌림목(대량 매도), 다시 상승, 눌림목(대량매도), 다시 상승.

이런 형태를 반복합니다.

우선 진입을 해야하니.. 거래량(특히 매수)이 이상 징후를 보이면 일단 진입.
상승 후 눌림목이 나온 후 (대량 매도 등등) 최근 고가를 돌파하면 추격 매수.
추격매수는 1 - 2번 정도만..

다음 부터는 매도를 언제할지만 집중.

지속 매도 주문이 들어오면서 빠지는 구간이 나옵니다.

여기서 매도..!!!

환상적인 시나리오인데.. 이대로 잘 동작할지는 다음 급등주 나올 때 확인해봐야겠네요.

반응형

설정

트랙백

댓글

파이썬을 이용하여 app 개발할 때 유용한 package입니다.

 

1. pprint

dict, list 등 자료 구조에 있는 데이터를 구조에 맞쳐 출력을 해 줍니다.

<설치>

pip install pprint

 

<사용법>

from pprint import pprint 

pprint(변수명)

 

<예제>

from pprint import pprint 
cur_price = {
    'market':	"KRW-BTC",
    'trade_date':	"20220530",
    'trade_time':	"083351",
    'trade_date_kst':	"20220530",
    'trade_time_kst':	"173351",
    'trade_timestamp':	1653899631000,
    'opening_price':	37415000,
    'high_price':	38666000,
    'low_price':	37230000,
    'trade_price':	38475000,
    'prev_closing_price':	37380000,
    'change':	"RISE"
}
print(cur_price)
print('')
pprint(cur_price)

<실행결과>

 

2. log

프로그램 개발 중 저장할 내용을 기록할 수 있습니다.

 

<설치>

pip install logging

 

<사용법>

import time

import logging

 

# log 용 파일 정의하고 설정

log_name = '.\\test.log'
logging.basicConfig(filename=log_name, level=logging.INFO)

 

# 로깅이 필요한 곳에서 아래 함수 호출

logging.info(문자열)

 

<예제>

저장할 필요가 있는 곳에서 아래 함수를 부른다. 단 인자는 string 형태로 변경해 주어야 한다. 항목 마다 ,를 넣어서 향후 excel에서 csv 형태로 읽을 수 있도록 한다.

 

위 upbit거래소의 BTC 현재가 중 현재시간과 BTC 그리고  현재가를 저장하는 예제

 

cur = time.strftime("%Y%m%d") # 현재 시간
ss = cur + ',' + cur_price['market'] + ',' + str(cur_price['trade_price']) # 현재시간,krw-btc,현재가
logging.info(ss) # 저장

<결과>

파일에 저장된 결과입니다.

3. colored text

GUI를 이용하여 개발하기에는 시간이 많이 소요되므로 일반적으로 text용 terminal을 이용합니다. 이때 중요한 문자열에 서로 다른 색으로 표출할 수 있다면 가독성이 올라갑니다. 

 

<설치>

pip install termcolor

 

<사용법>

from termcolor import colored

 

colored() 함수를 이용하여 원하는 색이 입혀진 text를 받은 후 출력

 

<예제>

from termcolor import colored

data = 'SELL'
s = colored(data, 'red')
print('this is red', s)

data = 'BUY'
s = colored(data, 'cyan')
print('this is blue', s)

<실행결과>

반응형

설정

트랙백

댓글

파이썬 프로그램으로 프로그램을 개발하는 경우에는 cmd 창에 관련 메세지를 출력하는 경우가 많습니다.

이때 출력되는 text에 컬러를 입힐 수 있다면 가독성이 올라갈 수 있습니다.

 

관련 글들을 찾아보니 간단하게 아스키 문자열을 추가하면 원하는 color로 변경할 수 있습니다. 

 

우선 기본 컬러를 정의한 후

BRIGHT_BLACK = '\033[90m'
BRIGHT_RED = '\033[91m'
BRIGHT_GREEN = '\033[92m'
BRIGHT_YELLOW = '\033[93m'
BRIGHT_BLUE = '\033[94m'
BRIGHT_MAGENTA = '\033[95m'
BRIGHT_CYAN = '\033[96m'
BRIGHT_WHITE = '\033[97m'
BRIGHT_END = '\033[0m'

 

print 문에 아래와 같이 함께 출력하면 됩니다.

  print(BRIGHT_RED + 'TEST' + BRIGHT_END)

결과는 아래와 같습니다. 

 

출력 문자열 중 컬러를 변경하고 싶은 경우에는 앞에 색깔, 뒤에 END를 추가하면 됩니다.

조금 귀찮긴 하지만 간단하게 컬러 문자를 출력할 수 있군요.

함수로 만들어 쓰면 좋을 듯 합니다.

 

아래 글 참고했습니다.

https://happylie.tistory.com/119

반응형

설정

트랙백

댓글

일전에 시뮬레이션 결과를 차트로 그리는 방법에 대한 글을 썼었는데요.

https://money-expert.tistory.com/36?category=781442

 

[시스템트레이딩] 전략 시뮬레이션(4) - 차트에 문자열 출력하기

LW 전략을 돌려본 후 mdd, 수익률 등등을 보면서 성과가 얼마나 나왔는지 확인이 가능합니다. 그런데 전략을 개선하기 위해서는 언제 수익이 났고 언제 손실이 발생하였는지를 chart 그래프로 확인

money-expert.tistory.com

 

오랜만에 전략 시물레이션 결과를 보려고 이전 글을 보니, 많이 복잡합니다. 

그래서 간단하게 다시 정리하였습니다.

추가로 candle 차트 뿐 아니라 추세선을 그리는 것도 포함하였습니다.

 

본인이 만든 전략이 잘 동작하는지 파이썬으로 개발하면 좋겠지만, 개발 실력이 부족한 경우에는 excel로 simulation을 해야합니다. excel로 전략에 사용할 지표도 계산하고, 매수/매도 시점과 수량 등을 표기할 수 있습니다. 이렇게 정리한 excel 문서를 candle 차트로 그려볼 수 있다면 전략이 잘 동작하는 한눈에 볼 수 있습니다.

 

이번 글에서는 순수하게 excel을 이용하여 전략에 사용할 지표를 만들고, 매수/매도 시점을 표기해 놓기만 하면 차트와 추세선을 그려주는 파이썬 프로그램을 공개합니다.

 

제가 만든 예는 2022년 4월 미니선물 10분 봉을 기반으로 MA7, MA24를 계산한 후 cross가 발생한 경우에 매수/매도를 반복하는 전략입니다. 수익이 나는지 보다는 어떻게 활용하는지 관점에서 보시기 바랍니다.

 

excel 파일에서 반드시 포함되어야 하는 문구 및 내용은 아래와 같습니다.

1. datetime : 일자와 시간을 숫자로만 표기합니다. 일자와 시간을 구분하기 위하여 중간에 T를 사용합니다만, 공백도 가능하고, 없어도 됩니다. 다만 일자와 숫자에는 다른 문자가 있으면 안됩니다. 순수하게 숫자T숫자 이렇게 기록하시면 됩니다. 2020년 4월 1일 9시 10분은 이렇게 표기하시면 됩니다. 20220401T091000

2. 지표 : 본인이 그래프에 그리고 싶은 지표를 계산합니다. 예제에서는 ma7, ma24를 사용합니다.

지표의 경우에는 사용하고자 하는 컬럼의 이름을 python source 코드에서 변경해 주어야 합니다. 방법은 아래에 설명합니다.

3. action : 매수 혹은 매도할 자리입니다. buy/sell로 표기합니다.

4. qty : 매수 혹은 매도할 수량

5. balance : 잔고수량

6. close : 종가. 만약 다른 값을 사용하고 싶으면 파이썬 코드를 수정하시면 됩니다. 혹은 close라는 컬럼에 원하는 값을 넣으셔도 됩니다. 예를들어 low, high 중간값을 사용한다면 기존 close는 close_org로 변경하고, close라는 컬럼을 새로 만들어서 low, high 중간값을 계산하여 넣으면 됩니다.

 

아래 excel 예제에서와 같이 노란색으로 표기한 부분은 예제에 나오는 이름을 유지하셔야 합니다. 파란색으로 표기한 부분은 전략에 따라 이름이 변경될 수 있으므로 원하는 이름으로 바꾸시고, 파이썬 source 코드에도 변경해주어야 합니다.

 

지표를 파이썬 코드에서 변경하는 방법입니다.

현재 코드상에는 아래와 같이 표기되어 있습니다.

 

excel 파일에 있는 컬럼의 title 값이 적혀있습니다. excel에 있는 값과 파이썬 코드에 있는 값을 서로 일치시키면 됩니다. 예를들어 RSI를 사용한다고 하면 excel 파일에도 RSI, 파이썬 코드에서도 data.RSI라고 기술하면 됩니다.

 

동작 결과입니다.

excel 예제는 ma7, ma24를 구한 후 ma7이 ma24를 돌파하면 매수 그 반대면 매도를 하는 간단한 전략입니다.

 

전략에 맞게 action에 buy/sell을 기록하고 수량은 1개로 통일했습니다. 이렇게 만들어진 excel 파일을 github에 함께 올려놓았습니다. 여러분이 만드시는 전략에 맞게 지표 계산하시고, 매수/매도 시점 표기하고 잔고 표기하시면 됩니다.

 

위 엑셀 예제에서 보면 diff 값이 -에서 +로 변경되는 시점에 1개 매수한다라고 표기한 예입니다.

 

전 구간에 대하여 action을 기록한 후 github에 있는 프로그램을 돌려보면 아래와 같이 정확하게 cross하는 구간에서 매수/매도를 반복하고 있습니다. 그래프 상에서 S는 매도 S 위에 있는 숫자는 (매매수량,잔고) 입니다. B는 매수입니다.

그래프를 보니 뭔가 개선할 점이 마구 보이시죠? 그런 부분을 보완해서 전략을 발전시켜나가시면 됩니다.

 

----------------------

 

실행결과 수익이 나는지 궁금하시죠. 수익여부도 함께 알려줍니다.

 

실행시 나오는 결과입니다. 잔고가 0이 되는 시점에 누적 수익을 출력해주다가 마지막에 summary를 보여줍니다. 현재 이 전략은 -8.7 pt 손실이군요.

 

+가 나오는 전략이 나온다면 이를 바탕으로 파이썬 프로그램을 직접 개발하거나 개발자에게 의뢰하여 운용을 하시면 될 것 같습니다. 수익이 날 것 같은데 실제로 돌려보면 손실인 경우가 너무 많습니다. 

 

쉽지 않은 길이지만 언젠가는 그 길을 찾을 것이라는 희망을 품고,, 오늘도 전략을 생각해봅니다.

 

마지막으로 excel 파일에 대하여 주의할 사항이 있습니다. 전략은 excel 통합문서 형태로 만드셔야 합니다. 그래야 수식을 적용할 수 있습니다. 전략에서 사용할 추세선, action 등등을 모두 완성한 후  simulation으로 돌려볼 떄는 csv 파일로 저장한 후 사용하세요. 통합문서를 csv 파일로 변경하는 불편함이 있지만 현재 프로그램 상태는 csv 파일만 읽고 있습니다. 

 

소스코드와 예제 excel 통합문서 파일, csv 파일은 아래 github에 있습니다.

https://github.com/multizone-quant/drawing_chart

 

GitHub - multizone-quant/drawing_chart

Contribute to multizone-quant/drawing_chart development by creating an account on GitHub.

github.com

 

위 프로그램을 실행하기 위해서는 아래 두 패키지가 설치되어 있어야 합니다.

pip install plotly

pip install pandas

 

 

 

반응형

설정

트랙백

댓글

프로그램 동작시 환경 변수를 읽어와야하는 경우가 많습니다. 주로 프로그램 실행에 관련된 parameter들이나 이전 프로그램 종료 전에 기록한 값 등입니다.

 

환경변수를 읽어오는 다양한 방법이 있겠지만 가장 간단한 방법은 json 형태로 text 파일에 저장하고, 이를 읽어오는 방법입니다.

 

아래는 간단한 예제입니다. 

 

제가 사용하는 자동 매매 프로그램에서 필요한 변수들입니다. 사용할 minute 캔들, MA 값, MACD 계산시 어떤 값을 사용할지, 갭보정을 할지 말지 등등을 미리 아래와 같은 형태로 text 파일로 저장해둡니다.

{
   "min_candle": 1,
   "ma": 120,
   "macd_diff_cal": "close",
   "fixing_gap": 1

}

이렇게 만들어진 json 형태의 txt파일을 읽어오는 코드입니다.

def load_json_from_file(file_name) :
    try :
        with open(file_name,'r',encoding="cp949") as make_file: 
           data=json.load(make_file) 
        make_file.close()
    except  Exception as e : # 또는 except : 
        data = {}
        print(e, file_name)
    return data

 

사용방법은 간단합니다. 그냥 함수 콜을 하면 json 형태의 자료 구조를 돌려줍니다.

 

my_param = load_json_from_file('my_param.txt')

 

만약 프로그램  중 상태 값을 저장하는 경우라면 별도 txt 파일을 사용해서 프로그램 중간 중간 값을 저장하면 됩니다. 저장할 때는 아래와 같이 현재 사용 중인 변수를 그냥 저장하면 됩니다.

 

save_to_file_json('cur_status.txt', cur_status)

 

def save_to_file_json(file_name, data) :
    with open(file_name,'w',encoding="cp949") as make_file: 
       json.dump(data, make_file, ensure_ascii=False, indent="\t") 
    make_file.close()

 

아래 파일은 upbit에서 코인 자동 매매를 하면서 현재 주문 중인 상태를 프로그램 실행 중에 저장하는 json 파일 내용입니다.

 

{
	"values": {
		"latest_tr_price": 3.33,
		"latest_tr_side": "ask"
	},
	"uuids": {
		"7caf5f1c-9c62-49c5-9f4f-090dcd862e7e": {
			"status": 1,
			"side": "bid",
			"org_qty": 500,
			"done_qty": "0.0",
			"price": 3.28
		}
	}
}

 

upbit의 경우에는 매매가 되었다는 event가 발생하지 않아서 이렇게 이전 매매 내역을 가지고 있다가 현재 해당하는 uuid가 없으면 매매가 되었다고 판단합니다. 만약 동작 중 알 수 없는 이유로 종료되었다가 다시 기동하는 중간에 매매가 이루어질 수 있습니다. 이런 경우를 찾기 위하여 기동시 status  파일을 읽어서 해당 uuid가 거래 중 상태인지 확인합니다. 만약 해당 uuid가 없다면 매매가 된 것이므로, 이에 상응하는 대응을 합니다.

 

정리하자면  프로그램 초기에 기동될 때 필요한 parameter 값을 json 형태로 text 파일에 저장하였다가 읽을 수 있습니다. 프로그램 중간 중간 혹은 종료시 필요한 상태 정보를 json 형태도 저장하였다가 이후에 다시 기동될 때 읽을 수 있습니다.

 

해당 함수는 아래 github에서 다운받으실 수 있습니다.

https://github.com/multizone-quant/system-trading-crypto-multi/blob/main/my_util.py

반응형

설정

트랙백

댓글

개발을 진행하다보면 날짜 시간 정보가 필요한 경우가 많습니다. 관련 package도 많이 있는 것으로 아는데, 일단 time, datetime을 이용하여 필요한 정보를 얻는 방법을 알아보겠습니다.

 

1. 초 정보

import time

print(time.time())

1970년 1월 1일 0시 0분 0초 이후 경과한 시간을 초단위로 알려줍니다. 

 

2. 날짜/시간 정보

현지 시간 기준으로 현재 날짜와 시간 정보를 얻을 수 있습니다.

tm = time.localtime(time.time())

print(tm.tm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_wday, tm.tm_yday, tm.tm_isdst)

 

3. 원하는 시간 포맷으로 변환

time.strftime('%Y-%m-%d %H:%M:%S ', time.localtime(time.time()))

 -> '2022-01-14 15:59:46 '

이때 ""에 표기하는 문자에 따라 다양하게 표현할 수 있습니다. 

 

나머지는 향후 추가

 

반응형

설정

트랙백

댓글

시스템 트레이딩을 개발하다보면 거래소 API가 없으면 자동매매할 수가 없습니다.

 

하지만 사용자가 사용하는 패턴을 기록하였다가 자동으로 마우스/키보드 입력을 할 수 있다면 어떤 HTS에서도 자동 주문이 가능합니다. 

 

파이썬을 이용하여 자동으로 마우스/키보드 입력을 할 수 간단한 방법을 알아보겠습니다.

 

파이썬에서 이런 기능을 제공하는 패키지로는 pyautogui이 있습니다. 관련 문서는 아래 공식 사이트에서 확인이 가능합니다.

 

https://pyautogui.readthedocs.io/en/latest/

 

Welcome to PyAutoGUI’s documentation! — PyAutoGUI documentation

Welcome to PyAutoGUI’s documentation! PyAutoGUI lets your Python scripts control the mouse and keyboard to automate interactions with other applications. The API is designed to be simple. PyAutoGUI works on Windows, macOS, and Linux, and runs on Python 2

pyautogui.readthedocs.io

 

첫 번째로 pyautogui 패키지를 설치합니다.

 

pip install pyautogui

 

다음으로는 원하는 버튼과 입력창의 마우스 좌표 값을 읽어야합니다.

사용하고자 하는 HTS가 full screen이면 동작 프로그램을 볼 수 없으므로, 멀티 모니터를 사용하거나, HTS 화면 크기를 조금 줄여서 사용하기를 권합니다. 

 

아래 github주소에서 마우스 위치를 구하는 프로그램을 실행시켜서 원하는 좌표를 기록합니다.

 

https://github.com/multizone-quant/steemmonsters/blob/main/AutoGUI%20-%20GET%20-%20MOUSE%20-%20POSITION.py

이 상태에서 지정된 가격으로 자동으로 주문하는 방법을 알아보겠습니다.

 

구해야할 좌표는 아래와 같습니다.

 

1. 매수 가격 창의 좌표 : 현재가 이미 표시된 경우가 있으므로 숫자가 있는 곳의 좌표 확인

2. 수량 창의 좌표

3. 매수 버튼 좌표

4. 매수 확인 버튼 좌표

5. 매수 완료 버튼 좌표

 

다음으로는 아래 프로그램을 down받아서 방금 구한 좌표값과 매수가격/수량을 입력합니다.

 

https://github.com/multizone-quant/steemmonsters/blob/main/upbit-auto-buy.py

 

GitHub - multizone-quant/steemmonsters

Contribute to multizone-quant/steemmonsters development by creating an account on GitHub.

github.com

 

소스 파일에서 아래 변수 값을 본인의 화면에서 찾은 좌표값으로 변경합니다.

 

price   = [993, 584]  # 가격 입력 창
qty     = [1085, 640]  # 수량 입력 창
order   = [939, 906]  # 주문 버튼
confirm = [719, 634]  # 주문 확인 버튼
done    = [715, 473]  # 닫기 버튼

 

원하는 가격과 수량도 정의하세요.
order_price = 48000000
order_qty = 0.001

 

이 상태에서 실행을 하면 프로그램이 알아서 자동으로 매수 주문을 해 줍니다.

 

실제로 실행을 해보니, HTS 프로그램의 위치를 잘 기억하고 있어야 하더군요. full screen 상태에서는 큰 문제가 없지만(멀티 모니터 사용) 그렇지 않은 경우에는 HTS 크기를 조절하는 상태를 잘 기억해야 다음 실행시에도 정상적으로 동작합니다.

 

현재 상태에서 매수/매도 선택하는 부분만 추가한다면 원하는 가격과 수량에 자동으로 매수/매도할 수 있습니다.

 

 

 

 

반응형

설정

트랙백

댓글

선물/옵션 매매시 사용하는 8자리 코드에 해석하는 함수에 대하여 정리합니다. 

코드에 대한 자세한 설명은 아래 글을 참고하세요.

https://agibbyeongari.tistory.com/897

 

[선물옵션 거래] 종목코드 의미

[선물옵션 거래] 종목코드 의미 선물거래나 옵션거래를 할 때, 자주 접하게 되는 선물옵션 종목코드의 각 자리의 숫자와 영어 알파벳의 의미에 대해 알아보았다. 선물옵션 거래를 할 때, 선물옵

agibbyeongari.tistory.com

 

주식 선물, 스프레드, 변동성지수 등등은 제외하고, 주로 사용하는 선물/옵션과 미니, weekly에 대하여 해석한 함수입니다.

 

주의할 부분은 월인데요. 숫자와 혼란을 방지하기 위하여 I, O 등은 빠져있습니다. 그래서 그냥 손코딩했습니다.

code_4 = {'Q':2020, 'R':2021, 'S':2022, 'T':2023, 'V':2024, 'W':2025, '6':2026, '7':2027, '8':2028, '9':2029, '0':2030, '1':2031, '2':2032, '3':2033, '4':2034, '5':2035}

 

잘 동작하는지 확인해보겠습니다.

 

지수/옵션 코드를 입력하면 오른쪽에 있는 형태로 돌려줍니다. 이 값을 참고하면 입력 코드가 어떤 종류인지 구분이 가능할 것 같습니다.

 

관련코드는 아래 github에 있습니다.

https://github.com/multizone-quant/xing-api/blob/master/get_code_info.py

반응형

설정

트랙백

댓글

xing api 관련하여 오랜만에 글 올립니다.

 

오늘은 xing에서 제공하는 선물/옵션 관련 tr에 대하여 정리합니다.

작업할 tr은 다음과 같습니다.

 

tr0441 : 선물/옵션 보유종목 조회
tr8432 : 코스피200 지수선물 마스터 조회
tr8435 : 파생 코드 조회
tr2301 : 선물옵션 상세 정보 조회
tr2101 : 선물/옵션 현재가 조회 

 

선물/옵션 자동 매매를 하기 위한 아주 기본적인 TR 들입니다.

 

코드는 최대한 있는 그대로 개발하였기 때문에 이해하기 아주 쉬울 것으로 보입니다. 코드와 관련하여 특별하게 언급할 사항은 없기 때문에 아래 github에 있는 소스코드를 참고하시면 될 것 같습니다.

 

https://github.com/multizone-quant/xing-api/blob/master/xing_api_future.py

반응형

설정

트랙백

댓글