커뮤니티

수식 부탁드립니다.

프로필 이미지
허밍스타
2025-07-20 02:12:10
170
글번호 192604
답변완료
아래는 이전질문코드에 답을 주신건데 1분봉이나 5분봉에서 length값을 240으로 늘리면 값이 0으로 나오는데 length값을 늘렸을 경우에도 값이 제대로 나오게 할 수 있는 방법이 있을까요? Inputs: length(55); var : x(0),y(0),halfLength(0),sqrtLength(0),ii(0); var : sum(0),Csum(0),sum1(0),csum1(0),sum2(0),csum2(0); var : WMA1(0),WMA2(0),diff1(0),hma1(0); var : sum5(0),Csum5(0),sum51(0),csum51(0),sum52(0),csum52(0); var : WMA51(0),WMA52(0),diff5(0),hma2(0); var : prev_hma1(0),prev_hma2(0),vol_sum(0),level(0),shift_col(0); var : reversal_dn_signal(0),reversal_up_signal(0);; halfLength = IntPortion(length / 2); sqrtLength = IntPortion(Sqrt(length)); if Bdate != Bdate[1] Then { prev_hma1 = hma1[1]; prev_hma2 = hma2[1]; } Sum = 0; CSum = 0; Sum5 = 0; CSum5 = 0; For x = 0 to sqrtLength-1 { Sum1 = 0; CSum1 = 0; Sum2 = 0; CSum2 = 0; Sum51 = 0; CSum51 = 0; Sum52 = 0; CSum52 = 0; ii = 0; For y = x+0 to x+length-1 { if ii < halfLength Then { Sum1= Sum1 + DayClose(y) * (halfLength - ii); CSum1 = CSum1 + halfLength - ii; Sum51 = Sum51 + DayClose(y+5) * (halfLength - ii); CSum51 = CSum51 + halfLength - ii; } if ii < Length Then { Sum2= Sum2 + DayClose(y) * (Length - ii); CSum2 = CSum2 + Length - ii; Sum52 = Sum52 + DayClose(y+5) * (Length - ii); CSum52 = CSum52 + Length - ii; } ii = ii+1; } WMA1 = Sum1 / CSum1; WMA2 = Sum2 / CSum2; diff1 = 2 * wma1 - wma2; Sum = Sum + diff1 * (sqrtLength - x); CSum = CSum + sqrtLength - x; WMA51 = Sum51 / CSum51; WMA52 = Sum52 / CSum52; diff5 = 2 * wma51 - wma52; Sum5 = Sum5 + diff5 * (sqrtLength - x); CSum5 = CSum5 + sqrtLength - x; } hma1 = sum/Csum; hma2 = sum5/Csum5; vol_sum = DayVolume(2) + dayVolume(0) + DayVolume(0); IF NextBarBdate != Bdate Then { if (prev_hma1 <= prev_hma2) and (hma1 > hma2) then begin level = DayLow; end else if (prev_hma1 >= prev_hma2) and (hma1 < hma2) then begin level = DayHigh; end else begin level = level[1]; end; // 바 색상 숫자 (1=Up, 0=Down) if DayClose < level then begin shift_col = 0; end else begin shift_col = 1; end; // 반전 신호 조건 reversal_dn_signal = 0; reversal_up_signal = 0; if (dayHigh(2) < level) and (DayHigh < level) and (DayHigh(1) > level) then reversal_dn_signal = 1; if (dayLow(2) > level) and (dayLow(1) < level) and (DayLow > level) then reversal_up_signal = 1; } // 결과 플롯 Plot1(level, "Market Level");
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-07-21 13:22:30

안녕하세요 예스스탁입니다. 문의하신 내용은 가능하지 않습니다. 차트에 일간데이터는 차트 첫봉기준 약 +99일 정도만 제공됩니다. 그 이상을 요구하는 내용은 수식으로 구현이 되지 않습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 허밍스타 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다. > 아래는 이전질문코드에 답을 주신건데 1분봉이나 5분봉에서 length값을 240으로 늘리면 값이 0으로 나오는데 length값을 늘렸을 경우에도 값이 제대로 나오게 할 수 있는 방법이 있을까요? Inputs: length(55); var : x(0),y(0),halfLength(0),sqrtLength(0),ii(0); var : sum(0),Csum(0),sum1(0),csum1(0),sum2(0),csum2(0); var : WMA1(0),WMA2(0),diff1(0),hma1(0); var : sum5(0),Csum5(0),sum51(0),csum51(0),sum52(0),csum52(0); var : WMA51(0),WMA52(0),diff5(0),hma2(0); var : prev_hma1(0),prev_hma2(0),vol_sum(0),level(0),shift_col(0); var : reversal_dn_signal(0),reversal_up_signal(0);; halfLength = IntPortion(length / 2); sqrtLength = IntPortion(Sqrt(length)); if Bdate != Bdate[1] Then { prev_hma1 = hma1[1]; prev_hma2 = hma2[1]; } Sum = 0; CSum = 0; Sum5 = 0; CSum5 = 0; For x = 0 to sqrtLength-1 { Sum1 = 0; CSum1 = 0; Sum2 = 0; CSum2 = 0; Sum51 = 0; CSum51 = 0; Sum52 = 0; CSum52 = 0; ii = 0; For y = x+0 to x+length-1 { if ii < halfLength Then { Sum1= Sum1 + DayClose(y) * (halfLength - ii); CSum1 = CSum1 + halfLength - ii; Sum51 = Sum51 + DayClose(y+5) * (halfLength - ii); CSum51 = CSum51 + halfLength - ii; } if ii < Length Then { Sum2= Sum2 + DayClose(y) * (Length - ii); CSum2 = CSum2 + Length - ii; Sum52 = Sum52 + DayClose(y+5) * (Length - ii); CSum52 = CSum52 + Length - ii; } ii = ii+1; } WMA1 = Sum1 / CSum1; WMA2 = Sum2 / CSum2; diff1 = 2 * wma1 - wma2; Sum = Sum + diff1 * (sqrtLength - x); CSum = CSum + sqrtLength - x; WMA51 = Sum51 / CSum51; WMA52 = Sum52 / CSum52; diff5 = 2 * wma51 - wma52; Sum5 = Sum5 + diff5 * (sqrtLength - x); CSum5 = CSum5 + sqrtLength - x; } hma1 = sum/Csum; hma2 = sum5/Csum5; vol_sum = DayVolume(2) + dayVolume(0) + DayVolume(0); IF NextBarBdate != Bdate Then { if (prev_hma1 <= prev_hma2) and (hma1 > hma2) then begin level = DayLow; end else if (prev_hma1 >= prev_hma2) and (hma1 < hma2) then begin level = DayHigh; end else begin level = level[1]; end; // 바 색상 숫자 (1=Up, 0=Down) if DayClose < level then begin shift_col = 0; end else begin shift_col = 1; end; // 반전 신호 조건 reversal_dn_signal = 0; reversal_up_signal = 0; if (dayHigh(2) < level) and (DayHigh < level) and (DayHigh(1) > level) then reversal_dn_signal = 1; if (dayLow(2) > level) and (dayLow(1) < level) and (DayLow > level) then reversal_up_signal = 1; } // 결과 플롯 Plot1(level, "Market Level");