커뮤니티
사용자함수의 실행시간은 무조건 기본차트와 같다.~ 예시까지 올립니다.
2010-06-09 16:23:15
1380
글번호 30360
전에 같은 내용으로 질문드린적이 있었는데, 테스트 해보지 않으시고, 답변을 주셔서 완변한 예시를 다시 올려드립니다.
기본차트 :1분봉차트
시스템식
var : var1(""), var5(0);
if (sdate == Currentdate) then {
if (stime <= 095500) then {
var1 = "초기화값"; //초기화
}
if (stime == 100000) then {
var5 = 돌파함수(var1); // 10시에 돌파함수를 실행시킴
}
if (stime == 102000) then {
var1 = ""; // var1 초기화
}
if (var1 == "333") then {
buy();
}
if (stime > 095000 and stime < 103000) then {
messagelog("var5:%.0f, var1: %s",var5,var1);
}
}
//===============================
돌파함수 사용자함수 정보
//===============================
input: var2(StringRef);
var : var3(0);
if (stime < 101000) then {
var2 = "진실은 살아있다.";
} else {
var2 = "뻥꾸지마~~~~";
}
var3 = stime;
돌파함수 = var3;
위의 식을 보시면 아시겠지만 당일 10시에만 돌파함수를 실행하게 하였습니다.
그런데 결과를 보면 그렇지 않네요..
첨부한 사진을 보시면
돌파함수안에 시간에 따라 값을 변경하게 하였는데, 돌파함수가 호출되지 않아도 값이 변경된걸 알수 있습니다.
돌파함수 리턴정보가 시간으로 했는데, 이건 1회실행이라서인지 정상동작하였네요.
위처럼 작성후 구동결과까지 올리니 불성실한 답변은 정중히 사양하겠습니다.
- 1. bb.jpg (0.09 MB)
답변 1
예스스탁 예스스탁 답변
2010-06-10 11:40:01
안녕하세요
예스스탁입니다.
죄송합니다. 아래 문의의 답변을 잘못드려
수정하였는데 못보신것 같습니다.
if (stime == 090400 or stime == 090900) then {
var1 = 돌파함수(c,o,l,h,var2); // var2는 돌파함수에서 StringRef로 받아들임
}
if (stime == 090500) then {
var2 = "";
}
messagelog("%s",var2);
이전값 계산과 함수내에 어떤 이전값을 필요로 하는 내용이 있는지 알수 없으므로
내부 연산을 위해 사용된 함수는 매봉 호출이 되게 되고
if조건이 맞는 경우에는 var1에 저장을 실행하고
if조건이 맞지 않는 경우에는 저장하는 행위를 하지 않습니다.
즐거운 하루되세요
> 캐빈이야 님이 쓴 글입니다.
> 제목 : 사용자함수의 실행시간은 무조건 기본차트와 같다.~ 예시까지 올립니다.
> 전에 같은 내용으로 질문드린적이 있었는데, 테스트 해보지 않으시고, 답변을 주셔서 완변한 예시를 다시 올려드립니다.
기본차트 :1분봉차트
시스템식
var : var1(""), var5(0);
if (sdate == Currentdate) then {
if (stime <= 095500) then {
var1 = "초기화값"; //초기화
}
if (stime == 100000) then {
var5 = 돌파함수(var1); // 10시에 돌파함수를 실행시킴
}
if (stime == 102000) then {
var1 = ""; // var1 초기화
}
if (var1 == "333") then {
buy();
}
if (stime > 095000 and stime < 103000) then {
messagelog("var5:%.0f, var1: %s",var5,var1);
}
}
//===============================
돌파함수 사용자함수 정보
//===============================
input: var2(StringRef);
var : var3(0);
if (stime < 101000) then {
var2 = "진실은 살아있다.";
} else {
var2 = "뻥꾸지마~~~~";
}
var3 = stime;
돌파함수 = var3;
위의 식을 보시면 아시겠지만 당일 10시에만 돌파함수를 실행하게 하였습니다.
그런데 결과를 보면 그렇지 않네요..
첨부한 사진을 보시면
돌파함수안에 시간에 따라 값을 변경하게 하였는데, 돌파함수가 호출되지 않아도 값이 변경된걸 알수 있습니다.
돌파함수 리턴정보가 시간으로 했는데, 이건 1회실행이라서인지 정상동작하였네요.
위처럼 작성후 구동결과까지 올리니 불성실한 답변은 정중히 사양하겠습니다.