아래 차트 검색 코드를 아래와 같이 작성하고 사용자함수의 MessageLog를 찍어보면
호출이 한번만 되어야 될 것 같은데 캔들 봉마다 호출이 반복되고 있네요. 잘 이해가 되지 않습니다.
if ( DataCompress == 2 && date != date[1] && date == TargetDate ) Then
{
:
:
nTick = MS_CalcTickUnit(C);
:
:
}
else if ( DataCompress == 2 && date == TargetDate ) Then
{
}
제가 작성한 사용자함수는 호가단위를 계산하는 함수입니다.
//////////////////////////////////////////////////////////////
input : Price(Numeric);
var : nTickUnit(1);
nTickUnit = 1;
if Price < 1000 Then nTickUnit = 1;
Else if Price < 5000 Then nTickUnit = 5;
Else if Price < 10000 Then nTickUnit = 10;
Else if Price < 50000 Then nTickUnit = 50;
Else if Price < 100000 Then nTickUnit = 100;
Else if CodeCategory == 1 && Price < 500000 Then nTickUnit = 500;
Else if CodeCategory == 1 && Price >= 500000 Then nTickUnit = 1000;
Else if CodeCategory == 2 && Price >= 500000 Then nTickUnit = 100;
MessageLog("Price = %.0f.... TickUnit = %.0f", Price, nTickUnit );
MS_CalcTickUnit = nTickUnit;
답변 1
예스스탁
예스스탁 답변
2022-11-10 14:43:37
안녕하세요
예스스탁입니다.
사용자함수는 매봉 호출해서 계산값을 메모리에 저장하게 되어 있습니다.
매봉 계산을 수행하는 이유는 크게 두가지 입니다.
수식에서 함수의 이전봉 참조를 가능하게 하기 위해서이고
함수식의 계산내용상 지수이평과 같이 매봉 연속적으로 계산을 이어나가야만 하는 경우가 있을수 있기 때문입니다.
실제 해당 사용자함수로 이전봉 사용이 없거나
또한 연속적으로 계산값을 이어나갈 필요가 없는 함수식이라고 해도
내부적으로는 해당 내용에 대해서는 정확히 판단할 수 없는 부분이므로
위와 같은 체계로 되어 있습니다.
즐거운 하루되세요
> 태공 님이 쓴 글입니다.
> 제목 : 사용자함수 호출이 좀 이상합니다.
> 아래 차트 검색 코드를 아래와 같이 작성하고 사용자함수의 MessageLog를 찍어보면
호출이 한번만 되어야 될 것 같은데 캔들 봉마다 호출이 반복되고 있네요. 잘 이해가 되지 않습니다.
if ( DataCompress == 2 && date != date[1] && date == TargetDate ) Then
{
:
:
nTick = MS_CalcTickUnit(C);
:
:
}
else if ( DataCompress == 2 && date == TargetDate ) Then
{
}
제가 작성한 사용자함수는 호가단위를 계산하는 함수입니다.
//////////////////////////////////////////////////////////////
input : Price(Numeric);
var : nTickUnit(1);
nTickUnit = 1;
if Price < 1000 Then nTickUnit = 1;
Else if Price < 5000 Then nTickUnit = 5;
Else if Price < 10000 Then nTickUnit = 10;
Else if Price < 50000 Then nTickUnit = 50;
Else if Price < 100000 Then nTickUnit = 100;
Else if CodeCategory == 1 && Price < 500000 Then nTickUnit = 500;
Else if CodeCategory == 1 && Price >= 500000 Then nTickUnit = 1000;
Else if CodeCategory == 2 && Price >= 500000 Then nTickUnit = 100;
MessageLog("Price = %.0f.... TickUnit = %.0f", Price, nTickUnit );
MS_CalcTickUnit = nTickUnit;