2. 해외선물/2-6. 기타자료 (파이썬 함수 등)

(파이썬) 함수 정의 및 활용

봄이오네 2022. 9. 20. 08:05
반응형

1. 들어가며

파이썬에서 함수, 메소드, 클래스, 인스턴스는 무엇이며 어떤 역할을 하는가?

코딩에 재미를 느끼는 요즘 부쩍 궁금해지는 고민이다.

  • 함수     : 특정기능의 실현을 위해 정의해 놓은 경우를 말함(def로 시작)
  • 메소드 : 클래스 안에 함수가 정의된 경우를 말함(def로 시작)
  • 클래스 : 함수(메소드)들의 모음
  • 인스턴스 : 클래스를 특정변수에 담는 경우를 말함

2. 함수 예시

아래 <그림1>에서, ①~③번의 클래스, 함수, 메소드, 인스턴스의 예시이다.

①번의 aaa함수가 정의 → 결과값은 3

②번의 ccc클래스 내 ddd메소드가 정의됨 → 결과값은 7

    *  ②번처럼 클래스를 선언하고 실행하기 위해 "ccc.ddd()"로 실행하기에는

        클래스 선언하는 것이 아깝다. (① 혹은 ③번처럼 실행하는 것이 효율적)

③번의 fff클래스 내 ggg메소드가 정의됨 → 결과값은 11

< 그림1. ①함수, ②클래스/메소드, ③인스턴스(i) 선언 >

함수, 메소드, 클래스, 인스턴스는 왜 필요할까?

주식 시스템을 만들면서, 반복되는 기능에 대해 지속적으로 사용해 주기 위해서이다.

→ 즉, "함수, 클래스 등"은 향후 1번 이상 활용하겠다는 뜻이다.

 

함수와 메소드를 굳이 다르게 설명할 이유는 없어보인다.(클래스 내에 있는지 여부)

인스턴스(③의 i=fff())는 클래스 자체를 클래스 밖에서 활용하되,

클래스가 지나치게 길 때, 간략하게 사용하기 위해 사용한다.

def aaa():
    b = 1 + 2
    print(b)

aaa()


class ccc():
    def ddd():
        e = 3 + 4
        print(e)

ccc.ddd()


class fff():
    def ggg(self):
        h = 5 + 6
        print(h)

if __name__ == "__main__":
    i = fff()
    i.ggg()

3. 주식 자동매매 활용 방법

함수, 메소드, 클래스, 인스턴스라는 복잡한 개념을 이해하는 것보다 중요한 것은 

함수/클래스 등을 자동매매에 적용할 수 있는지의 문제이다.

우리가 관심있는 것은,

자동매매에서 함수/클래스를 어떻게 활용할 것이냐는 것이다.

 

(예시) 60초마다  2종목의 1분봉을 받는다고 생각해보자.

   - 구현해야될 함수는 키움OpenAPI 접속/로그인

   - 60초마다 1분봉 조회 함수

   - 받은 1분봉을 엑셀, CSV 혹은 MySQL 등 데이터베이스에 저장 함수 등 구현 필요

   - 1번 종목 받고, 2번 종목으로 바꾸어서(for) 1분봉 받는 함수

 

※ 위의 예시는 a종목을 받기 위해 3개 함수(로그인, 1분봉 조회, 엑셀 등 저장) 실행된 후,

     b종목의 3개 함수(로그인, 1분봉 조회, 엑셀 등 저장)을 for문으로 돌려주면 될 것이다.


4. 마치며

앞으로 함수가 정의되면, 뒤쪽에서 활용해 준다고 생각해주면 될 것 같다.

함수가 어디에서 어떻게 실행되는지 확인해 보는 것도 좋은 습관이 될 것이다.

반응형