[코인]나만의 차트 및 데이터 추출방법 (CCI) (5)

2025. 1. 8. 14:32코인이야기/PYTHON

 

이 코드는 **CCI (Commodity Channel Index)**를 계산하고, 최근 4개 시점의 CCI 값과 그에 대한 **Smoothing 값(CCI_SM)**을 구하는 기능을 포함하고 있습니다. 주로 CCI를 사용하여 가격의 과매도 또는 과매수 상태를 파악하고, 해당 지표를 추적하는 데 유용한 정보를 제공합니다.

다음은 코드에 대한 SEO-friendly 설명입니다:

 

1. CCI(Commodity Channel Index) 계산

CCI는 가격이 과거 평균 가격에서 얼마나 벗어나 있는지를 측정하는 지표입니다. 특정 기간 동안 가격의 변동성을 분석하여 시장의 과매도/과매수 상태를 파악하는 데 사용됩니다.

코드는 PANTA.cci() 함수를 이용해 CCI 값을 계산합니다. self.df['high'], self.df['low'], self.df['close'] 데이터가 사용됩니다. 이후 최근 4개의 CCI 값(CCI_1, CCI_2, CCI_3, CCI_4)을 추출하고, 각 값에 대해 setIsNAN() 메서드를 사용하여 NaN 값을 처리합니다.

 

CCI = PANTA.cci(self.df['high'], self.df['low'], self.df['close'], 15)
CCI_1 = CCI.iloc[-1]
CCI_2 = CCI.iloc[-2]
CCI_3 = CCI.iloc[-3]
CCI_4 = CCI.iloc[-4]

 

2. CCI의 Smoothing 값 계산 (CCI_SM)

CCI의 Smoothing 값은 특정 기간 동안의 CCI 값의 평균을 계산하여 얻습니다. 이는 주어진 기간에 대한 "평활화된" CCI 값으로, 가격의 변동을 더욱 안정적으로 파악할 수 있도록 도와줍니다.

getCCISM_N1() 함수는 flag 값에 따라 CCI의 최근 cnt 개 값을 평균내어 Smoothing된 CCI 값을 계산합니다.

 

CCI_SM_1 = self.AVGUTIL.getCCISM_N1(CCI, 6, "1")
CCI_SM_2 = self.AVGUTIL.getCCISM_N1(CCI, 6, "2")
CCI_SM_3 = self.AVGUTIL.getCCISM_N1(CCI, 6, "3")
CCI_SM_4 = self.AVGUTIL.getCCISM_N1(CCI, 6, "4")

 

이때, CCI_SM 값은 과거 6개 데이터의 평균을 계산하여, 시점별로 Smoothing된 CCI 값을 얻습니다.

3. setIsNAN 함수

NaN 값 처리 함수로, CCI 값에 결측값이 있을 경우 0으로 대체합니다. 이 함수는 데이터 분석 중에 발생할 수 있는 오류를 예방하고, 안정적인 계산을 보장하는 역할을 합니다.

 

def setIsNAN(self, Value):
    if np.isnan(Value):
        Value = 0
    return Value

 

4. getCCISM_N1 함수

이 함수는 CCI의 평균값을 구하는 함수로, 주어진 flag 값에 따라 특정 구간의 CCI 값들을 선택하고 그 평균을 계산하여 반환합니다. 이를 통해 CCI의 Smoothing된 값을 구할 수 있습니다.

 
def getCCISM_N1(self, intCCI, cnt, flag):
    start_idx = int(flag) - 1
    if start_idx < 0 or start_idx + cnt > len(intCCI):
        raise ValueError("Invalid flag or cnt resulting in out-of-range slicing")
    selected_values = intCCI.iloc[start_idx:start_idx + cnt]
    totVal = selected_values.mean()
    return totVal

 

5. 전체적인 흐름

  1. CCI를 계산하여 각 시점에 대한 CCI 값과 Smoothing된 CCI 값을 추출합니다.
  2. 각 값에 대해 NaN 값을 처리하여 데이터의 정확성을 확보합니다.
  3. Smoothing된 CCI_SM 값은 getCCISM_N1() 함수에서 계산되며, 이를 통해 CCI의 안정적인 트렌드를 파악할 수 있습니다.

6. 예외 처리

코드 내에서 발생할 수 있는 예외를 처리하는 try-except 블록을 사용하여 안정성을 높였습니다. 예를 들어, getCCISM_N1 함수에서 범위를 벗어나는 인덱스 오류를 예방하고, 발생한 예외를 명확히 출력합니다.

 

except Exception as e:
    print(f"An error occurred: {e}")

 

결론

이 코드의 목적은 CCICCI_Smoothing 값을 효율적으로 계산하고, 그 값들을 활용하여 시장의 과매도/과매수 상태를 추적하거나 기술적 분석에 활용하는 것입니다. setIsNAN() 함수와 getCCISM_N1() 함수는 데이터 정리평균값 계산을 담당하여, 데이터를 안정적으로 처리하고 분석에 필요한 지표를 제공합니다.

이 코드를 통해 투자자는 가격 변동성을 파악하고, 더 나은 트렌드 분석을 할 수 있습니다.

반응형