예스스탁
예스스탁 답변
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일 이평을 표현하는 방법도 알려주세요