첨부 이미지
그림1
그림2
input : debug(0);
input : 일봉평균산출기간(50); //일봉기준
var : D1현재가(0),D2현재가(0);
var : 기간(0);
var : D1평균(0),D2평균(0);
//*==== 기간적용 : 일봉기준:50일 30분봉기준(25일):1250
기간 = 일봉평균산출기간;
if BarInterval == 30 Then
기간 = 일봉평균산출기간 / 2 * 50;
D1현재가 = Data1(c);
D2현재가 = Data2(c);
//======== 해당기간이전이면 그때까지의 봉수로 평균산출
D1평균 = ma(D1현재가, min(Index + 1, 기간));
D2평균 = ma(D2현재가, min(Index + 1, 기간));
plot81(D1평균,"D1평균",Red,Def,2);
plot82(D2평균,"D2평균",Blue,Def,2);
plot91(0,"0선",Gray);
=====================================================
상기코드로 평균지표를 찍으려하는데 잘 되었었습니다
그런데 일봉갯수를 줄여서 1000개로 했을때는 지표출력이 전혀 되지 않네요
참고로 1000개로 줄이기전에는 2000개였습니다
그런데 지금 살펴보니 2000개였을때도 원래 의도는 첫봉부터 평균을 찍으려 했던건데
차트상 일정 봉수를 건너뛰고 지표가 출력되네요(그림1의 ?부분)
평균산출기간 이내에는 그냥 해당봉수만큼 평균을 내려는 의도였구요
왜 그런건지 전혀 감이 잡히질 않습니다
좀 도와주세요
첨부파일중 캡처.png파일(그림1)은 2000봉일때구요
캡처1.png파일(그림2)은 1000봉일때 입니다(이때는 아예 출력자체가 안됩니다)
답변 1
예스스탁
예스스탁 답변
2023-06-28 14:27:09
안녕하세요
예스스탁입니다.
1
Plot99(MaxBarsBack);
수식은 차트에 적용시 자체적으로 수식에 필요한 최소 봉갯수를 계산하게 됩니다.
수식에 위값을 추가해 출력해 보시면 MaxBarsBack이 1250으로 최소 해당 봉수 이후에 값이 출력이 됩니다.
수식 계산자체는 의도하시는 내용으로 계산이 되지만 표시부분이 MaxBarsBack이후부터 표시가 됩니다.
해당 부분은 별도로 체계적인 부분이라 수식으로 별도로 처리가 가능하지 않습니다.
봉수를 충분히 많이 조회해서 보셔야 합니다.
2
기간 = 일봉평균산출기간 / 2 * 50;
위 내용으로 이평함수에 1250봉이 적용이 되는데
해당 봉수가 어떤 의도로 지정된 봉수인지 정확히 모르겠습니다.
만약 위 내용이 분봉에서 일간 이평을 계산하기 위한 내용이면 아래식 참고하시기 바랍니다.
분봉이나 일봉에서 P기간 일간이평을 계산하고
자트에 지정한 기간이 부족하면 있는 기간에서 평균을 구하게 됩니다.
이평함수 자체에 기간등을 지정하는 부분이 없어 첫봉부터 출력됩니다.
input : P(50);
var : cnt(0),sum1(0,Data1),i1(0,Data1),mav1(0,Data1);
var : sum2(0,Data2),i2(0,Data2),mav2(0,Data2);
Array : DC1[100](0,Data1),DC2[100](0,Data2);
if data1(Bdate != Bdate[1]) Then
{
For cnt = 99 DownTo 1
{
DC1[cnt] = DC1[cnt-1];
}
}
DC1[0] = Data1(c);
sum1 = 0;
i1 = 0;
For cnt = P-1 downto 0
{
if DC1[cnt] > 0 Then
{
sum1 = sum1 + DC1[cnt];
i1 = i1+1;
}
}
mav1 = sum1/i1;
if data2(Bdate != Bdate[1]) Then
{
For cnt = 99 DownTo 1
{
DC2[cnt] = DC2[cnt-1];
}
}
DC2[0] = Data2(c);
sum2 = 0;
i2 = 0;
For cnt = P-1 downto 0
{
if DC2[cnt] > 0 Then
{
sum2 = sum2 + DC2[cnt];
i2 = i2+1;
}
}
mav2 = sum2/i2;
Plot1(mav1);
Plot2(mav2);
즐거운 하루되세요
> sptrader 님이 쓴 글입니다.
> 제목 : 평균산출시 봉의 수가 영향을
> input : debug(0);
input : 일봉평균산출기간(50); //일봉기준
var : D1현재가(0),D2현재가(0);
var : 기간(0);
var : D1평균(0),D2평균(0);
//*==== 기간적용 : 일봉기준:50일 30분봉기준(25일):1250
기간 = 일봉평균산출기간;
if BarInterval == 30 Then
기간 = 일봉평균산출기간 / 2 * 50;
D1현재가 = Data1(c);
D2현재가 = Data2(c);
//======== 해당기간이전이면 그때까지의 봉수로 평균산출
D1평균 = ma(D1현재가, min(Index + 1, 기간));
D2평균 = ma(D2현재가, min(Index + 1, 기간));
plot81(D1평균,"D1평균",Red,Def,2);
plot82(D2평균,"D2평균",Blue,Def,2);
plot91(0,"0선",Gray);
=====================================================
상기코드로 평균지표를 찍으려하는데 잘 되었었습니다
그런데 일봉갯수를 줄여서 1000개로 했을때는 지표출력이 전혀 되지 않네요
참고로 1000개로 줄이기전에는 2000개였습니다
그런데 지금 살펴보니 2000개였을때도 원래 의도는 첫봉부터 평균을 찍으려 했던건데
차트상 일정 봉수를 건너뛰고 지표가 출력되네요(그림1의 ?부분)
평균산출기간 이내에는 그냥 해당봉수만큼 평균을 내려는 의도였구요
왜 그런건지 전혀 감이 잡히질 않습니다
좀 도와주세요
첨부파일중 캡처.png파일(그림1)은 2000봉일때구요
캡처1.png파일(그림2)은 1000봉일때 입니다(이때는 아예 출력자체가 안됩니다)