커뮤니티

문의

프로필 이미지
gt
2016-04-01 08:37:22
67
글번호 96753
답변완료
국내선물 지표인데 종가의 시간이 달라서 그런지 자정을 기준으로 바뀌네요. 해외선물이 끝나는 종가기준으로 수정부탁드립니다. VARS: MAXDAYLINE.SHORT(60); VARS: M5DP(5), M5D(0, DATA1), M5D.SUM(0, DATA1); VARS: DayLineCnt(0); ARRAY: CC[60](0, DATA1); //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( DATA1(Date <> Date[1]) ) Then { for DayLineCnt = 1 to MAXDAYLINE.SHORT - 1 { CC[DayLineCnt] = CC[DayLineCnt - 1][1]; } } CC[0] = CLOSE; M5D.SUM = 0; for DayLineCnt = 1 to MAXDAYLINE.SHORT - 1 { if ( (DayLineCnt < M5DP) AND (CC[M5DP - 1] > 0) ) Then M5D.SUM = M5D.SUM + CC[DayLineCnt]; } M5D = ((M5D.SUM + DATA1(OPEND(0))) / M5DP); 감사합니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-04-01 13:34:20

안녕하세요 예스스탁입니다. date != date[1]는 0시 기준입니다. 영업일 변경시간을 기준으로 하신다면 Bdate != Bdate[1]로 변경하시면 됩니다. 또한 일간값을 가져오는 함수에서 OpenD,HighD,LowD,CloseD는 모두 0시 기준입니다. data1이면 dayOpen,Dayhigh,daylow,dayclose를 사용하시면 영업일기준으로 일간값이 리턴됩니다. 참조데이터면 Bdate변경기준으로 따로 작성해 쓰셔야 합니다. VARS: MAXDAYLINE.SHORT(60); VARS: M5DP(5), M5D(0, DATA1), M5D.SUM(0, DATA1); VARS: DayLineCnt(0); ARRAY: CC[60](0, DATA1),HH[60](0, DATA1),LL[60](0, DATA1),OO[60](0, DATA1); //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( DATA1(bDate <> bDate[1]) ) Then { OO[0] = Open; HH[0] = High; LL[0] = Low; for DayLineCnt = 1 to MAXDAYLINE.SHORT - 1 { OO[DayLineCnt] = OO[DayLineCnt - 1][1]; HH[DayLineCnt] = HH[DayLineCnt - 1][1]; LL[DayLineCnt] = LL[DayLineCnt - 1][1]; CC[DayLineCnt] = CC[DayLineCnt - 1][1]; } } CC[0] = CLOSE; if high > HH[0] Then HH[0] = high; if Low < LL[0] Then LL[0] = Low; M5D.SUM = 0; for DayLineCnt = 1 to MAXDAYLINE.SHORT - 1 { if ( (DayLineCnt < M5DP) AND (CC[M5DP - 1] > 0) ) Then M5D.SUM = M5D.SUM + CC[DayLineCnt]; } M5D = ((M5D.SUM + OO[0]) / M5DP); 즐거운 하루되세요 > gt 님이 쓴 글입니다. > 제목 : 문의 > 국내선물 지표인데 종가의 시간이 달라서 그런지 자정을 기준으로 바뀌네요. 해외선물이 끝나는 종가기준으로 수정부탁드립니다. VARS: MAXDAYLINE.SHORT(60); VARS: M5DP(5), M5D(0, DATA1), M5D.SUM(0, DATA1); VARS: DayLineCnt(0); ARRAY: CC[60](0, DATA1); //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( DATA1(Date <> Date[1]) ) Then { for DayLineCnt = 1 to MAXDAYLINE.SHORT - 1 { CC[DayLineCnt] = CC[DayLineCnt - 1][1]; } } CC[0] = CLOSE; M5D.SUM = 0; for DayLineCnt = 1 to MAXDAYLINE.SHORT - 1 { if ( (DayLineCnt < M5DP) AND (CC[M5DP - 1] > 0) ) Then M5D.SUM = M5D.SUM + CC[DayLineCnt]; } M5D = ((M5D.SUM + DATA1(OPEND(0))) / M5DP); 감사합니다.