커뮤니티

추세선생성과 참조데이터

프로필 이미지
ravit
2021-02-02 06:44:04
844
글번호 146031
답변완료

첨부 이미지

(그림1은 글 아래에 있는 코드를 실행했을 때 나온 결과입니다.) 참조데이터가 있는 상황에서 당일 가장 먼저 생긴 봉에서만 추세선 계산이 발생합니다. 2020-12-18 16:00:00 추세선 계산 X 2020-12-18 17:00:00 추세선 계산 X 2020-12-21 10:00:00 추세선 계산 O 2020-12-21 11:00:00 추세선 계산 X 문제는 HighD 같은 함수 적용시에 발생합니다. 당일고점발생 시각을 참조하여 추세선을 그릴 때, 당일고점발생 시각을 찾았다하더라도, 오전10시보다 늦다면, 이 값은 활용할 수 없는 값입니다. 왜냐하면 추세선계산함수는 언제나 오전10시( 당일 데이터 중 첫 봉)에만 계산되기 때문입니다. 하루 중 가장 마지막 봉에서 계산을 실행할 수 있도록 코드를 바꿀 수 있나요? 하루가 끝날 때 계산을 진행해야 데이터를 취합해서 원하는 결과를 낼 수 있는 상황입니다. 어떻게 해야되나요? ------------아래는 문제가 되는 실제코드--------------------------------------- var : line_ver(0,Data1); var : HT2(0,Data2),LT2(0,Data2); If Data2(H == HighD(0)) Then HT2 = Data2(sTime); If Data2(L == LowD(0)) Then LT2 = Data2(sTime); If HT2 <= LT2 Then line_ver = TL_New(sDate,sTime,H[0],sDate,sTime,H[0]+10000); Else if HT2>LT2 Then line_ver = TL_New(sDate,sTime,L[0],sDate,sTime,L[0]-10000); ----------------------------------------------------------------------------- 이 함수는 조건문으로 작성되었지만, 언제나 line_ver = TL_New(sDate,sTime,H[0],sDate,sTime,H[0]+10000); 이 부분만 실행될 것입니다. line_ver = TL_New(sDate,sTime,L[0],sDate,sTime,L[0]-10000); 이 부분은 실행될 수 없죠. 왜냐하면 HT2>LT2일 때는 어찌됐건 오전10시 이후이기 때문입니다.. 당일 첫봉은 HT2 = LT2 일 수 밖에 없고, 따라서 line_ver = TL_New(sDate,sTime,H[0],sDate,sTime,H[0]+10000); 만 실행될 것입니다. 추세선계산은 당일 첫봉에서만 발생하니 이후 데이터에서의 HT2 나 LT2나 활용을 할 수 없는 상태입니다...
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-02-02 18:10:13

안녕하세요 예스스탁입니다. 해당 부분은 추세선 함수의 내부적인 체계때문에 발생하는 내용으로 현재 수식으로는 처리가 가능하지 않습니다. 실제 아래 지표와 시스템 적용해 보시면 지표와 시스템은 기본차트 봉완성시에 그날 60분봉 기준 최고가와 최저가 발생시간 기준으로 신호가 발생합니다. 하지만 추세선은 내부적으로 반복실행의 부하를 줄이기 위해서 기본차트 봉완성시 한번만 동작하게 되어 있습니다. 참조데이타가 기본차트보다 짧은 주기라 기본차트 봉완성시 참조데이타의 그날 첫봉부터 반복계산하게 되는데 참조데이타 첫봉이 완성이 되면 1회실행조건이 충족되어서 말씀하신 대로 data2의 첫봉기준 조건으로 출력되게 됩니다. 해당 부분은 추세선 함수의 출력구조를 변경해야 하는 부분인데 변경 가능한지 건의를 해보도록 하겠습니다. 도움을 드리지 못해 죄송합니다. 1 var : line_ver(0,Data1); var : HT2(0,Data2),LT2(0,Data2); If Data2(H == HighD(0)) Then HT2 = Data2(sTime); If Data2(L == LowD(0)) Then LT2 = Data2(sTime); Plot1(ht2); plot2(lt2); 2 var : line_ver(0,Data1); var : HT2(0,Data2),LT2(0,Data2); If Data2(H == HighD(0)) Then HT2 = Data2(sTime); If Data2(L == LowD(0)) Then LT2 = Data2(sTime); If HT2[1] <= LT2[1] Then { Buy("b"); } Else if HT2>LT2 Then { ExitLong("bx"); } 즐거운 하루되세요 > ravit 님이 쓴 글입니다. > 제목 : 추세선생성과 참조데이터 > (그림1은 글 아래에 있는 코드를 실행했을 때 나온 결과입니다.) 참조데이터가 있는 상황에서 당일 가장 먼저 생긴 봉에서만 추세선 계산이 발생합니다. 2020-12-18 16:00:00 추세선 계산 X 2020-12-18 17:00:00 추세선 계산 X 2020-12-21 10:00:00 추세선 계산 O 2020-12-21 11:00:00 추세선 계산 X 문제는 HighD 같은 함수 적용시에 발생합니다. 당일고점발생 시각을 참조하여 추세선을 그릴 때, 당일고점발생 시각을 찾았다하더라도, 오전10시보다 늦다면, 이 값은 활용할 수 없는 값입니다. 왜냐하면 추세선계산함수는 언제나 오전10시( 당일 데이터 중 첫 봉)에만 계산되기 때문입니다. 하루 중 가장 마지막 봉에서 계산을 실행할 수 있도록 코드를 바꿀 수 있나요? 하루가 끝날 때 계산을 진행해야 데이터를 취합해서 원하는 결과를 낼 수 있는 상황입니다. 어떻게 해야되나요? ------------아래는 문제가 되는 실제코드--------------------------------------- var : line_ver(0,Data1); var : HT2(0,Data2),LT2(0,Data2); If Data2(H == HighD(0)) Then HT2 = Data2(sTime); If Data2(L == LowD(0)) Then LT2 = Data2(sTime); If HT2 <= LT2 Then line_ver = TL_New(sDate,sTime,H[0],sDate,sTime,H[0]+10000); Else if HT2>LT2 Then line_ver = TL_New(sDate,sTime,L[0],sDate,sTime,L[0]-10000); ----------------------------------------------------------------------------- 이 함수는 조건문으로 작성되었지만, 언제나 line_ver = TL_New(sDate,sTime,H[0],sDate,sTime,H[0]+10000); 이 부분만 실행될 것입니다. line_ver = TL_New(sDate,sTime,L[0],sDate,sTime,L[0]-10000); 이 부분은 실행될 수 없죠. 왜냐하면 HT2>LT2일 때는 어찌됐건 오전10시 이후이기 때문입니다.. 당일 첫봉은 HT2 = LT2 일 수 밖에 없고, 따라서 line_ver = TL_New(sDate,sTime,H[0],sDate,sTime,H[0]+10000); 만 실행될 것입니다. 추세선계산은 당일 첫봉에서만 발생하니 이후 데이터에서의 HT2 나 LT2나 활용을 할 수 없는 상태입니다...