본문 바로가기
지속가능티끌/Python

Python. enum

by i.got.it 2019. 5. 16.

C 의 enum 에 해당하는 것이 파이썬 3.4 이후부터 Enum 제공된다. 

 

from enum import Enum 

class ENUM_TIMEFRAMES(Enum):
    PERIOD_M1 = 1
    PERIOD_M15 = 15
    

혹은, 

# DLL 함수인자로 C enum  있는 경우 아래 처럼 정의해야 전달가능. 

from enum import IntEnum 

class ENUM_TIMEFRAMES(IntEnum):
    PERIOD_M1 = 1
    PERIOD_M15 = 15
    

 

c의  #define 용도처럼 사용하는 예. 

class CyMAXNM_ARRVALUE_CySTCM(IntEnum):
     value = 10

class CyMAXNUM_SYMBOLS(IntEnum): 
    value = 10 


########## 위에서 정의된 상수값을 배열 크기 지정용도로 사용하는 예. 
########## 상기 Enum 값만 수정하면 코드의 나머지 영역에 모두 적용. 

class CyST_CANDLE_forMULTI(Structure):
    _fields_ = [("Open", c_double),("High", c_double),("Low", c_double),("Close", c_double), # OHLC for one candle. 
                ("MA", c_double * CyMAXNM_ARRVALUE_CySTCM.value), # MA5, MA20, MA40, MA80, MA160
                ("PriceExt", c_double * CyMAXNM_ARRVALUE_CySTCM.value), # ex. Kalman Filtered.
                ("ValueExt", c_double * CyMAXNM_ARRVALUE_CySTCM.value) # ex. ATR etc. 
               ]

 

enum 의 정수값에 해당하는 값으로 enum 값 확보예. 

class CyENUM_TIMEFRAMES(IntEnum):
    PERIOD_M1 = 1
    PERIOD_M5 = 5
    PERIOD_M10 = 10
    PERIOD_M15 = 15
    PERIOD_H1 = 16385
    PERIOD_H4 = 16388
    PERIOD_D1 = 16408

GetCyENUM_TIMEFRAMES_from_int = {
    1: CyENUM_TIMEFRAMES.PERIOD_M1,  
    5: CyENUM_TIMEFRAMES.PERIOD_M5,  
    10: CyENUM_TIMEFRAMES.PERIOD_M10,  
    15: CyENUM_TIMEFRAMES.PERIOD_M15,  
    16385: CyENUM_TIMEFRAMES.PERIOD_H1,  
    16388: CyENUM_TIMEFRAMES.PERIOD_H4,  
    16408: CyENUM_TIMEFRAMES.PERIOD_D1  
}    

### 활용예. 
print("Received Data Candle. timeframe = ",GetCyENUM_TIMEFRAMES_from_int[cyst_DataCandleSymbolMulti.i_timeframe].name)

출력결과. 

 


첫등록 : 2019년 5월 16일

최종수정 : 

 

본 글 단축주소 : https://igotit.tistory.com/2172

 


 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5