주식 자동매매 시스템

파이썬을 이용한 주식 자동매매 시스템

이미지
파이썬을 이용한 주식 자동매매 시스템 INDEX 환경구축 키움증권 API - 연결테스트 키움증권 API - 계좌정보 조회 키움증권 API - 주문 키움증권 API - 종목정보 가져오기 포트폴리오 - 종목, 업종별 자산 포트폴리오 한국투자증권 API API reference 키움 OpenAPI+ 개발가이드 한국투자증권 OpenAPI 다운로드 및 가이드 Design https://www.design-seeds.com/in-nature/succulents/cacti-color-2/ https://create.piktochart.com/dashboard

Batch script에서 문자열 string을 큰따옴표(“”) 안에 쓰는 이유

Batch script에서 문자열 표현방법 배치 스크립트에서는 큰따옴표("")를 사용하거나 사용하지 않는 것에 대한 차이가 일반적으로 없습니다. 단, 문자열에 특수 문자나 공백이 없는 경우에는 두 가지 형태 모두 배치 해석기에 의해 문자열 리터럴로 해석됩니다. 큰따옴표를 꼭 사용해야하는 경우 배치 스크립트에서 큰따옴표는 공백이 포함된 문자열이나 선행/후행 공백을 보존해야 하는 문자열, 이스케이프 처리해야 하는 특수 문자를 포함하는 문자열과 같은 경우에 주로 사용됩니다.  첫 번째 답변을 번역하면 다음과 같습니다: 배치 스크립트에서는 큰따옴표("")를 사용하거나 사용하지 않는 것에 대한 차이가 일반적으로 없습니다. 단, 문자열에 특수 문자나 공백이 없는 경우에는 두 가지 형태 모두 배치 해석기에 의해 문자열 리터럴로 해석됩니다. 예를 들어, 다음과 같은 배치 스크립트를 고려해 봅시다: ```batch @echo off set myString=Hello, World! echo %myString% 이 스크립트에서 "Hello, World!" 문자열이 큰따옴표 없이 `%myString%` 변수에 할당됩니다. `echo` 명령이 실행될 때, 어떠한 문제 없이 "Hello, World!" 문자열이 출력됩니다. 그러나 큰따옴표 사용이 필요한 경우도 있습니다. 다음은 그 몇 가지 예입니다: 1. 공백이 포함된 문자열 처리: 문자열에 공백이 포함된 경우, 공백이 하나의 단위로 취급되도록 큰따옴표로 감싸야 합니다.  예를 들어: batch @echo off set myString="Hello, World!" echo %myString% 이 경우 출력에는 큰따옴표가 포함됩니다: "Hello, World!". 2. 선행 또는 후행 공백 보존: 문자열의 선행 또는 후행 공백을 보존해야 하는 경우, 전체 문자열을 큰따옴표로 감싸면 됩니다.  예를 들어: batc

R 데이터 타입 별 연산 방법 - 사칙 연산, 수치 연산

 R 데이터 타입 별 연산 방법에대해 알아보겠습니다. R에서는 기본적인 사칙 연산과 log, exp 연산을 포함한 수치 연산, 벡터 연산이 가능하다. 또 다른 언어와 달리 범위 밖에있는 변수의 값을 변경하는 '<<-' 연산이 있다. 문자로 되어 있는 경우에는 숫자로 변환하거나 paste() 함수를 사용할 수 있다. 수치연산 연산자와 함수 의미 +, -, *, / 사칙 연산 n %% m n 을 m 으로 나눈 나머지 n %/% m n 을 m 으로 나눈 몫 n^m n 의 m 승 exp(n)

[python] python string 문자열 함수 split, append, lower, replace

python string 문자열 함수 중 자주 사용되는 함수로 split(), append(), lower, replace() 이 있다. split() 문자열을 list로 나누어주는 함수이다. 문자열을 나누는 기준이되는 separator를 매개변수로 받는다. string.split(separator, maxsplit) tweets = "thank you welcoming ceremony it will always be remembered" def break_into_words(text): words = text.split(' ') return words print(break_into_words(tweets)) split()과 split(' ')의 차이 spllit()은 문자열 안에 공백이 여러개있거나, Tab, enter같은 공백도 다 하나로 처리해서 나누고, split(' ') 은 ' '안에 공백이 하나면, 공백 하나를 기준으로 문자열을 나누기 때문에 용도에 따라서 정확하게 사용해야 한다. append() list에 새로운 원소를 추가하기 위해 사용하는 함수이다.  tweets = ['a', 'is', 'back', 'and', 'we', 'are', 'coming', 'back'] def make_new_list(text): new_list = [] for i in range(len(text)): if text[i].startswith('b'): new_list.append(text[i]) return new_list new_list = make_

[LeetCode] Python 문제해결과정 - Best Time to Buy and Sell Stock II

날마다 주식의 가격을 prices 배열로 주고, 주식을 사고팔아서 얻을 수 있는 최대 이익을 구하는 문제다. python을 사용해서 3번의 시도 끝에 풀었으며, 접근 방법과 솔루션에 대해 소개한다. 연관 문제로 Best Time to Buy and Sell Stock 1~3 등이 있다. 다양한 접근방법으로 풀어볼 수 있어서 흥미로웠던 문제이다. 122. Best Time to Buy and Sell Stock II 문제 링크 Solution 바로가기   First Approach (5분) 문제 이해 문제를 명확히 하기 위한 과정(Q&A) 생각나는 알고리즘/자료구조 주식을 사고파는데, 최대 1주만 보유할 수 있다. price가 최소일 때 사야 할 것 같다는 생각이 들었다. 최소에서 팔 수 있을 때까지 날마다 diff profit을 저장해놓으면? DP를 적용해도 될 것 같은데 DP를 정확히 모르겠다. 합이 더 크면 더 큰 노드로 옮겨가고, 작아질 때 멈추고 하면 될 것 같은데, 각 node 들의 차이를 합해 나가는 방법으로도 가능할 것 같다.    First Solution(brute force) class Solution: def calculate(self, prices: List[int], start: int) -> int: max_profit = 0 max = 0 if start < len(prices): for s in range(start, len(prices)): for e in range(start+1, len(prices)): if prices[e] - prices[s] > 0:

[LeetCode] 효과적으로 문제해결 능력 키우는 방법

Leetcode 문제 풀이를 코딩 인터뷰를 준비하는 관점에서 어떻게 하면 더 효과적으로 할 수 있을지 생각해 보고, 기준을 정했다.  기술 면접을 준비하기 위해 Leetcode의 문제를 해결하는 방법 한 주에 하나의 주제만 일관된 시간/정해진 시간을 정해 놓고 매일 1~2시간 가장 약한 주제에 집중 1st step: easy 전부 풀기 2nd step: easy/medium/hard 중 medium의 80%를 풀 정도면 넘어가기 시간제한 easy: 20분 medium: 45분 hard: 60분 Hint/Forum 활용 시간 안에 풀지 못한 문제는 solution 을 보고 확실히 공부하기 어떤 문제를 해결했는지, 그 문제에 몇 분을 할당했는지 진행 시트를 직접 만들어 관리하기 효과적인 문제 해결 과정 문제 난이도에 따라 타이머를 설정한다. 문제를 이해하는데 5분을 사용한다. 명확하게 이해하기 위해 스스로 질문/답을 해본다.  문제를 보고 중요해 보이는 부분을 적어두고, 생각나는 알고리즘/자료구조 등 접근 방법을 적는다. 이런 방식은, 나중에 나의 경향성을 확인할 수 있다. 비슷한 사고를 하거나 편협한 생각을 하는 것을 객관적으로 깨달을 수 있을 것이다.  나머지 시간은 종이와 펜을 사용해 문제를 푸는데 집중한다. Solution을 공부하는데 10분을 쓴다. (10분은 권고) Solution을 완벽하게 이해하지 못했더라도, 한 문제에 30-35분 이상 할애하지 않는다. 문제를 풀었던 과정과 결과를 진행 시트에 업데이트한다.

[LeetCode] Remove Duplicates from Sorted Array 문제해결과정

정렬된 배열에서 중복된 원소를 제거하는 문제를 풀었다. 코딩 인터뷰 관점에서 문제 해결 과정을 brute force 방법부터 시간, 공간 복잡도를 고려하는 과정까지 순서대로 정리하고 python/C++ 최적 Solution까지 정리해 봤다. Easy Collection - Top Interview Questions - Array Remove Duplicates from Sorted Array 리트코드 문제 링크   Solution 바로보기 First Approach (5분) 문제 이해 중복을 제거하는데, 순서는 그대로 유지해야 된다. 중복 제거된 후의 개수 K를 return 하고, 처음 주어진 array의 배열 크기는 그대로 두어도 된다. K 뒤로 오는 배열 안의 원소는 don't care 배열을 추가로 선언하면 안 되고 주어진 배열 안에서 수정해야 한다. O(1) extra memory 문제를 명확히 하기 위한 과정(Q&A) 생각나는 알고리즘/자료구조 앞의 원소는 그대로 두고, 뒤에 나오는 원소는 뒤로 이동시킨다. 뒤로 보내면 뒤쪽 index도 가지고 있어야 됨 앞에서부터 순회, 뒤에 교체된 index 가 K가 될 것 같다. 처음 K는 nums array length로 시작?   First Solution(brute force) index i = 0부터 중복되는 count를 세면서 순회하고, K 는 N(nums array의 length) 중복되는 count만큼 K = N - count i + 1에 i + count + 1 부터 가져옴 다음 i++ 부터 다시 순회 시작 Second Solution 순회하면서 중복되는 원소를 곧바로 제거하고, 뒤에 있는 원소들을 앞으로 이동시