예스스탁
예스스탁 답변
2022-03-03 16:13:31
안녕하세요
예스스탁입니다.
WMA(value, 5) --> 최근 5개봉의 value값 평균
WMA(오분배열[0], 5) --> 최근 5개봉의 오분배열[0]값 평균
wma함수에 배열을 지정해도 5라는 숫자가 오분배열[0]~오분배열[4]를 지정하는 것이 아닙니다.
오분배열[0]의 현재봉값~오분배열[0]의 4봉전값을 모아 평균하게 됩니다.
즉 오분배열[0]에 저장된 최근 5개봉의 평균입니다.
타주기의 지표를 그리실때는 구현하고자 하시는 계산식을 풀어서 별도로 구현하셔야 합니다.
input : 타주기분(5),P1(5),P2(20);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
Var : Sum1(0),CSum1(0),WMA1(0);
Var : Sum2(0),CSum2(0),WMA2(0);
Array : CC[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
CC[cnt] = CC[cnt-1][1];
}
}
CC[0] = C;
if CC[P1-1] > 0 Then
{
Sum1 = 0;
CSum1 = 0;
For cnt = 0 To P1 - 1 Begin
Sum1 = Sum1 + CC[cnt] * (P1 - cnt);
CSum1 = CSum1 + P1 - cnt;
End;
If CSum1 > 0 Then
WMA1 = Sum1/CSum1;
Else
WMA1 = 0;
plot1(wma1,"타주기가중이평1");
}
if CC[P2-1] > 0 Then
{
Sum2 = 0;
CSum2 = 0;
For cnt = 0 To P2 - 1 Begin
Sum2 = Sum2 + CC[cnt] * (P2 - cnt);
CSum2 = CSum2 + P2 - cnt;
End;
If CSum2 > 0 Then
WMA2 = Sum2/CSum2;
Else
WMA2 = 0;
plot2(wma2,"타주기가중이평2");
}
}
즐거운 하루되세요
> feelkdn 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 안녕하세요 수식관련해서 문의드릴게 있어서 글을 남깁니다
현재 1분차트에서 5분봉차트에서 생성한 WMA를 똑같이 생성하는 로직을 만들고있는데
1분차트
#=========================
# 5분봉 생성.
#=========================
Var: 오분봉(0), count(0), 오분체크(0);
Array: 오분배열[5](0);
If dayindex == 0 Then
{
오분봉 = C[0];
}
Else
{
// 5분봉설정
오분체크 = TimeToMinutes(stime)%5;
If Dayindex > 4 and 오분체크 < 오분체크[1] Then
{
오분봉 = C[1];
오분배열[0] = 오분봉;
For count = 1 to 4
{
오분배열[count] = 오분배열[count-1][1];
}
Var: A(0), B(0);
MessageLog("평균오분봉: %.2f,오분봉: %.2f,오분봉[1]: %.2f,오분봉[2]: %.2f,오분봉[3]: %.2f,오분봉[4]: %.2f", WMA(오분배열[0], 5), 오분배열[0], 오분배열[1], 오분배열[2], 오분배열[3], 오분배열[4]);
}
}
5분차트
#=========================
MessageLog("평균오분봉: %.2f,오분봉: %.2f,오분봉[1]: %.2f,오분봉[2]: %.2f,오분봉[3]: %.2f,오분봉[4]: %.2f", WMA(C[0], 5), C[0], C[1], C[2], C[3], C[4]);
이런식으로 이평값을 확인하고있는데 첨부파일을 보시면 5개의 값이 똑같이 들어가있는데
이평값이 1분차트에서 5분봉기준 이평을 만들었을때는 360.17
5분차트에서 이평을 만들었을때는 360.23으로 다르게 생성되고 있습니다
1. 로직중에 제가 잘못만든부분이 있어서 값이 다른것인지 궁금합니다
2. 1분차트를 베이스로 5분차트에서 만든 이평, 3분차트에서 만든 이평등을 만들고 싶은데 위에 사용한 방법이 맞는지 궁금합니다
감사합니다