예스스탁
예스스탁 답변
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()함수는 예스에 맞게 어떻게 고쳐야 하나요?