import axios from 'axios';
import { API_CONFIG } from './apiConfig';

const API_BASE_URL = API_CONFIG.baseURL;

export interface TradingStrategy {
  id?: number;
  name: string;
  strategyType: 'STRATEGY_1' | 'STRATEGY_2' | 'STRATEGY_3' | 'STRATEGY_4' | 'STRATEGY_5' | 'TREND_STOCHASTIC' | 'TREND_STOCHASTIC_CCI' | 'STOCHASTIC_ONLY' | 'COMPOSITE_INDICATOR' | 'INTEGRATED_INDICATOR';
  description?: string;
  enabled: boolean;
  stochOversoldThreshold?: number;
  stochOverboughtThreshold?: number;
  stochNeutralThreshold?: number;
  adxStrongThreshold?: number;
  cciOverboughtThreshold?: number;
  cciOversoldThreshold?: number;
  macdWeight?: number;
  stochasticWeight?: number;
  adxWeight?: number;
  cciWeight?: number;
  // TREND_STOCHASTIC 전용 설정 (정배열/역배열 + Stochastic)
  enableMacdCondition?: boolean;  // MACD/추세 조건 사용 여부 (OFF 시 정배열/역배열 무관)
  enableCciCondition?: boolean;   // CCI/추세 조건 사용 여부 (OFF 시 CCI 무관)
  enableBullishAllLevels?: boolean;  // 정배열 시 모든 레벨 신호 활성화
  enableBearishOnlyOverbought?: boolean;  // 역배열 시 80 레벨만 활성화
  // STOCHASTIC_ONLY 전용 설정 (레벨별 on/off)
  enableLevel20?: boolean;  // 20 레벨 돌파 조건 활성화
  enableLevel50?: boolean;  // 50 레벨 돌파 조건 활성화
  enableLevel80?: boolean;  // 80 레벨 돌파 조건 활성화
  // TREND_STOCHASTIC 전용 설정 (분할 매매 비율)
  level1BuyRatio?: number;   // 1차 매수 비율 (20레벨 상향돌파, 기본: 0.33)
  level1SellRatio?: number;  // 1차 매도 비율 (20레벨 하향돌파, 기본: 0.33)
  level2BuyRatio?: number;   // 2차 매수 비율 (50레벨 상향돌파, 기본: 0.33)
  level2SellRatio?: number;  // 2차 매도 비율 (50레벨 하향돌파, 기본: 0.33)
  level3BuyRatio?: number;   // 3차 매수 비율 (80레벨 상향돌파, 기본: 0.34)
  level3SellRatio?: number;  // 3차 매도 비율 (80레벨 하향돌파, 기본: 0.34)
  // COMPOSITE_INDICATOR 전용 설정 (복합지표 전략)
  rsiPeriod?: number;          // RSI 기간 (기본: 14)
  rsiOversold?: number;        // RSI 과매도 (기본: 30)
  rsiOverbought?: number;      // RSI 과매수 (기본: 70)
  bbPeriod?: number;           // 볼린저밴드 기간 (기본: 20)
  bbStdDev?: number;           // 볼린저밴드 표준편차 배수 (기본: 2.0)
  atrPeriod?: number;          // ATR 기간 (기본: 14)
  volumeIncreaseThreshold?: number;  // 거래량 증가 임계값 (기본: 1.5 = 150%)
  trendWeight?: number;        // 추세 가중치 (기본: 0.4)
  momentumWeight?: number;     // 모멘텀 가중치 (기본: 0.3)
  volatilityWeight?: number;   // 변동성 가중치 (기본: 0.2)
  volumeWeight?: number;       // 거래량 가중치 (기본: 0.1)
  minSignalScore?: number;     // 최소 신호 점수 (기본: 70)
  
  // INTEGRATED_INDICATOR 전용 설정 (통합지표 전략)
  // 이평선(MA) 설정
  enableMA?: boolean;           // 이평선 사용 여부
  maShortPeriod?: number;       // 단기 이평선 기간 (기본: 12)
  maMidPeriod?: number;         // 중기 이평선 기간 (기본: 26)
  maLongPeriod?: number;        // 장기 이평선 기간 (기본: 60)
  // MACD 설정
  enableMACD?: boolean;         // MACD 사용 여부
  macdFastPeriod?: number;      // MACD Fast 기간 (기본: 12)
  macdSlowPeriod?: number;      // MACD Slow 기간 (기본: 26)
  macdSignalPeriod?: number;    // MACD Signal 기간 (기본: 9)
  // Stochastic Slow 설정
  enableStochastic?: boolean;   // Stochastic 사용 여부
  stochKPeriod?: number;        // Stochastic %K 기간 (기본: 14)
  stochDPeriod?: number;        // Stochastic %D 기간 (기본: 3)
  stochSlowing?: number;        // Stochastic Slowing (기본: 3)
  // RSI 설정
  enableRSI?: boolean;          // RSI 사용 여부
  intRsiPeriod?: number;        // RSI 기간 (기본: 14)
  intRsiOversold?: number;      // RSI 과매도 (기본: 30)
  intRsiOverbought?: number;    // RSI 과매수 (기본: 70)
  // CCI 설정
  enableCCI?: boolean;          // CCI 사용 여부
  cciPeriod?: number;           // CCI 기간 (기본: 20)
  intCciOversold?: number;      // CCI 과매도 (기본: -100)
  intCciOverbought?: number;    // CCI 과매수 (기본: 100)
  // ADX 설정
  enableADX?: boolean;          // ADX 사용 여부
  adxPeriod?: number;           // ADX 기간 (기본: 14)
  intAdxStrong?: number;        // ADX 강한 추세 (기본: 25)
  // 통합 매매 조건
  intBuyCondition?: 'ALL' | 'ANY' | 'MAJORITY';   // 매수 조건 (모두/하나라도/과반수)
  intSellCondition?: 'ALL' | 'ANY' | 'MAJORITY';  // 매도 조건 (모두/하나라도/과반수)
  
  createdAt?: string;
  updatedAt?: string;
}

/**
 * 트레이딩 전략 목록 조회
 */
export const getStrategies = async (activeOnly: boolean = false): Promise<TradingStrategy[]> => {
  const response = await axios.get(`${API_BASE_URL}/strategies`, {
    params: { activeOnly }
  });
  return response.data;
};

/**
 * 트레이딩 전략 상세 조회
 */
export const getStrategy = async (id: number): Promise<TradingStrategy> => {
  const response = await axios.get(`${API_BASE_URL}/strategies/${id}`);
  return response.data;
};

/**
 * 트레이딩 전략 생성
 */
export const createStrategy = async (strategy: TradingStrategy): Promise<TradingStrategy> => {
  const response = await axios.post(`${API_BASE_URL}/strategies`, strategy);
  return response.data;
};

/**
 * 트레이딩 전략 수정
 */
export const updateStrategy = async (id: number, strategy: TradingStrategy): Promise<TradingStrategy> => {
  const response = await axios.put(`${API_BASE_URL}/strategies/${id}`, strategy);
  return response.data;
};

/**
 * 트레이딩 전략 삭제
 */
export const deleteStrategy = async (id: number): Promise<void> => {
  await axios.delete(`${API_BASE_URL}/strategies/${id}`);
};

/**
 * 트레이딩 전략 활성화/비활성화
 */
export const toggleStrategy = async (id: number, enabled: boolean): Promise<TradingStrategy> => {
  const response = await axios.patch(`${API_BASE_URL}/strategies/${id}/toggle`, null, {
    params: { enabled }
  });
  return response.data;
};

/**
 * 전략 타입별 설명
 */
export const getStrategyTypeDescription = (type: string): string => {
  switch (type) {
    case 'STRATEGY_1':
      return 'MACD 단독: MACD 골든/데드 크로스만 사용';
    case 'STRATEGY_2':
      return 'MACD + Stochastic: Stochastic 우선, MACD 보조 (권장)';
    case 'STRATEGY_3':
      return 'MACD + Stochastic + ADX: 추세 강도 고려';
    case 'STRATEGY_4':
      return '종합 전략: 모든 지표 활용 (고급)';
    case 'STRATEGY_5':
      return 'MACD Zero Cross: MACD 0선 교차 전략';
    case 'TREND_STOCHASTIC':
      return 'MACD + Stochastic Slow: 정배열/역배열 추세에 따른 Stochastic 레벨 돌파 매매';
    case 'TREND_STOCHASTIC_CCI':
      return 'CCI + Stochastic Slow: CCI 추세에 따른 Stochastic 레벨 돌파 매매';
    case 'STOCHASTIC_ONLY':
      return 'Stochastic Slow Only: 정배열/역배열 무관, 20/50/80 레벨 돌파 매매';
    case 'COMPOSITE_INDICATOR':
      return '복합지표 전략: 추세+모멘텀+변동성+거래량 4단계 복합 분석 (70점 이상 시 매매)';
    case 'INTEGRATED_INDICATOR':
      return '통합지표 전략: 이평선/MACD/Stochastic/RSI/CCI/ADX 개별 on/off 및 파라미터 설정 가능';
    default:
      return '알 수 없음';
  }
};

/**
 * 전략 타입별 이름
 */
export const getStrategyTypeName = (type: string): string => {
  switch (type) {
    case 'STRATEGY_1':
      return 'MACD 단독';
    case 'STRATEGY_2':
      return 'MACD + Stochastic';
    case 'STRATEGY_3':
      return 'MACD + Stochastic + ADX';
    case 'STRATEGY_4':
      return '종합 전략 (전체)';
    case 'STRATEGY_5':
      return 'MACD Zero Cross';
    case 'TREND_STOCHASTIC':
      return 'MACD + Stochastic Slow (추세 기반)';
    case 'TREND_STOCHASTIC_CCI':
      return 'CCI + Stochastic Slow (CCI 기반)';
    case 'STOCHASTIC_ONLY':
      return 'Stochastic Slow Only';
    case 'COMPOSITE_INDICATOR':
      return '복합지표 전략';
    case 'INTEGRATED_INDICATOR':
      return '통합지표 전략';
    default:
      return type;
  }
};

/**
 * 전략 타입별 상세 설명 가져오기
 */
export const getStrategyDetailedDescription = (strategyType: string): string => {
  switch (strategyType) {
    case 'STRATEGY_1':
      return `
[MACD 단독 전략]

▶ MACD (Moving Average Convergence Divergence)를 활용한 기본 전략

【매수 신호】
• MACD 골든 크로스: MACD 선이 Signal 선을 상향 돌파
  - 단기 이동평균이 장기 이동평균보다 빠르게 상승
  - 상승 모멘텀 발생 시점

【매도 신호】
• MACD 데드 크로스: MACD 선이 Signal 선을 하향 돌파
  - 단기 이동평균이 장기 이동평균보다 빠르게 하락
  - 하락 모멘텀 발생 시점

【보조 지표】
• MACD 히스토그램: MACD와 Signal의 차이
  - 양수(+) → 상승 모멘텀
  - 음수(-) → 하락 모멘텀

※ 가장 기본적인 추세 추종 전략
※ 단독 사용 시 잦은 거짓 신호 발생 가능
      `.trim();

    case 'STRATEGY_2':
      return `
[MACD + Stochastic 전략 (권장)]

▶ Stochastic 우선, MACD 보조 전략
▶ 과매수/과매도 구간에서 MACD 신호 확인

【매수 신호】
• Stochastic Slow %K < ${20} (과매도 구간)
• MACD 골든 크로스 발생
• 두 조건 동시 만족 시 매수

【매도 신호】
• Stochastic Slow %K > ${80} (과매수 구간)
• MACD 데드 크로스 발생
• 두 조건 동시 만족 시 매도

【신호 점수 계산】
• Stochastic 가중치: 60%
• MACD 가중치: 40%
• 종합 점수로 매매 판단

【장점】
✓ 과매수/과매도 구간 필터링으로 거짓 신호 감소
✓ 두 지표의 상호 보완
✓ 중기 트레이딩에 적합
      `.trim();

    case 'STRATEGY_3':
      return `
[MACD + Stochastic + ADX 전략]

▶ 추세 강도(ADX)를 추가로 고려하는 전략
▶ 강한 추세 구간에서만 매매

【매수 신호】
• Stochastic Slow %K < ${20} (과매도)
• MACD 골든 크로스
• ADX > ${25} (강한 추세)
• 세 조건 동시 만족 시 매수

【매도 신호】
• Stochastic Slow %K > ${80} (과매수)
• MACD 데드 크로스
• ADX > ${25} (강한 추세)
• 세 조건 동시 만족 시 매도

【신호 점수 계산】
• Stochastic 가중치: 50%
• MACD 가중치: 30%
• ADX 가중치: 20%

【ADX (Average Directional Index)】
• ADX > 25: 강한 추세
• ADX < 25: 약한 추세 또는 횡보
• 추세 강도만 측정 (방향 무관)

【장점】
✓ 횡보장에서 거짓 신호 필터링
✓ 강한 추세에서만 진입
✓ 승률 향상 가능
      `.trim();

    case 'STRATEGY_4':
      return `
[종합 전략 (MACD + Stochastic + ADX + CCI)]

▶ 모든 지표를 종합적으로 사용하는 고급 전략
▶ 다양한 시장 상황 대응

【사용 지표】
• MACD: 추세 방향 및 모멘텀
• Stochastic: 과매수/과매도
• ADX: 추세 강도
• CCI: 가격 변동성

【매수 신호】
• Stochastic < ${20} (과매도)
• MACD 골든 크로스
• ADX > ${25} (강한 추세)
• CCI < -100 (과매도)
• 종합 점수 계산 후 매수 판단

【매도 신호】
• Stochastic > ${80} (과매수)
• MACD 데드 크로스
• ADX > ${25} (강한 추세)
• CCI > 100 (과매수)
• 종합 점수 계산 후 매도 판단

【신호 점수 계산】
• MACD 가중치: 25%
• Stochastic 가중치: 40%
• ADX 가중치: 20%
• CCI 가중치: 15%

【특징】
✓ 가장 복합적인 분석
✓ 높은 승률 목표
✓ 신호 발생 빈도 낮음
⚠ 과도한 필터링으로 기회 손실 가능
      `.trim();

    case 'STRATEGY_5':
      return `
[MACD Zero Cross 전략]

▶ MACD의 0선 교차를 활용한 전략
▶ 이동평균선 크로스와 동일한 개념

【매수 신호】
• MACD 선이 0선을 상향 돌파
  - 단기 이동평균(EMA12) > 장기 이동평균(EMA26)
  - 본격적인 상승 추세 시작
  - 골든 크로스보다 늦지만 신뢰도 높음

【매도 신호】
• MACD 선이 0선을 하향 돌파
  - 단기 이동평균(EMA12) < 장기 이동평균(EMA26)
  - 본격적인 하락 추세 시작
  - 데드 크로스보다 늦지만 신뢰도 높음

【0선의 의미】
• 0선 위: 상승 추세 (단기MA > 장기MA)
• 0선 아래: 하락 추세 (단기MA < 장기MA)
• 0선 교차: 추세 전환 확인

【장점】
✓ Signal 선 없이 단순한 판단
✓ 추세 전환 확실성 높음
✓ 중장기 트레이딩에 적합

【단점】
⚠ 진입 시점이 다소 늦음
⚠ 초기 수익 기회 놓칠 수 있음
      `.trim();

    case 'STRATEGY_6_GRANVILLE':
      return `
[그랜빌의 법칙 전략]

▶ 200일 이동평균선을 기준으로 한 8가지 매매 법칙
▶ 조지프 그랜빌(Joseph Granville)이 제시한 고전 전략

【매수 신호 (4가지)】
1️⃣ 평균선 상향 전환 매수
   • 200일선이 하락 후 횡보/상승 전환
   • 주가가 평균선을 상향 돌파

2️⃣ 평균선 위 일시 하락 매수
   • 200일선이 상승 중
   • 주가가 일시적으로 평균선 아래로 하락
   • 평균선 지지 확인 후 매수

3️⃣ 평균선 지지 매수
   • 200일선이 상승 중
   • 주가가 평균선 위에서 하락하다가 반등
   • 평균선을 터치하지 않고 재상승

4️⃣ 급락 반등 매수 (고급)
   • 200일선이 하락 중
   • 주가가 평균선에서 크게 이탈
   • 단기 반등 기대

【매도 신호 (4가지)】
1️⃣ 평균선 하향 전환 매도
   • 200일선이 상승 후 횡보/하락 전환
   • 주가가 평균선을 하향 돌파

2️⃣ 평균선 아래 일시 상승 매도
   • 200일선이 하락 중
   • 주가가 일시적으로 평균선 위로 상승
   • 평균선 저항 확인 후 매도

3️⃣ 평균선 저항 매도
   • 200일선이 하락 중
   • 주가가 평균선 아래에서 상승하다가 하락
   • 평균선을 터치하지 않고 재하락

4️⃣ 급등 조정 매도 (고급)
   • 200일선이 상승 중
   • 주가가 평균선에서 크게 이탈
   • 단기 조정 예상

【특징】
✓ 중장기 투자에 적합
✓ 200일선은 강력한 지지/저항
✓ 추세 전환 시점 포착
⚠ 단기 변동성에 민감하지 않음
      `.trim();

    case 'STRATEGY_7_OBV':
      return `
[OBV (On Balance Volume) 전략]

▶ 거래량과 가격의 관계를 분석하는 지표
▶ 가격 상승 시 거래량 증가, 하락 시 거래량 감소가 건강한 추세

【OBV 계산 방법】
• 오늘 종가 > 어제 종가 → OBV += 오늘 거래량
• 오늘 종가 < 어제 종가 → OBV -= 오늘 거래량
• 오늘 종가 = 어제 종가 → OBV 유지

【매수 신호】
• OBV 상승 + 가격 상승
  - 거래량 증가를 동반한 건강한 상승
  - 매수 세력 유입 확인

• OBV 상승 + 가격 횡보/하락 (다이버전스)
  - 거래량은 증가하는데 가격 정체
  - 곧 가격 상승 가능성

【매도 신호】
• OBV 하락 + 가격 하락
  - 거래량 증가를 동반한 건강한 하락
  - 매도 세력 우세 확인

• OBV 하락 + 가격 횡보/상승 (다이버전스)
  - 거래량은 감소하는데 가격 상승
  - 곧 가격 하락 가능성

【해석 원칙】
✓ OBV와 가격이 같은 방향 → 추세 지속
✓ OBV와 가격이 반대 방향 → 추세 전환 임박
✓ OBV 신고점/신저점 → 강한 신호

【활용 팁】
• OBV 추세선 돌파 시 강한 신호
• 다이버전스는 조기 경고 신호
• 중장기 분석에 효과적
      `.trim();

    case 'STRATEGY_8_PSYCHOLOGICAL':
      return `
[심리선 (Psychological Line) 전략]

▶ 최근 N일 중 상승일수 비율로 과매수/과매도 판단
▶ 투자 심리 과열/위축 측정

【심리선 계산】
심리선 = (최근 12일 중 상승일수 / 12) × 100

예시:
• 12일 중 9일 상승 → 심리선 75%
• 12일 중 3일 상승 → 심리선 25%

【매수 신호】
• 심리선 < 25% (과매도)
  - 12일 중 3일 이하 상승
  - 투자 심리 극도로 위축
  - 반등 가능성 높음

• 심리선이 25% 돌파 후 상승
  - 과매도 탈출
  - 추세 전환 시작

【매도 신호】
• 심리선 > 75% (과매수)
  - 12일 중 9일 이상 상승
  - 투자 심리 극도로 과열
  - 조정 가능성 높음

• 심리선이 75% 하향 이탈
  - 과매수 탈출
  - 하락 추세 시작

【표준 해석】
• 75% 이상: 과매수 (조정 대기)
• 50~75%: 상승 추세
• 25~50%: 하락 추세
• 25% 이하: 과매도 (반등 대기)

【특징】
✓ 계산 간단하고 이해하기 쉬움
✓ 단기 과열/침체 판단에 유용
✓ Stochastic과 유사한 개념
⚠ 강한 추세장에서는 오래 극단값 유지
      `.trim();

    case 'STRATEGY_9_CHART_PATTERN':
      return `
[차트 패턴 인식 전략]

▶ 주요 차트 패턴 자동 인식
▶ 기술적 분석의 고전적 접근법

【반전 패턴 - 매수】
📈 이중 바닥 (Double Bottom)
   • W자 모양 형성
   • 두 번째 저점에서 지지
   • 네크라인 돌파 시 매수

📈 역 헤드앤숄더 (Inverse H&S)
   • 머리와 양 어깨 형성
   • 중간 저점이 가장 낮음
   • 네크라인 돌파 시 강한 매수

📈 라운딩 바텀 (Rounding Bottom)
   • 완만한 U자 곡선
   • 장기간에 걸쳐 형성
   • 중장기 상승 전환

【반전 패턴 - 매도】
📉 이중 천장 (Double Top)
   • M자 모양 형성
   • 두 번째 고점에서 저항
   • 네크라인 하향 돌파 시 매도

📉 헤드앤숄더 (Head & Shoulders)
   • 머리와 양 어깨 형성
   • 중간 고점이 가장 높음
   • 네크라인 하향 돌파 시 강한 매도

【지속 패턴】
🔺 상승 삼각형 (Ascending Triangle)
   • 상승 추세 중 휴식
   • 고점은 수평, 저점은 상승
   • 상단 돌파 시 지속 상승

🔻 하락 삼각형 (Descending Triangle)
   • 하락 추세 중 휴식
   • 저점은 수평, 고점은 하락
   • 하단 붕괴 시 지속 하락

🔹 깃발/페넌트 (Flag/Pennant)
   • 급등/급락 후 짧은 조정
   • 작은 삼각형 또는 직사각형
   • 이전 방향으로 재돌파

【목표가 설정】
• 패턴 높이만큼 추가 이동 예상
• 예: 이중바닥 높이 10% → 돌파 후 +10%

【특징】
✓ 시각적 직관성
✓ 목표가 설정 가능
✓ 중기 매매에 적합
⚠ 패턴 인식의 주관성
⚠ 완성 전 실패 가능성
      `.trim();

    case 'STRATEGY_10_CANDLE_PATTERN':
      return `
[캔들스틱 패턴 인식 전략]

▶ 일본식 캔들 차트 패턴 분석
▶ 1~3개 봉으로 단기 추세 전환 파악

【강력한 매수 패턴】
🟢 망치형 (Hammer)
   • 긴 아래 꼬리 + 작은 몸통
   • 하락 추세 끝에 출현
   • 매도 압력 → 매수 전환

🟢 샛별형 (Morning Star)
   • 3봉 패턴
   • 긴 음봉 → 작은 봉(십자) → 긴 양봉
   • 강력한 반전 신호

🟢 상승 관통형 (Piercing Pattern)
   • 2봉 패턴
   • 음봉 다음 날 갭 하락 → 양봉으로 반 이상 회복
   • 강한 매수 유입

🟢 역망치형 (Inverted Hammer)
   • 긴 위 꼬리 + 작은 몸통
   • 하락 끝에 출현
   • 상승 시도 확인

【강력한 매도 패턴】
🔴 교수형 (Hanging Man)
   • 긴 아래 꼬리 + 작은 몸통
   • 상승 추세 끝에 출현
   • 매수 약화 경고

🔴 저녁별형 (Evening Star)
   • 3봉 패턴
   • 긴 양봉 → 작은 봉(십자) → 긴 음봉
   • 강력한 하락 전환

🔴 하락 먹구름형 (Dark Cloud Cover)
   • 2봉 패턴
   • 양봉 다음 날 갭 상승 → 음봉으로 반 이상 하락
   • 강한 매도 압력

🔴 유성형 (Shooting Star)
   • 긴 위 꼬리 + 작은 몸통
   • 상승 끝에 출현
   • 저항 확인

【중립/전환 패턴】
⚪ 십자형 (Doji)
   • 시가 = 종가
   • 매수/매도 균형
   • 추세 전환 가능성

⚪ 팽이형 (Spinning Top)
   • 작은 몸통 + 긴 위아래 꼬리
   • 방향성 상실
   • 관망 필요

【활용 원칙】
✓ 추세 전환 시점에서 더 신뢰도 높음
✓ 거래량 증가 동반 시 강한 신호
✓ 여러 패턴 복합 출현 시 신뢰도 ↑
⚠ 단일 패턴만으로 판단 위험
⚠ 다른 지표와 함께 사용 권장
      `.trim();

    case 'STRATEGY_11_VOLUME':
      return `
[거래량 분석 전략]

▶ 가격과 거래량의 관계 종합 분석
▶ "거래량은 주가에 선행한다"

【건강한 상승 (매수 신호)】
📈 가격 상승 + 거래량 증가
   • 매수 세력 적극 참여
   • 상승 추세 지속 가능
   • 강한 매수 신호

📈 거래량 급증 + 가격 상승
   • 평균 거래량의 2배 이상
   • 신규 자금 대량 유입
   • 추세 시작 또는 가속

📈 거래량 돌파 (Volume Breakout)
   • 장기 횡보 후 거래량 폭발
   • 저항선 돌파
   • 새로운 상승 사이클 시작

【불건강한 상승 (경고)】
⚠️ 가격 상승 + 거래량 감소
   • 매수 동력 약화
   • 곧 조정 가능성
   • 익절 타이밍

【건강한 하락 (매도 신호)】
📉 가격 하락 + 거래량 증가
   • 매도 압력 강함
   • 하락 추세 지속 가능
   • 손절 또는 공매도 기회

📉 거래량 급증 + 가격 하락
   • 공포 매도 또는 패닉
   • 추세 가속화
   • 추가 하락 예상

【불건강한 하락 (반등 기회)】
✅ 가격 하락 + 거래량 감소
   • 매도 동력 약화
   • 하락 끝물
   • 반등 준비

【특수 패턴】
🔹 클라이맥스 (Climax)
   • 극단적 거래량 폭발
   • 급등 또는 급락 종료
   • 반전 신호

🔹 거래량 건조 (Drying Up)
   • 거래량 극도로 감소
   • 큰 변동 임박
   • 돌파 대기

【거래량 비율 기준】
• 2배 이상: 매우 높음 (강한 신호)
• 1.5~2배: 높음 (주목)
• 0.5~1.5배: 보통
• 0.5배 이하: 낮음 (신뢰도 낮음)

【활용 원칙】
✓ 가격 + 거래량 동시 분석 필수
✓ 추세 초기 거래량 폭발에 주목
✓ 거래량 감소는 추세 약화 신호
⚠ 거래량만으로는 방향 판단 불가
⚠ 가격 움직임과 종합 판단 필요
      `.trim();

    case 'TREND_STOCHASTIC':
      return `
[MACD + Stochastic Slow 전략 (추세 기반)]

▶ 정배열 조건: 추세 강도 > 0 (MA12 > MA26 > MA60)
▶ 역배열 조건: 추세 강도 < 0 (MA12 < MA26 < MA60)

【MACD 조건 ON (기본)】
• 정배열일 때: 20/50/80 모든 레벨에서 신호 발생
• 역배열일 때: 80 레벨에서만 신호 발생

【MACD 조건 OFF】
• 정배열/역배열 상관없이 모든 레벨(20/50/80)에서 신호 발생
• Stochastic Slow Only 전략과 동일하게 동작

【매수 신호 (상향 돌파)】
• Stochastic Slow 20 상향 돌파 → 1차 매수
• Stochastic Slow 50 상향 돌파 → 2차 매수
• Stochastic Slow 80 상향 돌파 → 3차 매수

【매도 신호 (하향 돌파)】
• Stochastic Slow 20 하향 돌파 → 1차 매도
• Stochastic Slow 50 하향 돌파 → 2차 매도
• Stochastic Slow 80 하향 돌파 → 3차 매도

※ 돌파 판단: 이전 캔들 대비 교차로 판단
※ MACD 조건 ON/OFF로 추세 적용 여부 설정 가능
      `.trim();

    case 'TREND_STOCHASTIC_CCI':
      return `
[CCI + Stochastic Slow 전략 (CCI 기반)]

▶ CCI 상승추세: CCI > 0 (매수세 우위)
▶ CCI 하락추세: CCI < 0 (매도세 우위)

【CCI 조건 ON (기본)】
• CCI > 0일 때: 20/50/80 모든 레벨에서 신호 발생
• CCI < 0일 때: 80 레벨에서만 신호 발생

【CCI 조건 OFF】
• CCI 상태와 무관하게 모든 레벨(20/50/80)에서 신호 발생
• Stochastic Slow Only 전략과 동일하게 동작

【매수 신호 (상향 돌파)】
• Stochastic Slow 20 상향 돌파 → 1차 매수
• Stochastic Slow 50 상향 돌파 → 2차 매수
• Stochastic Slow 80 상향 돌파 → 3차 매수

【매도 신호 (하향 돌파)】
• Stochastic Slow 20 하향 돌파 → 1차 매도
• Stochastic Slow 50 하향 돌파 → 2차 매도
• Stochastic Slow 80 하향 돌파 → 3차 매도

【CCI vs MACD 차이점】
• CCI: 현재 가격이 평균에서 얼마나 벗어났는지 측정 (단기 민감)
• MACD: 이동평균선의 수렴/발산을 측정 (추세 지속성)
• CCI가 더 빠른 추세 변화 감지, MACD는 더 안정적

※ CCI 파라미터는 설정 > 보조지표 설정에서 조정 가능
      `.trim();

    case 'STOCHASTIC_ONLY':
      return `
[Stochastic Slow Only 전략]

▶ 정배열/역배열 무관: 추세 상태와 상관없이 Stochastic만으로 매매
▶ Stochastic Slow %K 값 기준으로 레벨 돌파 시 신호 발생

【매수 신호 (상향 돌파)】
• Stochastic 20 상향 돌파 → 1차 매수 (33%)
• Stochastic 50 상향 돌파 → 2차 매수 (33%)
• Stochastic 80 상향 돌파 → 3차 매수 (34%)

【매도 신호 (하향 돌파)】
• Stochastic 20 하향 돌파 → 1차 매도 (33%)
• Stochastic 50 하향 돌파 → 2차 매도 (33%)
• Stochastic 80 하향 돌파 → 3차 매도 (34%)

【특징】
✓ MACD, 정배열/역배열 조건 없이 순수 Stochastic만 사용
✓ 분할 매수/매도로 평균 단가 조정
✓ 단순하고 기계적인 매매로 감정 개입 최소화
✓ 횡보장에서도 레벨 돌파 시 신호 발생

※ 돌파 판단: 이전 캔들 K값과 비교하여 레벨 교차 여부 확인
      `.trim();

    case 'INTEGRATED_INDICATOR':
      return `
[통합지표 전략]

▶ 모든 보조지표를 개별적으로 on/off 할 수 있는 유연한 전략
▶ 각 지표별 파라미터를 세밀하게 조정 가능

【사용 가능한 보조지표】
📈 이평선 (MA): 12/26/60일 이동평균선 정배열/역배열 판단
📊 MACD: 골든/데드 크로스 및 0선 돌파
📉 Stochastic Slow: 과매수/과매도 및 레벨 돌파
💹 RSI: 상대강도지수 과매수/과매도
📐 CCI: 상품채널지수 과매수/과매도
🔺 ADX: 추세 강도 판단

【매수 조건 설정】
• ALL (모두): 활성화된 모든 지표가 매수 신호일 때
• ANY (하나라도): 하나의 지표라도 매수 신호일 때
• MAJORITY (과반수): 과반수 이상 지표가 매수 신호일 때

【매도 조건 설정】
• ALL (모두): 활성화된 모든 지표가 매도 신호일 때
• ANY (하나라도): 하나의 지표라도 매도 신호일 때
• MAJORITY (과반수): 과반수 이상 지표가 매도 신호일 때

【특징】
✓ 지표별 개별 on/off로 맞춤형 전략 구성
✓ 각 지표의 파라미터를 세밀하게 조정 가능
✓ 매매 조건을 유연하게 설정 (모두/하나라도/과반수)
✓ 다양한 시장 상황에 적응 가능

※ 각 지표 옆의 ⚙️ 버튼을 클릭하여 상세 파라미터 설정
      `.trim();

    default:
      return '';
  }
};

/**
 * TREND_STOCHASTIC 전략 상세 설명 (하위 호환성 유지)
 */
export const getTrendStochasticDetailedDescription = (): string => {
  return getStrategyDetailedDescription('TREND_STOCHASTIC');
};

/**
 * 🆕 기본 전략 초기화 (모든 기본 전략 생성)
 */
export const initializeDefaultStrategies = async (): Promise<any> => {
  const response = await axios.post(`${API_BASE_URL}/strategies/initialize`);
  return response.data;
};

/**
 * 🆕 누락된 전략 추가 (기존 전략 유지)
 */
export const addMissingStrategies = async (): Promise<any> => {
  const response = await axios.post(`${API_BASE_URL}/strategies/add-missing`);
  return response.data;
};

