커뮤니티

array함수를 이용한 지표 만드는데 벽에 부딪쳤네요.

프로필 이미지
쪼꼬아빠
2025-01-05 02:14:23
478
글번호 186879
답변완료
// 고점, 저점, 피보나치 레벨 계산 HighQ = Highest(C, Period); LowQ = Lowest(C, Period); Range = HighQ - LowQ; // 피보나치 레벨 (절대값) FiboLevels = Range * array.from(0.236, 0.382, 0.5, 0.618, 0.786); // 볼린저 밴드 계산 UpperBand = avg(C, Period) + K * STDEV(C, Period); LowerBand = avg(C, Period) - K * STDEV(C, Period); // 현재 주가와 가장 가까운 피보나치 레벨 찾기 NearestFiboLevel = array.min(array.from(abs(C - FiboLevels))); NearestFiboIndex = array.indexOf(NearestFiboLevel, array.from(abs(C - FiboLevels))); // 현재 주가의 상대적 위치 (0~100) CurrentPosition = (C - (LowQ + NearestFiboLevels[NearestFiboIndex])) / Range * 100; 위와같은 지표를 만들고 있습니다. array.from과 array.min과 특히 array.indexOf()함수는 예스에 맞게 어떻게 고쳐야 하나요?
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-01-07 13:20:41

안녕하세요 예스스탁입니다. 1 예스랭귀지에는 해당 배열관련 함수가 제공되지 않습니다. 아래식 참고하시기 바랍니다. input : Period(20),k(2); var : HighQ(0),LowQ(0),Range(0),UpperBand(0),LowerBand(0),i(0); var : NearestFiboLevel(0),NearestFiboIndex(0),CurrentPosition(0); Array : FiboLevels[5](0); // 고점, 저점, 피보나치 레벨 계산 HighQ = Highest(C, Period); LowQ = Lowest(C, Period); Range = HighQ - LowQ; // 피보나치 레벨 (절대값) FiboLevels[0] = LowQ+Range*0.236; FiboLevels[1] = LowQ+Range*0.382; FiboLevels[2] = LowQ+Range*0.500; FiboLevels[3] = LowQ+Range*0.618; FiboLevels[4] = LowQ+Range*0.786; // 볼린저 밴드 계산 UpperBand = ma(C, Period) + K * STD(C, Period); LowerBand = ma(C, Period) - K * STD(C, Period); // 현재 주가와 가장 가까운 피보나치 레벨 찾기 NearestFiboLevel = -1; NearestFiboIndex = -1; For i = 0 to 4 { if NearestFiboLevel < 0 or (NearestFiboLevel >= 0 and NearestFiboLevel < abs(C - FiboLevels[i])) Then { NearestFiboLevel = abs(C-FiboLevels[i]); NearestFiboIndex = i; } } CurrentPosition = (C - (LowQ + FiboLevels[NearestFiboIndex])) / Range * 100; 2 예스랭귀지에서 단순평균은 ma함수를 이용합니다. avg는 나열된 값들의 평균을 구할때 사용합니다. 표준편차도 std입니다. 즐거운 하루되세요 > 쪼꼬아빠 님이 쓴 글입니다. > 제목 : array함수를 이용한 지표 만드는데 벽에 부딪쳤네요. > // 고점, 저점, 피보나치 레벨 계산 HighQ = Highest(C, Period); LowQ = Lowest(C, Period); Range = HighQ - LowQ; // 피보나치 레벨 (절대값) FiboLevels = Range * array.from(0.236, 0.382, 0.5, 0.618, 0.786); // 볼린저 밴드 계산 UpperBand = avg(C, Period) + K * STDEV(C, Period); LowerBand = avg(C, Period) - K * STDEV(C, Period); // 현재 주가와 가장 가까운 피보나치 레벨 찾기 NearestFiboLevel = array.min(array.from(abs(C - FiboLevels))); NearestFiboIndex = array.indexOf(NearestFiboLevel, array.from(abs(C - FiboLevels))); // 현재 주가의 상대적 위치 (0~100) CurrentPosition = (C - (LowQ + NearestFiboLevels[NearestFiboIndex])) / Range * 100; 위와같은 지표를 만들고 있습니다. array.from과 array.min과 특히 array.indexOf()함수는 예스에 맞게 어떻게 고쳐야 하나요?