커뮤니티

사용자 함수 에러를 잡아주세요

프로필 이미지
고도산
2025-04-18 16:05:17
196
글번호 190253
답변완료
tradingview에서 parabolic RSI라는 지표를 YT로 변환중 _pine_sar라는 함수를 작성하는데 '문법에러, 잘못된 토큰,'<File End>'라는 에러를 만났는데 도대체 무슨 말인지 모르겠네요. 제가 작성한 함수는 다음과 같습니다. input: src(NumericSeries),start(Numeric),inc(Numeric),max1(Numeric),len(numeric); var: src_high(0),src_low(0); var: result(NaN); var: maxMin(Nan); var: acceleration(Nan); var: isBelow(0),isFirstTrendBar(false); src_high = src+1; src_low = src-1; if barindex <= len+2 Then { if src > src[1] Then { isBelow = 1; maxMin = src_high; result = src_low[1]; } else { isBelow = 0; maxMin = src_low; result = src_high[1]; } isFirstTrendBar = true; acceleration = start; } result = result + acceleration * (maxMin - result); if isBelow==1 Then { if result > src_low Then { isFirstTrendBar = true; isBelow = 0; result = max(src_high, maxMin); maxMin = src_low; acceleration = start; } else { if result < src_high Then { isFirstTrendBar = true; isBelow = 1; result = min(src_low, maxMin); maxMin = src_high; acceleration = start; } if isFirstTrendBar==False Then { if isBelow==1 Then { if src_high > maxMin Then { maxMin = src_high; acceleration = min(acceleration + inc, max1); } else { if src_low < maxMin Then { maxMin = src_low; acceleration = min(acceleration + inc, max1); } } } if isBelow==1 Then { result = min(result, src_low[1]); if barindex > 1 Then { result = min(result, src_low[2]); } } else { result = max(result, src_high[1]); if barindex > 1 Then{ result = max(result, src_high[2]); } } _pine_sar = numToStr(result,2) + ";" + numToStr(isBelow,0);
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-04-18 16:16:13

안녕하세요 예스스탁입니다. 작성하신 수식에 중괄호 {}의 짝이 맞지 않아 수정했습니다. 또한 작성하신 내용에서는 반환값이 문자열입니다. 함수명 : _pine_sar 반환값형 : 문자열형 input: src(NumericSeries),start(Numeric),inc(Numeric),max1(Numeric),len(numeric); var: src_high(0),src_low(0); var: result(NaN); var: maxMin(Nan); var: acceleration(Nan); var: isBelow(0),isFirstTrendBar(false); src_high = src+1; src_low = src-1; if barindex <= len+2 Then { if src > src[1] Then { isBelow = 1; maxMin = src_high; result = src_low[1]; } else { isBelow = 0; maxMin = src_low; result = src_high[1]; } isFirstTrendBar = true; acceleration = start; } result = result + acceleration * (maxMin - result); if isBelow==1 Then { if result > src_low Then { isFirstTrendBar = true; isBelow = 0; result = max(src_high, maxMin); maxMin = src_low; acceleration = start; } } else { if result < src_high Then { isFirstTrendBar = true; isBelow = 1; result = min(src_low, maxMin); maxMin = src_high; acceleration = start; } } if isFirstTrendBar==False Then { if isBelow==1 Then { if src_high > maxMin Then { maxMin = src_high; acceleration = min(acceleration + inc, max1); } } else { if src_low < maxMin Then { maxMin = src_low; acceleration = min(acceleration + inc, max1); } } } if isBelow==1 Then { result = min(result, src_low[1]); if barindex > 1 Then { result = min(result, src_low[2]); } } else { result = max(result, src_high[1]); if barindex > 1 Then { result = max(result, src_high[2]); } } _pine_sar = numToStr(result,2) + ";" + numToStr(isBelow,0); 즐거운 하루되세요 > 고도산 님이 쓴 글입니다. > 제목 : 사용자 함수 에러를 잡아주세요 > tradingview에서 parabolic RSI라는 지표를 YT로 변환중 _pine_sar라는 함수를 작성하는데 '문법에러, 잘못된 토큰,'<File End>'라는 에러를 만났는데 도대체 무슨 말인지 모르겠네요. 제가 작성한 함수는 다음과 같습니다. input: src(NumericSeries),start(Numeric),inc(Numeric),max1(Numeric),len(numeric); var: src_high(0),src_low(0); var: result(NaN); var: maxMin(Nan); var: acceleration(Nan); var: isBelow(0),isFirstTrendBar(false); src_high = src+1; src_low = src-1; if barindex <= len+2 Then { if src > src[1] Then { isBelow = 1; maxMin = src_high; result = src_low[1]; } else { isBelow = 0; maxMin = src_low; result = src_high[1]; } isFirstTrendBar = true; acceleration = start; } result = result + acceleration * (maxMin - result); if isBelow==1 Then { if result > src_low Then { isFirstTrendBar = true; isBelow = 0; result = max(src_high, maxMin); maxMin = src_low; acceleration = start; } else { if result < src_high Then { isFirstTrendBar = true; isBelow = 1; result = min(src_low, maxMin); maxMin = src_high; acceleration = start; } if isFirstTrendBar==False Then { if isBelow==1 Then { if src_high > maxMin Then { maxMin = src_high; acceleration = min(acceleration + inc, max1); } else { if src_low < maxMin Then { maxMin = src_low; acceleration = min(acceleration + inc, max1); } } } if isBelow==1 Then { result = min(result, src_low[1]); if barindex > 1 Then { result = min(result, src_low[2]); } } else { result = max(result, src_high[1]); if barindex > 1 Then{ result = max(result, src_high[2]); } } _pine_sar = numToStr(result,2) + ";" + numToStr(isBelow,0);