본문 바로가기

python58

예약어에 바인딩이 된다? What’s New In Python 3.10 — Python 3.10.10 documentation What’s New In Python 3.10 — Python 3.10.10 documentation Parenthesized context managers Using enclosing parentheses for continuation across multiple lines in context managers is now supported. This allows formatting a long collection of context managers in multiple lines in a similar way as it was previously pos docs.python.org python 3.10.. 2023. 2. 19.
캐치 슬리피지 2021년 9월 1일의 캐지 계좌 거래내역이다. 밑에서 3번째 내역을 보면 포착가격은 14550원인데 체결은 15050원에 된 것을 알 수 있다. 엠투엔의 초봉이다. 9시 0분 32초의 캔들의 저가가 14550원임을 알 수 있다. 그러나 종가는 15050원이다. 즉, 1초도 안 되는 시간에 주가가 14550원을 찍었다가 15050원으로 올라온 것이다. 그리고 나는 현재가+10호가에 매수 주문을 넣었으니 500원 비싸게 사서 슬리피지가 발생하게 된다. 이런 슬리피지를 작게 하려면 정확한 지정가 주문이 필요하다. 단, 정확한 지정가 주문을 하게 되면 매수나 매도 주문이 미체결될 수 있다. 매수 주문이 미체결되면 손해도 이익도 없으니 상관없지만(사실 전기세가 손해다), 매도 주문이 미체결되면 막대한 손실을 입.. 2021. 9. 9.
python의 set 주의점 class set(object) | set() -> new empty set object | set(iterable) -> new set object | | Build an unordered collection of unique elements. python의 set이란 집합을 의미한다. 집합 자료형에는 두 가지 특징이 있는데, 하나는 순서가 없다는 것이고, 하나는 원소가 중복될 수 없다는 것이다. 순서가 없다는 것은 무작위성을 가진다는 것을 의미한다. asdf = set('asdf') qwer = set('qwer') print(list(asdf), list(qwer)) ['s', 'd', 'f', 'a'] ['w', 'e', 'r', 'q'] ['a', 'f', 's', 'd'] ['e', 'w', .. 2021. 9. 5.
python 실행 중 코드 수정 input() asdf 이렇게 코드 쓰고 실행한 다음 input에 값 넣기 전에 둘째 줄을 qwer로 바꿨다. Traceback (most recent call last): File "c:\Users\falto\Desktop\pythonprojects\kakaotalkbot\a1.py", line 2, in qwer NameError: name 'asdf' is not defined 그럼 이렇게 된다. 2021. 8. 14.
python의 or 연산 특이점 #include int main() { if (1 || a) { printf("asdf"); } return 0; } c언어는 저렇게 하면 a가 선언되지 않았다고 하면서 오류가 뜬다. 파이썬은 True or apple이라고 쓰면 apple이 정의되어있지 않아도 True이라고 해석한다. 물론 apple or True라고 쓰면 오류가 난다. 저런 식이면 장단점은 무엇이냐.. 장점: 연산 속도가 빨라진다. True or 어쩌구면 무조건 참이니까 바로 그냥 냅다 참 반환해버리고 다음 단계로 넘어가면 된다. or 다음에 올게 엄청난 연산을 해야 하는 함숫값일 것을 상상해보면 저런 연산 방식은 파이썬 이용자에게 있어서 엄청난 축복이라 할 수 있을 듯. 단점: 오류를 바로 잡아내지 못한다. 사실 나는 apple을 정.. 2021. 8. 12.
상폐 종목 구분 상폐되면 종목코드랑 종목명 등 모든 데이터가 사라진다고 생각해서 GetMasterCodeName 함수를 호출해서 이름이 없으면 상폐로 분류했다. 근데 상폐됐는데 이름만 남아있는 경우도 있다. 그래서 이런 종목을 거르기 위한 다른 알고리즘을 찾았다. GetMasterLastPrice 함수가 가장 성능이 확실한 것 같다. GetMasterLastPrice 함수를 호출했을 때 0원이 나오거나, 혹은 빈 문자열이 나온다면 그것은 상장폐지된 종목이다. GetMasterLastPrice에 제낙스의 코드를 넣으면 0원이 나오고(정확히는 0이 연속된 문자열이 나온다.), 다른 의미없는 문자(apple, banana 등..)를 종목코드 매개변수에 넣으면 빈 문자열이 나온다. 2021. 8. 11.
softmax 함수의 장점 아래는 softmax 함수와 relative_frequency 함수를 비교하는 python 코드다. relative_frequency 함수는 전체에 대한 상대적인 크기를 반환한다. 즉 (각 값 / 전체 값의 합)이다. 두 함수는 모두 배열의 합이 1이 된다는 공통점이 있다(전체 값이 모두 양수라는 조건이 있어야 한다). import math import matplotlib.pyplot as plt arrx = range(5) array = [2, 3, 5, 7, 11] def softmax(array): array = [x - max(array) for x in array] a0 = 0 for x in array: a0 += math.exp(x) a1 = [] for x in array: a1.appen.. 2021. 8. 10.
__add__와 __radd__ int 클래스에는 __add__와 __radd__라는 메서드가 있다. __add__는 int + 무언가를 연산할 때 호출되는 메서드이고, __radd__는 무언가 + int를 연산할 때 호출되는 메서드이다. 이는 int 뿐만이 아니라 다른 클래스에서도 구현할 수 있다. class Asdf: def __add__(self, value): return 2 + value asdf = Asdf() a0 = asdf + 3 print(a0) # 5 class Asdf에 __add__ 메서드를 구현했다. asdf + 3을 연산할 때 __add__ 메서드의 value 매개변수에는 3이 들어간다. 결과는 5가 나온다. class Asdf: def __add__(self, value): return 2 + value a.. 2021. 8. 10.
NAND NOR NAND 게이트의 조합만으로 모든 게이트를 만들 수 있다. 아래는 NAND 게이트의 퍼셉트론만으로 모든 게이트를 구현한 python 코드이다. def NAND(x1, x2): a0 = -0.5 * (x1 + x2) + 0.7 if a0 > 0: return 1 else: return 0 def NOT(x): return NAND(x, x) def AND(x1, x2): return NOT(NAND(x1, x2)) def OR(x1, x2): return NAND(NOT(x1), NOT(x2)) def NOR(x1, x2): return NOT(OR(x1, x2)) def XOR(x1, x2): return AND(NAND(x1, x2), OR(x1, x2)) def XNOR(x1, x2): return .. 2021. 8. 9.
유통주식수 데이터가 존재하는 종목 찾기 나는 이 세상에 존재하는 모든 종목코드 중에 키움증권에 유통주식수 데이터가 존재하는 종목코드만 알아내야 하는 상황에 처했다. 키움증권 조건검색을 이용해서 유통주식수의 범위를 0 이상 999999999 이하로 잡아놓으면, 유통주식수 데이터가 존재하지 않는 종목은 자연스럽게 걸러질 것이라는 가설을 세웠다. 근데 그러던 도중 버그를 발견했다. 종가가 81500원이다. 라는 조건을 추가해서 삼성전자만 검색결과에 표시되게 했다. 유통주식수가 0주이상 999999999주 이하이다. 라는 조건을 추가했더니 삼성전자가 사라져버렸다. 삼성전자는 유통주식수가 999999999주보다 많아서 검색이 안 된다고 생각할 수도 있겠지만 키움증권이 제공하는 OpenAPI+를 사용하면 삼성전자의 유통주식수는 4,453,888주라는 사.. 2021. 8. 7.