안녕하세요?
지표에 아래와 같이 넣었는데-
새로운봉이 나타나면 1번만 체크하고자 합니다.
oldIndex에 최근 봉번호를 가지고 있고 새로운 봉인지 비교하게 하였습니다.
헌테 같은봉에서 틱정보가 수신되면 oldIndex가 값이 안바뀌어 있고~
그래서 실행이 자꾸 됩니다.
변수가 이전값을 잘 기억 못하는 건가요?
어떻게 조치해야 하나요?
var : oldIndex(0), nowIndex(0);
nowIndex = BarIndex;
MessageLog ("시작 old=%.f ", oldIndex);
if oldIndex<>nowIndex Then
{
//-- 요기 봉당 1회만 실행
oldIndex = nowIndex;
}
MessageLog ("끝 old=%.f ", oldIndex);
-----------------------------------
디버깅 결과 예)
시작 old=149
끝 old=150
시작 old=149
끝 old=150
시작 old=149
끝 old=150
시작 old=150
끝 old=151
시작 old=150
끝 old=151
답변 1
예스스탁
예스스탁 답변
2019-10-23 10:48:38
안녕하세요
예스스탁입니다.
수식은 봉이 기준이 됩니다. 미완성시에 변수에 직전틱의 상태가 저장되지는 않습니다.
완성된 봉단위로만 변수에 최종적으로 값이 저장됩니다.
시세 수신시에 계산이나 변수에 값을 저장후에
해단 시세가 시세(다음봉시가)가 아니면 변수값이 직전봉의 최종값으로 환원됩니다.
NextBarStime이 봉완성시 다음봉 시가가의 시간을 리턴해 주는 함수입니다.
미완성시에는 해당 값이 없으므로 아래와 같이 조건을 if문에 추가하시면 됩니다.
var : oldIndex(0), nowIndex(0);
nowIndex = BarIndex;
MessageLog ("시작 old=%.f ", oldIndex);
if oldIndex<>nowIndex and isnan(NextBarStime) == false and NextBarStime != stime Then
{
MessageLog ("봉완성");
//-- 요기 봉당 1회만 실행
oldIndex = nowIndex;
}
MessageLog ("끝 old=%.f ", oldIndex);
MessageLog도 봉완성시만 출력하고자 하시며 if문안으로 넣으시면 됩니다.
즐거운 하루되세요
> 하얀햇살 님이 쓴 글입니다.
> 제목 : 새로운 봉일때 1회만 실행하고자 합니다
> 안녕하세요?
지표에 아래와 같이 넣었는데-
새로운봉이 나타나면 1번만 체크하고자 합니다.
oldIndex에 최근 봉번호를 가지고 있고 새로운 봉인지 비교하게 하였습니다.
헌테 같은봉에서 틱정보가 수신되면 oldIndex가 값이 안바뀌어 있고~
그래서 실행이 자꾸 됩니다.
변수가 이전값을 잘 기억 못하는 건가요?
어떻게 조치해야 하나요?
var : oldIndex(0), nowIndex(0);
nowIndex = BarIndex;
MessageLog ("시작 old=%.f ", oldIndex);
if oldIndex<>nowIndex Then
{
//-- 요기 봉당 1회만 실행
oldIndex = nowIndex;
}
MessageLog ("끝 old=%.f ", oldIndex);
-----------------------------------
디버깅 결과 예)
시작 old=149
끝 old=150
시작 old=149
끝 old=150
시작 old=149
끝 old=150
시작 old=150
끝 old=151
시작 old=150
끝 old=151