.....
This commit is contained in:
@@ -373,18 +373,15 @@ class TechnicalAnalyzer {
|
||||
|
||||
// 🌟 2. 3가지 핵심 조건 분리
|
||||
val isPriceDropped = currentDropRate <= -dropThreshold
|
||||
// 조건 A: 가격이 통계적 하락폭만큼 충분히 빠졌는가?
|
||||
|
||||
val isPastMinTime = daysSincePeak >= (avgReboundTerm - timeTolerance)
|
||||
// 조건 B: 반등 '최소' 기간을 채웠는가? (떨어지는 칼날을 너무 일찍 잡는 것 방지)
|
||||
|
||||
val isWithinMaxTime = daysSincePeak <= (avgReboundTerm + (timeTolerance * 2))
|
||||
// 조건 C: 반등 '최대' 기간을 넘기지 않았는가? (죽은 주식처럼 너무 오래 횡보하는 것 방지)
|
||||
// 최대 기간 조건은 참고용으로 남겨두되 매수 차단 로직에서는 제외합니다.
|
||||
// val isWithinMaxTime = daysSincePeak <= (avgReboundTerm + (timeTolerance * 2))
|
||||
|
||||
// 🌟 3. 3개 중 2개 이상 만족 시 반등 임박(Approaching)으로 판단
|
||||
val passedConditions = listOf(isPriceDropped, isPastMinTime, isWithinMaxTime).count { it }
|
||||
//A. 진입 하락률 기준checkReboundApproaching 3개 중 2개 만족 시 통과 가격 하락 조건(isPriceDropped)을 필수 조건(AND)으로 고정
|
||||
return passedConditions > 2
|
||||
// 🌟 3. 현실적인 타점 판별 (필수 2가지만 강력하게 요구)
|
||||
// 필수 1: 가격이 통계적 하락폭만큼 충분히 빠졌는가? (눌림목 대전제)
|
||||
// 필수 2: 최소한의 반등 준비 기간(평균 기간 - 오차)은 지났는가? (떨어지는 칼날 방지)
|
||||
return isPriceDropped && isPastMinTime
|
||||
}
|
||||
|
||||
fun calculateMFI(candles: List<CandleData>, period: Int = 14): Double {
|
||||
|
||||
Reference in New Issue
Block a user