커뮤니티

수식 부탁드립니다.

프로필 이미지
허밍스타
2025-07-18 00:32:39
228
글번호 192557
답변완료
Inputs: length(55); Vars: level(0), hma1(0), hma2(0), vol_sum(0); Vars: shift_col(0); Vars: reversal_dn_signal(0), reversal_up_signal(0); Vars: prev_hma1(0), prev_hma2(0); // Hull MA 직접 계산 함수 호출 (별도 구현 필요) hma1 = HMA(Close, length); hma2 = HMA(Close, length)[5]; // 거래량 합산 vol_sum = Volume[2] + Volume[1] + Volume[0]; // 상승 전환 조건: hma1 이전 <= hma2 이전 이고 현재 hma1 > hma2 if (prev_hma1 <= prev_hma2) and (hma1 > hma2) then begin level = Low; end else if (prev_hma1 >= prev_hma2) and (hma1 < hma2) then begin level = High; end else begin level = level[1]; end; // 바 색상 숫자 (1=Up, 0=Down) if Close < level then begin shift_col = 0; end else begin shift_col = 1; end; // 반전 신호 조건 reversal_dn_signal = 0; reversal_up_signal = 0; if (High[2] < level) and (High < level) and (High[1] > level) then reversal_dn_signal = 1; if (Low[2] > level) and (Low[1] < level) and (Low > level) then reversal_up_signal = 1; // 이전 HMA 값 저장 (꼭 마지막에) prev_hma1 = hma1; prev_hma2 = hma2; // 결과 플롯 Plot1(level, "Market Level"); //////////사용자 함수 hma/////////////////// Inputs: price(numericseries), length(numeric); Vars: halfLength(0), sqrtLength(0); Vars: wma1(0), wma2(0), diff(0); halfLength = IntPortion(length / 2); sqrtLength = IntPortion(Sqrt(length)); wma1 = WMA(price, halfLength); wma2 = WMA(price, length); diff = 2 * wma1 - wma2; hma = WMA(diff, sqrtLength); -------------------------------------------------------------- 질문1 (1분봉)에서 plot1 (일봉)값을 그대로 표현하고 싶어요~ 질문2 1분봉에서 가격이동평균 5일 이평을 표현하는 방법도 알려주세요
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-07-18 13:49:39

안녕하세요 예스스탁입니다. 1 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"); 2 input : P(5); var : i(0),sum(0),mav(0); sum = 0; For i = 0 to P-1 { sum = sum + DayClose(i); } mav = sum/P; Plot1(mav); 즐거운 하루되세요 > 허밍스타 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다. > Inputs: length(55); Vars: level(0), hma1(0), hma2(0), vol_sum(0); Vars: shift_col(0); Vars: reversal_dn_signal(0), reversal_up_signal(0); Vars: prev_hma1(0), prev_hma2(0); // Hull MA 직접 계산 함수 호출 (별도 구현 필요) hma1 = HMA(Close, length); hma2 = HMA(Close, length)[5]; // 거래량 합산 vol_sum = Volume[2] + Volume[1] + Volume[0]; // 상승 전환 조건: hma1 이전 <= hma2 이전 이고 현재 hma1 > hma2 if (prev_hma1 <= prev_hma2) and (hma1 > hma2) then begin level = Low; end else if (prev_hma1 >= prev_hma2) and (hma1 < hma2) then begin level = High; end else begin level = level[1]; end; // 바 색상 숫자 (1=Up, 0=Down) if Close < level then begin shift_col = 0; end else begin shift_col = 1; end; // 반전 신호 조건 reversal_dn_signal = 0; reversal_up_signal = 0; if (High[2] < level) and (High < level) and (High[1] > level) then reversal_dn_signal = 1; if (Low[2] > level) and (Low[1] < level) and (Low > level) then reversal_up_signal = 1; // 이전 HMA 값 저장 (꼭 마지막에) prev_hma1 = hma1; prev_hma2 = hma2; // 결과 플롯 Plot1(level, "Market Level"); //////////사용자 함수 hma/////////////////// Inputs: price(numericseries), length(numeric); Vars: halfLength(0), sqrtLength(0); Vars: wma1(0), wma2(0), diff(0); halfLength = IntPortion(length / 2); sqrtLength = IntPortion(Sqrt(length)); wma1 = WMA(price, halfLength); wma2 = WMA(price, length); diff = 2 * wma1 - wma2; hma = WMA(diff, sqrtLength); -------------------------------------------------------------- 질문1 (1분봉)에서 plot1 (일봉)값을 그대로 표현하고 싶어요~ 질문2 1분봉에서 가격이동평균 5일 이평을 표현하는 방법도 알려주세요