커뮤니티
질문
2008-10-13 03:09:52
573
글번호 17461
아래는 dayindex 기본 사용자 함수입니다.
var : BarCountInDay(0);
if BarIndex <= 0 then
{
BarCountInDay = 0;
}
else
{
if Date > Date[1] then
{
BarCountInDay = 0;
}
else
{
BarCountInDay = BarCountInDay + 1;
}
}
DayIndex = BarCountInDay;
-----------------------------------
messagelog("%f",dayindex)를 찍어보면 현재 봉의 위치가 잘찍힙니다.
헌데 사용자 함수 소스만 보면 리턴되는 BarCountInDay를 증가시키는 코드는
BarCountInDay = BarCountInDay + 1;
이거 밖에 없습니다.
의문 1.
var ii(10);
For ii = 0 to 9 {
messagelog( "%f", dayindex );
}
위와 같이 햇다면 봉이 완성되는시점에 dayindex가 10번이 찍혀서
BarCountInDay = BarCountInDay + 1; 가 10번이불려서
같은봉 안에서도 숫자가 증가할것같은데 그러지않습니다. 이유가 무엇인지요?
의문 2.
var : ii(0);
if( stime > 130000 ) Then
messagelog("2.%f",dayindex);
위와 같이 햇으면 봉이 불리는 시점에 1시 이고 그이전에는 dayindex가 실행된적이
없엇기때문에 130000분에 BarCountInDay = BarCountInDay + 1;가 한번만불려서
1이 찍혀야 될것같은데 어떻게 정확한 봉의 위치가 찍히는건가요?
의문 3.
그렇게 찍힌다는 말은 사용자 함수가 불리게 되면 해당 봉 갯수만큼 사용자 함수가 불려진다는 소린가요?
봉의 갯수가 20만개이고.
사용자함수(user)
input : ii(numericsimple);
var : aa(0);
aa = aa+ii;
user = aa;
위와같은 사용자 함수를 봉 10만번째에서 부르게되면
aa=aa+1이 10만번 불리워져서 user이 10만이 찍히게 되는건가요?
[ 질문의 결론 ]
봉이 100개 이고
if( user(0) > 10 ) then
buy();
이런 수식이 씌였다면
user는 각봉마다 100번이 불려지게되나요.
아니면 1번째봉에 1번 10번째봉에서 10번 100번째봉에서 100번 이렇게
1+2+3...+100 번 불리어지게 건가요?
만약 모든 봉에서 1번씩만 불려지게 된다면
user(0)를 여러번썻을때 이전 함수의 var값을 기억하고 있어야 할텐데요.
user(0),user(0),user(1),user(2),user(3),user(4),user(4),user(4)
이렇게 중복으로 사용하고 또 다른인자를 사용하였을경우에는 전값을 어떻게 기억하나요.
user(0),user(0),user(1),user(2),user(3),user(4),user(4),user(4) 이렇게 8개 각각의
전 var값을 기억하고 참조하여 계산을 하는것인가요 아니면
user(0),user(1),user(2),user(3),user(4) 이렇게 인자가 다른 사용자함수별로
var값을 기억해서 계산하나요.
어쨋든 사용자 함수안의 var값은 전역변수의 의미로 쓰이고 특정 봉에서 사용자 함수를
if문을 사용해 부르지 않을때도 강제로 실행은 시키는거 같고 중복이 되도 값이 유효하게 하기위해
중복 처리까지 하는것 같습니다. 그렇지않으면 100번째봉에서 100번실행시킬테구요.
질문에 관련된 자세한 답변 부탁드립니다. 구조나 동작흐름을 모르느 유추해내기가 쉽지 않네요.
추가로 user사용자 함수안에 user[1]과같이 사용자함수 자체의 전값을 참조하는 식의
사용할수가 있는데요. 이부분도 같이 설명해 주십시오.
답변 1
예스스탁 예스스탁 답변
2008-10-13 10:55:37
안녕하세요
예스스탁입니다.
1.
var ii(10);
For ii = 0 to 9 {
messagelog( "%f", dayindex );
}
해당식을 루프를 돌리는 식이므로
같은 봉에서 10번이 루프가 돌게 되므로 같은 봉안에
10이 증가합니다. 디버깅창의 값을 확인하시기 바랍니다.
2.
함수를 부르게 되면
첫봉부터 계산하여 현재봉까지 오면서 값을 리턴합니다.
3. 한봉에 한번만 부르게 됩니다.
4.
input : ii(numericsimple);
var : aa(0);
aa = aa+ii;
user = aa;
식 내용은 매봉 ii값을 누적하라는 의미이지 ii만큼 콜하라는 식이 아닙니다.
ii가 1이라면
첫봉은 1, 두번째봉은 2,세번째 봉은 3순으로 1씩증가합니다.
즉 콜하는 횟수가 아니라 단순히 특정값을 매봉 누적하라는 식입니다.
즉 dayindex함수도 날짜가 변경되면 0으로 값을 초기화 하고
매봉 1값을 누적하라는 식입니다. 그러므로 함수를 콜하는 횟수와는 상관없습니다.
더 자세한 내용을 원하시면
02-3453-1060으로 전화주시기 바랍니다.
즐거운 하루되세요
> 배고픈i 님이 쓴 글입니다.
> 제목 : 질문
> 아래는 dayindex 기본 사용자 함수입니다.
var : BarCountInDay(0);
if BarIndex <= 0 then
{
BarCountInDay = 0;
}
else
{
if Date > Date[1] then
{
BarCountInDay = 0;
}
else
{
BarCountInDay = BarCountInDay + 1;
}
}
DayIndex = BarCountInDay;
-----------------------------------
messagelog("%f",dayindex)를 찍어보면 현재 봉의 위치가 잘찍힙니다.
헌데 사용자 함수 소스만 보면 리턴되는 BarCountInDay를 증가시키는 코드는
BarCountInDay = BarCountInDay + 1;
이거 밖에 없습니다.
의문 1.
var ii(10);
For ii = 0 to 9 {
messagelog( "%f", dayindex );
}
위와 같이 햇다면 봉이 완성되는시점에 dayindex가 10번이 찍혀서
BarCountInDay = BarCountInDay + 1; 가 10번이불려서
같은봉 안에서도 숫자가 증가할것같은데 그러지않습니다. 이유가 무엇인지요?
의문 2.
var : ii(0);
if( stime > 130000 ) Then
messagelog("2.%f",dayindex);
위와 같이 햇으면 봉이 불리는 시점에 1시 이고 그이전에는 dayindex가 실행된적이
없엇기때문에 130000분에 BarCountInDay = BarCountInDay + 1;가 한번만불려서
1이 찍혀야 될것같은데 어떻게 정확한 봉의 위치가 찍히는건가요?
의문 3.
그렇게 찍힌다는 말은 사용자 함수가 불리게 되면 해당 봉 갯수만큼 사용자 함수가 불려진다는 소린가요?
봉의 갯수가 20만개이고.
사용자함수(user)
input : ii(numericsimple);
var : aa(0);
aa = aa+ii;
user = aa;
위와같은 사용자 함수를 봉 10만번째에서 부르게되면
aa=aa+1이 10만번 불리워져서 user이 10만이 찍히게 되는건가요?
[ 질문의 결론 ]
봉이 100개 이고
if( user(0) > 10 ) then
buy();
이런 수식이 씌였다면
user는 각봉마다 100번이 불려지게되나요.
아니면 1번째봉에 1번 10번째봉에서 10번 100번째봉에서 100번 이렇게
1+2+3...+100 번 불리어지게 건가요?
만약 모든 봉에서 1번씩만 불려지게 된다면
user(0)를 여러번썻을때 이전 함수의 var값을 기억하고 있어야 할텐데요.
user(0),user(0),user(1),user(2),user(3),user(4),user(4),user(4)
이렇게 중복으로 사용하고 또 다른인자를 사용하였을경우에는 전값을 어떻게 기억하나요.
user(0),user(0),user(1),user(2),user(3),user(4),user(4),user(4) 이렇게 8개 각각의
전 var값을 기억하고 참조하여 계산을 하는것인가요 아니면
user(0),user(1),user(2),user(3),user(4) 이렇게 인자가 다른 사용자함수별로
var값을 기억해서 계산하나요.
어쨋든 사용자 함수안의 var값은 전역변수의 의미로 쓰이고 특정 봉에서 사용자 함수를
if문을 사용해 부르지 않을때도 강제로 실행은 시키는거 같고 중복이 되도 값이 유효하게 하기위해
중복 처리까지 하는것 같습니다. 그렇지않으면 100번째봉에서 100번실행시킬테구요.
질문에 관련된 자세한 답변 부탁드립니다. 구조나 동작흐름을 모르느 유추해내기가 쉽지 않네요.
추가로 user사용자 함수안에 user[1]과같이 사용자함수 자체의 전값을 참조하는 식의
사용할수가 있는데요. 이부분도 같이 설명해 주십시오.