커뮤니티

당일 고점 후 눌림목과 반등 고점 찾기

프로필 이미지
기사단장
2022-12-11 23:24:24
1160
글번호 164506
답변완료

첨부 이미지

안녕하세요. 항상 큰 도움 감사드립니다. 지난번 특정 조건의 값을 배열에 저장하여 통계분석 하는 법을 알려주셨습니다. 해당 예시는 이미 확정된 과거의 값 (전일 고가/저가)여서 ii 변수로 매일의 값을 가져오는 문제이나, 이번에는 당일 고점과 눌림목을 찾아 가공 후 배열에 기록하고 해당 통계를 사용하여 매매하고자 합니다. 결과를 보았을때, 고점이 매 봉 실시간으로 갱신되어, 매 봉 신호가 나오는 문제가 있는 것으로 보여, 과거 데이터는 분석에만 사용하고, 실제 매매는 확정된 통계값 많을 사용하고 하고싶습니다. 혹시 일부 조건들이 모호하다면 임의로 추가해주셔도 무방하며 (예: 특정 시간동안의 저가를 눌림목으로 정의) 전반적인 분석과 매매 구조에 대해 검토해주시면 감사하겠습니다. https://www.yesstock.com/Board/View.asp?db=board100036&Ext=0&startpage=1&pageno=1&num=164394&ref=164369&Sort=&KeyField=NickName&KeyWord=%B1%E2%BB%E7%B4%DC%C0%E5 #수수료율: 0.004% #거래세: (매도시) 0.25% Input: GrowthRate(0.15); var: DayLowRate(0), AvgDayHigh(0),n(0),p(0),ii(0),jj(0),AL_Avg(0),AL_90(0),AL_99(0),AH(0),AvgDH(0),AvgDL(0); Array: DL[500](0),DH[500](0); #초기화 For ii = 1 to 499 { DL[ii] = 0; DH[ii] = 0; } n = 0; p = 0; For ii = 1 to 499 { # 전일 상승률이 GrowthRate 이상이면 If ((DayHigh(ii-1)-DayClose(ii))/DayClose(ii)) >= GrowthRate Then { # 당일 13시 이전 고가(Value1)와 봉의 위치(Value2) 저장 if DayHigh >= GrowthRate and H[ii-1]>H[ii] and sTime <= 130000 Then { #해당봉의 고가 저장 value1 = H[ii-1]; #해당봉 이후 경과된 봉 수를 저장한 변수 (초기값 0) Value2 = 0; } Else { #Value2를 1씩 증가(조건만족이후 경과된 봉 수) If value1 > 0 Then value2 = Value2+1; } #저가와 위치 저장 If L[ii-1]<L[ii] Then { Value3 = L[ii-1]; Value4 = 0; } Else { if Value3 > 0 Then Value4 = Value4+1; } #찾은 고가 위치 이후의 저가(눌림목)만 저장 If L[ii-1]<L[ii] and Value1 >0 and Value4 >= Value2 Then { Value5 = Value3; } #고가와 위치 저장 If H[ii-1]>H[ii] Then { Value6 = H; Value7 = 0; } Else { If value6 > 0 Then Value7 = Value7+1; } #눌림목 이후의 고가(반등)만 저장 If H[ii-1]>H[ii] and value1 > 0 and Value5 > 0 and Value7 >= Value4 Then { Value8 = Value6; } #일 마지막 봉에서 최종 고가,눌림목, 반등 가격에 대한 비율 저장 if NextBarSdate <> sdate Then{ # 고가는 매 봉마다 갱신되므로, 최종 가격을 사후에 기록하기 위한 조건 # 상승 후 하락율을 Array에 기록 DayLowRate = ((Value5-value1)/value1); DL[n] = DayLowRate; AvgDL = AverageArray(DL,n+1); n = n+1; # 하락 후 반등율을 Array에 기록 AvgDayHigh = ((Value8-value5)/value5); DH[p] = AvgDayHigh; AvgDH = AverageArray(DH,p+1); p = p+1; } }} # 시가 기준 평균 하락율 도달 시 가격 AL_Avg = DayOpen*(1+AvgDL); # 시가 기준 평균 상승률 도달 시 가격 AH = DayOpen*(1+AvgDH); Buy("b1",AtLimit,AL_Avg); ExitLong("S",Atlimit,AH);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-12-12 16:22:05

안녕하세요 예스스탁입니다. 답변내용이 맞는지 모르겠습니다. 아래 내용으로 작성한 식입니다. 아마 올리신 내용은 당일 13시 이전에 당일고가가 전일종가대비 GrowthRate이상 상승한 날이 발생하면 최고가 이후에 최저가 하락율을 구하고 또한 해당 최저가 이후의 최고가와 반등율을 구해서 전체 기간 해당 각 값의 평균을 이용하시는 내용인 것 같습니다. 1 지표 Input: GrowthRate(0.15); var: cnt(0),AvgDH(0),AvgDL(0),n(0),AL_Avg(0),AH(0); Array: DL[500](0),DH[500](0); if Bdate != Bdate[1] Then { Condition1 = False; For cnt = 499 DownTo 1 { DL[cnt] = DL[cnt-1]; DH[cnt] = DH[cnt-1]; } if Condition1[1] == true Then n = n+1; } If H == DayHigh and sTime < 130000 and (DayHigh(0)-DayClose(1))/DayClose(1)*100 >= GrowthRate Then { Condition1 = True; value1 = H; Value5 = 0; Value8 = 0; } Else { if Condition1 == true Then { if Value5 == 0 or (Value5 > 0 and L < Value5) Then { Value5 = L; Value8 = H; } Else { if H > Value8 Then Value8 = h; } # 상승 후 하락율을 Array에 기록 DL[0] = (Value5-value1)/value1; AvgDL = AverageArray(DL,n+1); # 하락 후 반등율을 Array에 기록 DH[0] = ((Value8-value5)/value5); AvgDH = AverageArray(DH,n+1); } } if NextBarSdate != sDate Then { # 시가 기준 평균 하락율 도달 시 가격 AL_Avg = NextBarOpen*(1+AvgDL); # 시가 기준 평균 상승률 도달 시 가격 AH = NextBarOpen*(1+AvgDH); } Plot1(AL_Avg); Plot2(AH); 2 시스템 Input: GrowthRate(0.15); var: cnt(0),AvgDH(0),AvgDL(0),n(0),AL_Avg(0),AH(0); Array: DL[500](0),DH[500](0); if Bdate != Bdate[1] Then { Condition1 = False; For cnt = 499 DownTo 1 { DL[cnt] = DL[cnt-1]; DH[cnt] = DH[cnt-1]; } if Condition1[1] == true Then n = n+1; } If H == DayHigh and sTime < 130000 and (DayHigh(0)-DayClose(1))/DayClose(1)*100 >= GrowthRate Then { Condition1 = True; value1 = H; Value5 = 0; Value8 = 0; } Else { if Condition1 == true Then { if Value5 == 0 or (Value5 > 0 and L < Value5) Then { Value5 = L; Value8 = H; } Else { if H > Value8 Then Value8 = h; } # 상승 후 하락율을 Array에 기록 DL[0] = (Value5-value1)/value1; AvgDL = AverageArray(DL,n+1); # 하락 후 반등율을 Array에 기록 DH[0] = ((Value8-value5)/value5); AvgDH = AverageArray(DH,n+1); } } if NextBarSdate != sDate Then { # 시가 기준 평균 하락율 도달 시 가격 AL_Avg = NextBarOpen*(1+AvgDL); # 시가 기준 평균 상승률 도달 시 가격 AH = NextBarOpen*(1+AvgDH); } if AL_Avg > 0 Then { Buy("b1",AtLimit,AL_Avg); ExitLong("S",Atlimit,AH); } 즐거운 하루되세요 > 기사단장 님이 쓴 글입니다. > 제목 : 당일 고점 후 눌림목과 반등 고점 찾기 > 안녕하세요. 항상 큰 도움 감사드립니다. 지난번 특정 조건의 값을 배열에 저장하여 통계분석 하는 법을 알려주셨습니다. 해당 예시는 이미 확정된 과거의 값 (전일 고가/저가)여서 ii 변수로 매일의 값을 가져오는 문제이나, 이번에는 당일 고점과 눌림목을 찾아 가공 후 배열에 기록하고 해당 통계를 사용하여 매매하고자 합니다. 결과를 보았을때, 고점이 매 봉 실시간으로 갱신되어, 매 봉 신호가 나오는 문제가 있는 것으로 보여, 과거 데이터는 분석에만 사용하고, 실제 매매는 확정된 통계값 많을 사용하고 하고싶습니다. 혹시 일부 조건들이 모호하다면 임의로 추가해주셔도 무방하며 (예: 특정 시간동안의 저가를 눌림목으로 정의) 전반적인 분석과 매매 구조에 대해 검토해주시면 감사하겠습니다. https://www.yesstock.com/Board/View.asp?db=board100036&Ext=0&startpage=1&pageno=1&num=164394&ref=164369&Sort=&KeyField=NickName&KeyWord=%B1%E2%BB%E7%B4%DC%C0%E5 #수수료율: 0.004% #거래세: (매도시) 0.25% Input: GrowthRate(0.15); var: DayLowRate(0), AvgDayHigh(0),n(0),p(0),ii(0),jj(0),AL_Avg(0),AL_90(0),AL_99(0),AH(0),AvgDH(0),AvgDL(0); Array: DL[500](0),DH[500](0); #초기화 For ii = 1 to 499 { DL[ii] = 0; DH[ii] = 0; } n = 0; p = 0; For ii = 1 to 499 { # 전일 상승률이 GrowthRate 이상이면 If ((DayHigh(ii-1)-DayClose(ii))/DayClose(ii)) >= GrowthRate Then { # 당일 13시 이전 고가(Value1)와 봉의 위치(Value2) 저장 if DayHigh >= GrowthRate and H[ii-1]>H[ii] and sTime <= 130000 Then { #해당봉의 고가 저장 value1 = H[ii-1]; #해당봉 이후 경과된 봉 수를 저장한 변수 (초기값 0) Value2 = 0; } Else { #Value2를 1씩 증가(조건만족이후 경과된 봉 수) If value1 > 0 Then value2 = Value2+1; } #저가와 위치 저장 If L[ii-1]<L[ii] Then { Value3 = L[ii-1]; Value4 = 0; } Else { if Value3 > 0 Then Value4 = Value4+1; } #찾은 고가 위치 이후의 저가(눌림목)만 저장 If L[ii-1]<L[ii] and Value1 >0 and Value4 >= Value2 Then { Value5 = Value3; } #고가와 위치 저장 If H[ii-1]>H[ii] Then { Value6 = H; Value7 = 0; } Else { If value6 > 0 Then Value7 = Value7+1; } #눌림목 이후의 고가(반등)만 저장 If H[ii-1]>H[ii] and value1 > 0 and Value5 > 0 and Value7 >= Value4 Then { Value8 = Value6; } #일 마지막 봉에서 최종 고가,눌림목, 반등 가격에 대한 비율 저장 if NextBarSdate <> sdate Then{ # 고가는 매 봉마다 갱신되므로, 최종 가격을 사후에 기록하기 위한 조건 # 상승 후 하락율을 Array에 기록 DayLowRate = ((Value5-value1)/value1); DL[n] = DayLowRate; AvgDL = AverageArray(DL,n+1); n = n+1; # 하락 후 반등율을 Array에 기록 AvgDayHigh = ((Value8-value5)/value5); DH[p] = AvgDayHigh; AvgDH = AverageArray(DH,p+1); p = p+1; } }} # 시가 기준 평균 하락율 도달 시 가격 AL_Avg = DayOpen*(1+AvgDL); # 시가 기준 평균 상승률 도달 시 가격 AH = DayOpen*(1+AvgDH); Buy("b1",AtLimit,AL_Avg); ExitLong("S",Atlimit,AH);