본문 바로가기
반응형

전체 글97

localhost(로컬호스트)를 http(웹서비스)로 변환하는 방법(feat. ngrok) 안녕하세요. Python & FastAPI를 이용하여 자동매매 프로그램을 개발하고 있는 인천고래입니다. 정식 웹 서비스를 제공하기 전에 로컬에서 테스트를 많이 하는데실제 서버에 베타 버전을 올리기 이전에 로컬에서라도 외부 접근이 가능하게 만드는 서비스가 있어서 소개차 글을 작성합니다.  ngrok은 로컬에서 실행 중인 웹 서버를 외부 인터넷에서 접근할 수 있는 공개 URL로 노출시키는 터널링 서비스를 제공합니다. 이를 통해 로컬 환경에서 개발 중인 애플리케이션을 손쉽게 외부 사용자 또는 클라이언트에게 보여줄 수 있어서 웹훅 테스트, API 개발, 데모 등을 위해 매우 유용합니다. ngrok 주요 기능 HTTP/HTTPS 터널링: 로컬 웹 서버를 안전한 HTTP 및 HTTPS URL로 노출시킵니다.TCP .. 2024. 6. 23.
파이썬 자동매매 기초 : 조건검색식 가져오기 안녕하세요. 인천고래입니다. 우리는 매수할 종목을 고르기 위해 2,000여 종목을 매일매일 확인할 수도 있지만 제일 쉽게 매수종목을 필터링할 수 있는  방법 중 하나로 조건검색식을 사용하기도 합니다. 그런데 HTS에서 활용하는 조건검색식(종목명 리스트)도 자동매매에서 활용할 수 있다는 것 아실 거예요.그래서 오늘은 간단하게 조건검색식 목록을 불러오고 특정 검색식을 통해서 해당 검색 조건에 맞는 종목들이 출력되는 코드를 제공할까 합니다. from pykiwoom.kiwoom import Kiwoomimport time# Kiwoom 객체 생성 및 로그인kiwoom = Kiwoom()kiwoom.CommConnect(block=True)kiwoom.GetConditionLoad()# 조건식 목록 가져오기co.. 2024. 5. 28.
이동평균선의 피크(고점)와 트로프(저점)를 처리하는 아이디어 안녕하세요. 인천고래입니다. 주가의 고점이 아닌 이동평균선의 피크와 트로프 지점을 찾는 알고리즘을 만들었지만 아무래도 명확하게 표현하기 어렵다 보니 여러 가지 고민이 많습니다. 일단은 아이디어 단계로 피크와 트로프를 어떻게 처리할지에 대한 글을 적어 놓겠습니다. 동일한 기간 내에 가까운 위치에 있는 피크(고점)와 트로프(저점)를 처리하는 방법에 대한 몇 가지 아이디어는 다음과 같습니다. 이동평균선의 피크(고점)와 트로프(저점)를 처리하는 아이디어 임계값 기반 필터링: 가까운 위치에 있는 피크 또는 트로프 중 더 중요한 것을 선택하는 방법입니다. 예를 들어, 같은 기간 내에 두 개의 피크가 있으면, 더 높은 피크를 선택하거나, 두 개의 트로프 중 더 낮은 트로프를 선택합니다. 이를 위해 prominence.. 2024. 5. 16.
분할매수에 대한 테스팅 안녕하세요. 인천고래입니다. 이번 글에서는 분할 매수를 진행함에 있어서 상승장과 하락장 일 때 분할매수를 어떤 방식으로 해야할지에 대한 결과(?)를 얻어 보도록 하겠습니다. 우선 말씀 드릴 사항이 있는데 실제 주가는 상승과 하락을 반복합니다.그래서 단순 하락장과 단순 상승장의 데이터를 가지고 테스트 하였음을 알려드립니다. 아래는 관련 코드입니다.''''''import yfinance as yfimport numpy as npimport matplotlib.pyplot as plt# 주가 데이터 다운로드 함수def download_stock_data(ticker, start_date, end_date): stock_data = yf.download(ticker, start=start_date, end.. 2024. 5. 14.
data-* : HTML5에서 도입된 사용자 정의 데이터 속성 안녕하세요. 인천고래입니다. HTML 작업을 하다 보면 하나의 페이지에 수많은 화면이 표현되다 보니 자연스럽게 HTML코드 및 스타일 & 자바스크립트까지 포함되어 코드량이 자연스럽게 늘어나서 차후에 수정할 일이 생겨서 찾으려 하면 시간이 오래 걸리는 비효율적인 상황들이 발생됩니다. 이런 경우에는 외부 파일로 만들어 놓고 필요할 때에만 불러오는 형식으로 만들어두면 수정할 사항이 발생될 경우 외부 파일 내의 코드만 살펴보면 일이 쉽게 풀리기도 합니다. 이렇게 모듈화(Modularization) 또는 컴포넌트 기반 개발(Component-Based Development) 을 하게 되면 코드의 재사용성을 높이고, 유지 관리를 용이하게 하며, 대규모 애플리케이션의 개발 및 관리를 효과적으로 할 수 있도록 돕습니다.. 2024. 5. 12.
Python 모듈의 버전을 확인하는 방법 안녕하세요. 인천고래입니다. 파이참의 터미널에서 Python 모듈의 버전을 확인하는 방법은 약 4가지 정도가 있으며 이 글의 마지막에는 확인된 버전으로 모듈의 버전을 업데이트(상위버전 혹은 하위버전)하는 방법에 대해 알아보도록 하겠습니다.※ pip 명령은 파이참 터미널에서 사용하는 코드입니다. Python 모듈의 버전을 확인하는 방법1. pip show 사용pip show 명령을 사용하여 특정 패키지의 정보를 확인할 수 있습니다.pip show flask-socketio 이 명령을 실행하면 현재 flask-socketio 모듈의 버전과 함께 의존성 정보 등을 확인할 수 있습니다.(py37_32) C:\Users\SH_PER2\PycharmProjects\bot\ChatGPT>pip show flask-s.. 2024. 5. 10.
비동기식 프로그래밍을 위한 async/await, asyncio 사용법 안녕하세요. 인천고래입니다. 이번 글에서는 비동기식 프로그래밍을 하는데 필요한 async/await 키워드 사용법에 대해 알아보는 시간을 가져보겠습니다. async/await 사용법 async와 await는 Python 3.5 이상에서 비동기 프로그래밍을 구현하기 위해 사용되는 키워드입니다. 이들을 사용하여 I/O 바운드 작업을 효율적으로 처리할 수 있습니다. async async 키워드는 함수 앞에 사용되며, 해당 함수를 '코루틴(coroutine)'으로 만듭니다. 코루틴은 비동기로 실행될 수 있는 함수입니다. async 함수는 호출될 때 실행되지 않고, 대신에 'Future 객체'를 반환합니다. 실제 실행을 위해서는 await, asyncio.run(), event_loop.run_until_comp.. 2024. 4. 5.
웹 스크래핑을 통한 비동기 프로그래밍 필요성의 이해 안녕하세요. 인천고래입니다. 이번 글에서는 비동기와 동기식 함수를 만들고 호출하는 방법에 대해 알아보는 시간을 가져보도록 하겠습니다. 프로그래밍을 하다 보면 간단한 데이터를 가져오거나 연산을 하는 경우도 발생이 되고 대용량 데이터를 DB에서 가져오기도 합니다. 그리고 웹 상에서 필요한 데이터를 추출하기도 하죠. 컴퓨터가 고사양이 되다보니 데이터를 연산하는 속도가 빨라지다 보니 결과도 빠르게 나오게 되는데 외부에서 필요한 데이터를 추출하는 과정을 거치는 작업은 네트워크를 거치다 보니 당연히 결과를 얻는데 시간 지연이 발생되게 됩니다. 위의 과정을 아래와 같이 기능별로 항목을 구분하여 함수화 하고 동기식 처리 형태로 코드를 구현해 보도록 하겠습니다. 기능 항목 연산작업 웹 스크래핑 동기식 프로그래밍 파이썬 .. 2024. 4. 5.
데이터프레임을 엑셀로 변환시 메모리 에러가 발생하는 이유에 대하여. 안녕하세요. 인천고래입니다. 데이터베이스를 사용하지 않고 시계열 데이터를 엑셀 파일로 관리하는 경우가 있는데요. 예를 들어 통합적인 관리를 하기 위해 개별적인 종목별 주가 데이터가 저장된 엑셀 파일을 모두 로드해서 하나의 데이터프레임에 저장한 뒤 엑셀 파일로 통합하는 경우가 있습니다. 이 때 각 종목의 데이터가 많은 경우 메모리 부족 (MemoryError) 에러가 발생이 될 수 있습니다. 일반적으로 데이터프레임은 메모리에 상주해 있는 데이터이고 엑셀로 저장을 할 때 추가적인 메모리를 사용하지 않아도 될 것 같은데 실제로는 추가적인 메모리를 필요로 함으로써 메모리가 부족한 현상이 발생되게 됩니다. 좀 더 자세히 말씀을 드리자면 데이터프레임을 엑셀 파일로 변환할 때 추가적인 메모리 사용이 발생하는 이유는 .. 2024. 4. 5.
반응형