커뮤니티

수식 재문의

프로필 이미지
에구머니
2026-03-05 00:48:53
171
글번호 230904
답변완료

첨부 이미지

안녕하세요?


230869 번에 대한 재문의 입니다.


여전히 장초반에 Atr 값이 엄청 왜곡됩니다.


문제는 9시 5분에 Data2의 첫 봉이 완성되므로, 여기서 벌써 abs(Price - Price[1]) 이 그려지면 안되는데, 여기서부터 그려지는게 문제입니다.


2번째 봉이 완성되는 9시 10분에 최초로 abs(Price - Price[1]) 이 값이 계산되어야 합니다.

// 여기서 Price = Data2(C) = KP 외국인 금액




테스트용으로 아래의 세팅하에 원활히 작동되면 좋겠습니다.


5분봉

Data1 = 코스피 선물

Data2 = KP 외국인 금액


var1 = Data2(C);


에 대해서, mdayAtr2(var1, 14) 가 제대로 그려지는 것이 목표입니다.


감사합니다.



사용자 함수
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2026-03-05 13:09:36

전화주시기 바랍니다. 02-3453-1060

프로필 이미지

예스스탁 예스스탁 답변

2026-03-05 14:09:03

안녕하세요 예스스탁입니다. 1 var1 = Data2(C); mdayAtr2(var1, 14) 위와 같은 형태는 함수의 기준값은 data2의 종가를 사용하지만 함수의 계산이 data2 봉을 기준으로 초기화가 되거나 하는 내용이 아닙니다. data2(mdayAtr2(C,14)) 참조데이터에 대해 계산값이나 함수를 지정할 때는 데이터번호함수 안에 계산식이나 함수를 지정해서 사용하셔야 합니다. Plot1(data2(mdayAtr2(c, 14))); 위 내용을 지표로 적용해 보시면(확인을 위해 점그래프나 막대그래프로 지정) 아래와 같이 장초반 data1봉은 있지만 data2봉이 없는 봉에서는 전일 마지막봉 값이 최종값이므로 해당 값이 출력되고 data2의 첫봉에서는 nan이므로 값이 없고 두번째 봉부터 출력이 됩니다. 두번째 봉부터 14봉까지는 data2의 당일봉만으로 계산이 되고 이후에는 당일 14개봉 값입니다.



2
함수의 기준값을 C로 지정해 이전봉과 비교해서 TH와 TL을 계산하는 것이 아닌 기준값을 abs(C-C[1])로 지정하시면 함수식을 아래와 같이 변경하셔야 합니다.  abs(C-C[1])와 전봉기준  abs(C-C[1])를 비교해서 TH와 TL을 계산해야 하므로 첫봉은 값이 없고 두번째 봉의 TH와 TL의 값이 같으므로 0으로 시작하게 됩니다. Inputs: price(Numeric),Period(NumericSimple); var : sum1(0),sum2(0),TH(0),TL(0),value(0); if Bdate != Bdate[1] Then { sum1 = 0; sum2 = 0; mdayAtr2 = Nan; value = Nan; } Else { value = Price; if value[1] > value then TH = value[1]; else TH = value; If value[1] < value then TL = value[1]; else TL = value; sum1 = sum1 + (TH-TL); sum2 = sum2 + 1; if sum2 < Period Then mdayAtr2 = sum1/sum2; Else mdayAtr2 = ma(TH-TL,Period); } 즐거운 하루되세요
프로필 이미지

예스스탁 예스스탁 답변

2026-03-05 16:00:18

안녕하세요 예스스탁입니다. 통화한 내용으로 함수식을 다른 내용을 변경해 드립니다. 전봉과의 차이값의 절대값을 누적해 평균하는 내용입니다. Inputs: price(Numeric),Period(NumericSimple); var : sum1(0),sum2(0); if Bdate != Bdate[1] Then { sum1 = 0; sum2 = 0; mdayAtr2 = Nan; } Else { //두번째 봉부터 전봉대비차이의 절대값 누적 sum1 = sum1 + abs(Price-Price[1]); sum2 = sum2 + 1; if sum2 < Period Then mdayAtr2 = sum1/sum2; Else mdayAtr2 = ma(abs(Price-Price[1]),Period); } 즐거운 하루되세요