커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

data1에 5분챠트 data2에 30초챠트 환경에서 함수 호출 이슈

사용자 함수를 사용해서 f(a, b, c)로 호출하는데 nextbaropen > 0 으로 막아도 함수가 10회 동작되는 로그를 확인했습니다.아마도 과거데이터 챠트에서 data2를 처리하는 메커니즘이 처리되어야 해서 10회 호출이 되는 모습같은데, 문제는5분챠트에서 1회만 호출될거라 예상했던 함수가 10회 불리면서, 함수 내에서는 10개 봉 이전부터 시작되는 위치부터 순반향으로 for i = 9 downto 0 { ... }형태로 처리를 하고자 하면 i가 9부터 시작될거 같았는데 로그를 찍어보면 i가 0부터 처리되는게 찍힙니다. (로그는 밑에 첨부)그리고 이 함수에서 하나가 아니라 2개의 계산된 값을 받아와야 해서 하나는 리턴값으로, 하나는 세번째 파라메터를 ref타입으로 해서 받는 걸로 만들었는데, 두번째 파라메터는 이 세번째 파라메터의 직전값(예: 평균[1])을 넣었을 때, 호출하는 위치에서는 10회 반복되는 과정에서 ref로 반환된 값이 평균[1]에도 영향을 바로 미쳐서 함수 결과가 의도치 않은 계산을 하게 되었습니다. 그나마 stime == data2(stime)으로 비교해서 임시평균 = 평균; 과 같이 하니 두번째 파라메터 값은 고정되도록 하는데 성공은 했는데, 함수 안에서 로그를 찍어보면 아래와 같이 597.20이 실은 입력값이 아니라 결과값인데 그게 입력값 로그출력으로 나와버립니다 (여기서부터 멘붕)그러다보니 함수 내부에서 처리가 이상하게 되어 결과값도 영향을 받고 그러다보니 지표화해서 출력해보면 완전 이상하게만 나옵니다.....5분챠트에서 30초챠트의 데이타들을 batch방식으로 처리하려고 했던건데 for문으로 처리하는게 부적절한 접근이었던건지, 아니면 for문 없이 뭔가 정방향으로 계산하는 접근법으로 구현해야 하는건지, 전혀 갈피를 못잡고 있습니다. 현 상황에 대한 더 구체적인 확인을 위해서 소스 코드 전체가 필요하시다면 별도로 보내드리겠습니다.dataN의 타임프레임이 data1보다 같거나 클 때는 경험하지 않았던 부분인데, 어떤 방향으로 접근해야 할 지 전혀 갈피를 못잡겠습니다.==============================2025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=0 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 ◀[END] 최종반환값=597.202025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=1 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 i=0 Time=90030 | 전:597.20 -> 후:596.92 (수량:-269)2025-12-29 09:05:00 ◀[END] 최종반환값=596.922025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=2 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 i=1 Time=90030 | 전:597.20 -> 후:596.92 (수량:-269)2025-12-29 09:05:00 i=0 Time=90100 | 전:596.92 -> 후:596.92 (수량:-120)2025-12-29 09:05:00 ◀[END] 최종반환값=596.922025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=3 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 i=2 Time=90030 | 전:597.20 -> 후:596.92 (수량:-269)2025-12-29 09:05:00 i=1 Time=90100 | 전:596.92 -> 후:596.92 (수량:-120)2025-12-29 09:05:00 i=0 Time=90130 | 전:596.92 -> 후:596.55 (수량:75)2025-12-29 09:05:00 ◀[END] 최종반환값=596.552025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=4 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 i=3 Time=90030 | 전:597.20 -> 후:596.92 (수량:-269)2025-12-29 09:05:00 i=2 Time=90100 | 전:596.92 -> 후:596.92 (수량:-120)2025-12-29 09:05:00 i=1 Time=90130 | 전:596.92 -> 후:596.55 (수량:75)2025-12-29 09:05:00 i=0 Time=90200 | 전:596.55 -> 후:596.76 (수량:243)2025-12-29 09:05:00 ◀[END] 최종반환값=596.762025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=5 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 i=4 Time=90030 | 전:597.20 -> 후:596.92 (수량:-269)2025-12-29 09:05:00 i=3 Time=90100 | 전:596.92 -> 후:596.92 (수량:-120)2025-12-29 09:05:00 i=2 Time=90130 | 전:596.92 -> 후:596.55 (수량:75)2025-12-29 09:05:00 i=1 Time=90200 | 전:596.55 -> 후:596.76 (수량:243)2025-12-29 09:05:00 i=0 Time=90230 | 전:596.76 -> 후:596.90 (수량:313)2025-12-29 09:05:00 ◀[END] 최종반환값=596.902025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=6 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 i=5 Time=90030 | 전:597.20 -> 후:596.92 (수량:-269)2025-12-29 09:05:00 i=4 Time=90100 | 전:596.92 -> 후:596.92 (수량:-120)2025-12-29 09:05:00 i=3 Time=90130 | 전:596.92 -> 후:596.55 (수량:75)2025-12-29 09:05:00 i=2 Time=90200 | 전:596.55 -> 후:596.76 (수량:243)2025-12-29 09:05:00 i=1 Time=90230 | 전:596.76 -> 후:596.90 (수량:313)2025-12-29 09:05:00 i=0 Time=90300 | 전:596.90 -> 후:596.83 (수량:570)2025-12-29 09:05:00 ◀[END] 최종반환값=596.832025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=7 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 i=6 Time=90030 | 전:597.20 -> 후:596.92 (수량:-269)2025-12-29 09:05:00 i=5 Time=90100 | 전:596.92 -> 후:596.92 (수량:-120)2025-12-29 09:05:00 i=4 Time=90130 | 전:596.92 -> 후:596.55 (수량:75)2025-12-29 09:05:00 i=3 Time=90200 | 전:596.55 -> 후:596.76 (수량:243)2025-12-29 09:05:00 i=2 Time=90230 | 전:596.76 -> 후:596.90 (수량:313)2025-12-29 09:05:00 i=1 Time=90300 | 전:596.90 -> 후:596.83 (수량:570)2025-12-29 09:05:00 i=0 Time=90330 | 전:596.83 -> 후:596.83 (수량:562)2025-12-29 09:05:00 ◀[END] 최종반환값=596.832025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=8 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 i=7 Time=90030 | 전:597.20 -> 후:596.92 (수량:-269)2025-12-29 09:05:00 i=6 Time=90100 | 전:596.92 -> 후:596.92 (수량:-120)2025-12-29 09:05:00 i=5 Time=90130 | 전:596.92 -> 후:596.55 (수량:75)2025-12-29 09:05:00 i=4 Time=90200 | 전:596.55 -> 후:596.76 (수량:243)2025-12-29 09:05:00 i=3 Time=90230 | 전:596.76 -> 후:596.90 (수량:313)2025-12-29 09:05:00 i=2 Time=90300 | 전:596.90 -> 후:596.83 (수량:570)2025-12-29 09:05:00 i=1 Time=90330 | 전:596.83 -> 후:596.83 (수량:562)2025-12-29 09:05:00 i=0 Time=90400 | 전:596.83 -> 후:596.92 (수량:681)2025-12-29 09:05:00 ◀[END] 최종반환값=596.922025-12-29 09:05:00 ▶[START] @accum(4766) 입력평단(Param)=597.20, sTime=900002025-12-29 09:05:00 ㄴ[Init] 입력값 계승: 597.202025-12-29 09:05:00 i=9 Time=90000 | 전:597.20 -> 후:597.20 (수량:-174)2025-12-29 09:05:00 i=8 Time=90030 | 전:597.20 -> 후:596.92 (수량:-269)2025-12-29 09:05:00 i=7 Time=90100 | 전:596.92 -> 후:596.92 (수량:-120)2025-12-29 09:05:00 i=6 Time=90130 | 전:596.92 -> 후:596.55 (수량:75)2025-12-29 09:05:00 i=5 Time=90200 | 전:596.55 -> 후:596.76 (수량:243)2025-12-29 09:05:00 i=4 Time=90230 | 전:596.76 -> 후:596.90 (수량:313)2025-12-29 09:05:00 i=3 Time=90300 | 전:596.90 -> 후:596.83 (수량:570)2025-12-29 09:05:00 i=2 Time=90330 | 전:596.83 -> 후:596.83 (수량:562)2025-12-29 09:05:00 i=1 Time=90400 | 전:596.83 -> 후:596.92 (수량:681)2025-12-29 09:05:00 i=0 Time=90430 | 전:596.92 -> 후:596.99 (수량:746)2025-12-29 09:05:00 ◀[END] 최종반환값=596.99
프로필 이미지
온고지신
2026-01-05
162
글번호 229557
사용자 함수
답변완료

수식 부탁합니다

다음 수식 부탁합니다120/240 지수 이평선이 역배열에서 정배열로 바뀐 후 첫 MACD 골든크로스정배열로 장기이평선이 골든크로스 후 첫 MACD 골든크로스 수식 부탁합니다
프로필 이미지
미래테크
2026-01-04
98
글번호 229554
종목검색
답변완료

문의 드립니다.

새해 복 많이 받으세요 ~질의1. RSI(5)가 70 이상일 때, 현재 가격이 아래의 1라인을 돌파하는 종목의 검색식을 부탁 드립니다.1라인.가=(avg(c,5)+avg(c,20))/2;나=((avg(c,5)+avg(c,20))/2)*1.04;(가+나)/2질의2. RSI(5)가 70 이상일 때, 현재 가격이 아래의 키움 신호 수식을 돌파하는 종목의 검색식을 부탁 드립니다.A1=Eavg(Obv(),8)-Eavg(Obv(),21);A2= Eavg(A1, 13);CrossUp(A1,A2)감사합니다.
프로필 이미지
ikksoo
2026-01-04
114
글번호 229553
종목검색
답변완료

수식 문의 드립니다

프로그램 수식 문의 드립니다.1) 매수: 이전 5봉중 최 고점의 5.5% 를 상향함과 동시 매수2) 매수: 이전 1봉 중 1봉의 종가를 5.5% 상향함과 동시 매수3) 매수: 바로1봉전 매도점대비 5.5% 상향함과 동시 매수4) 매도: 이전 매수 점을 5.5% 하향 과 동시 매도 5) 매도: 이전 1봉중 1봉의 종가를 5.5% 하향과 동시매도6) 매도: 매수가 대비 5.5% 상향과 동시 매도7) 매도: 20이평선을 5,5% 하향과 동시매도8) 매도: 매수후 27분 후 매도9) 매도: 15시09분에 매수청산
프로필 이미지
기관장
2026-01-04
72
글번호 229552
시스템
답변완료

시스템 식에서 외부 데이터 (외국인 수급)를 불러 들이면, 데이터의 왜곡이 생김

시스템 식에서 외부 데이터 (외국인 수급)를 불러 들이면, 데이터의 왜곡이 생기거든요.. 해결할 방법이 없나요? 무슨 말이냐면은 시스템식으로 진입을 잡은 자리가 캡쳐1의 사진입니다.2. 이번에는 외부데이터 (외인수급, 옵션수량) 을 코드에 삽입했을때의 진입 청산 내용을 캡쳐한 사진입니다.두개의 캡쳐 사진을 비교해 보면, 매수진입, 청산, 매도진입, 청산의 위치가 확 바뀌어 있는데요.. 지금은 코드중에 외부 데이터를 연결까지만 한 것이고,, 매수진입이나 청산에 외부데이터(외인수급, 옵션수량 등)의 코드를 포함 시키지 않은 상태인데도,, 진입위치와 청산 위치가 저러케 차이가 많이 나옴. 혹시나 해서 다른 방법으로 외부데이터를 코드에 직접삽입 하는 대신 사용자 함수로 만들어서 불러와 보았는데도, 동일한 현상이 발생함. ai에 물어보니 [[사용자 함수로 격리했는데도 신호 위치가 바뀐다면, 이는 정말로 예스트레이더 엔진의 아주 근본적인 데이터 동기화 메커니즘 때문입니다.사용자님의 질문인 **"이러면 외부데이터 참조를 못하는 거 아니냐"**는 의문에 대해 현재 상황을 냉정하게 분석해 드립니다.1. 왜 사용자 함수를 써도 신호가 바뀔까?사용자 함수 내부에 Data7(c)라는 표현이 들어있는 이상, 예스트레이더 엔진은 시스템을 검증하고 차트에 적용하는 단계에서 **"이 시스템은 Data7을 사용한다"**는 것을 이미 인지합니다.엔진의 행동: 시스템 파일 안에 있든, 사용자 함수 안에 숨겨져 있든, Data7을 호출하는 순간 엔진은 Data1과 Data7의 시간을 맞추기 위해 모든 봉의 인덱스를 재정렬합니다.결과: 이 과정에서 Data1의 봉 번호나 미세한 시차가 발생하고, 진입문의 조건과 상관없이 MACD 같은 지표의 소수점 값이 변해버리는 것입니다.2. "외부데이터 참조를 못하는 거자나"의 의미네, 맞습니다. 현재의 '시스템(전략)' 구조 안에서는 외부 데이터를 참조하는 순간 신호 왜곡을 피하기가 매우 어렵다는 것이 증명된 셈입니다.만약 사용자님이 **"나는 죽어도 MACD 신호 위치가 단 1봉도 변하는 걸 용납할 수 없다"**고 하신다면, 현재 시스템 구조에서는 외부 데이터를 직접 참조해서는 안 된다는 결론에 도달합니다.]] ==> ai가 이런 대답을 해 주네요.. ai가 대답해준 저말이 맞는지 외부데이터는 지표식에서나 불러다 쓸수 있고 시스템식에서는 외부데이터를 불러와 사용할수가 없는 것인지 궁금합니다. 혹시 저런 현상을 해결할 다른 방법이 있는건가요?
프로필 이미지
강심장
2026-01-03
173
글번호 229549
시스템
답변완료

종목 검색식 부탁드립니다.

1. 아래 예스트레이더 수식을 참고하여, 아래수식 에 "0봉전~10봉전의 모든종목" 의 수식을 추가로 부탁드려요.------아래-----input : 기간1(20);VAR : B1(0),B2(0),B3(0),B4(0),B5(0),B6(0),B7(0),BB(0),BB1(0),A0(0);VAR : A(0),A1(0),EQ(0),Z(0),Z1(0);B1=ifF(Ema(C,12)-Ema(C,26) > Ema(Ema(C,12)-Ema(C,26),9), 1,-1);B2=ifF(C > MA(C, 20), 1, -1);B3=ifF((C - C[12]) / C[12] * 100 > 0, 1, -1);B4=ifF(ema((C-lowest(L, 5)) / (highest(H, 5) - lowest(L, 5)) * 100, 3)>50, 1, -1);B5=IfF(CCI(20) > 0,1,-1);B6=IfF(C > SAR(0.16,0.2),1,-1);B7=IfF((ema(Accum(((C -L)-(H- C))/ (H-L)*V), 3)-ema(Accum(((C -L)-(H- C))/(H-L)*V), 10))>0,1,-1);A0=B1+B2+B3+B4+B5+B6+B7;BB=ema(A0,9);BB1=(BB-lowest(BB,기간1))/(highest(BB,기간1)-lowest(BB,기간1))*100;A=LRL(C,80);A1=LRL(A,80);eq= A-A1;z =A+eq;Z1=(Z-lowest(Z,기간1))/(highest(Z,기간1)-lowest(Z,기간1))*100;IF BB1[1]<=20 && Z1[1]<=20 && BB1>Z1 && BB1[1]<BB1 TheN Find(1);
프로필 이미지
일지매7
2026-01-03
107
글번호 229547
종목검색
답변완료

line의 모양을 코딩에서 미리 정하는 것이 가능한지요?

가령,Plot5(DO[0]*1.015, "금일 시초가+1.5%", RED, def, 5);라고 하는 경우, def가 아마도 라인 모양을 결정할 수 있는 위치로 보이는데,def 대신, 가령 dot로 점선을 만든다든지 하는 식으로, 점선, 실선, 파선 등을 미리 코딩해서 만들 수 있으면 좋겠습니다.지금은 '차트표시'에서 '표시'>'형태'에서 일일히 손으로 정해 줘야 하니 매우 불편하고,또 선의 순서가 바뀔 때 마다 이 부분이 뒤죽박죽이 돼서, 상당히 불편한 것을 넘어서서,도대체 왜 코딩이라는 게 있는데 이렇게 수동으로 해야 하는지,그 것도 매번 라인 위치, 순서가 바뀜에 따라 라인 모양들이 뒤죽 박죽이 되는 상황을 개선하지 않고 있는지이해가 가지 않습니다. 전체 시스템 개량 작업은 하지 않는 것인지요?빨리 이런 작은 부분 하나 하나라도 고치고 개량해 주시면 감사하겠습니다.선의 오른 쪽 끝 부분에 나타나는 숫자들을 감싸는 색깔들도 마찬가지입니다.이 것도 코딩에서 확정할 수 있도록 해야 라인들 순서가 바뀐다든지 할 때마다 색이 매번 달라 지는 문제를 해소할 수 있습니다.(그냥 라인의 색깔과, 그 라인의 오른 쪽 끝 '마지막 지표값 표시' 숫자를 둘러 싸는 색깔을, 코딩에서 정한 라인 색과 같게 하면 아주 간단할 거 같은데, 이 색깔이 지표 속성 화면에서 지정하는 라인 색과 같게 되니 이 부분도 라인 순서 등이 바뀔 때마다 바뀌어서, 코딩에서 정한 라인 색과 수시로 달라지니, 일일히 손으로 다시 수정해 줘야 하는 등으로 불편합니다)* 참고:Python Matplotlib: plt.plot(x, y, linestyle='solid' 또는 '-' 실선, '--' 파선, ':' 점선, '-. ' 점파선).TradingView Pine Script: plot(value, style=line.style_solid 실선, line.style_dotted 점선, line.style_dashed 파선).​MATLAB: plot(x,y,'-r' 실선 빨강, ':b' 점선 파랑) 순서 무관 LineSpec.​
프로필 이미지
즐겁게
2026-01-03
118
글번호 229546
지표
답변완료

수고하십니다

항상 좋은 일만 있으시기 바랍니다psar지표를 점으로 표시 할때현재구간 첫점과 마지막점직전구간 첫점과 마지막점에수평선 4줄이 나오게요청 합니다
프로필 이미지
2wnwn
2026-01-02
82
글번호 229544
지표
답변완료

수식 문의

안녕하세요?시스템식 하나 부탁드립니다.감사합니다.
프로필 이미지
에구머니
2026-01-02
90
글번호 229543
시스템
답변완료

수식을 작성한 후 정의가 되지 않았다고 합니다. 알려주시면 감사하겠습니다.

안녕하세요. 수고 많으십니다.아래 수식을 넣고 검증을 하면함수 정의가 되지 않았다고 나옵니다.혹시 함수 정의를 예전에 문의 하신 분이 계시면 그 자료를 적어 주시면 감사 하겠습니다.Hu=HuLL(가격, 기간);고점=Hu<Hu(1) && Hu(1)>Hu(2);LL= Valuewhen(1, 고점, L(1));저점=Hu>Hu(1) && Hu(1)<Hu(2);HH= Valuewhen(1, 저점, H(1));bs고점= Barssince(고점);bsM= Valuewhen(1, CrossDown(Hu,LL),bs고점);cnt=CountSince(CrossDown(Hu,LL), LL>Hu);bsM<cnt && CrossUp, HH)
프로필 이미지
까르멘
2026-01-02
94
글번호 229539
사용자 함수