커뮤니티

시스템신호

프로필 이미지
vhvh
2021-05-12 21:04:45
883
글번호 148962
답변완료
아래 시스템신호에서 매수신호에 뜨는 종목이 검색되게 부탁드려요 혼자 만들어보려고 별짓 다해봤는데 자꾸 검증오류가 뜨네요,, ㅜㅡㅜ Input : length(10),고점하락틱수(10),저점상승틱수(10); var : 추세두께(0),추세상승색(red),추세하락색(blue); var : 고점연결두께(3),고점연결색상(red); var : 저점연결두께(3),저점연결색상(black); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),TL11(0),TL12(0); Array:고[10,4](0),저[10,4](0); HH = H; LL = L; If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetSize(TL1,추세두께); TL_SetColor(TL1,추세상승색); if 저[1,1] > 저[2,1]+저점상승틱수*PriceScale Then { TL_Delete(TL11); TL11 = TL_New(저[2,3],저[2,4],저[2,1],저[1,3],저[1,4],저[1,1]); TL_SetExtRight(TL11,true); TL_SetColor(TL11,저점연결색상); TL_SetSize(TL11,저점연결두께); } } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetSize(TL1,추세두께); TL_SetColor(TL1,추세하락색); if 고[1,1] < 고[2,1]-고점하락틱수*PriceScale Then { TL_Delete(TL12); TL12 = TL_New(고[2,3],고[2,4],고[2,1],고[1,3],고[1,4],고[1,1]); TL_SetExtRight(TL12,true); TL_SetColor(TL12,고점연결색상); TL_SetSize(TL12,고점연결두께); } } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); } 최종꼭지점 = "저점"; } if MarketPosition <= 0 and C >= TL_GetValue(TL12,sDate,sTime) and C[1] < TL_GetValue(TL12,sDate[1],sTime[1]) Then Buy(); if MarketPosition == 1 and C <= TL_GetValue(TL12,sDate,sTime) and C[1] > TL_GetValue(TL12,sDate[1],sTime[1]) Then ExitLong(); if MarketPosition >= 0 and C <= TL_GetValue(TL11,sDate,sTime) and C[1] > TL_GetValue(TL11,sDate[1],sTime[1]) Then Sell(); if MarketPosition == 1 and C >= TL_GetValue(TL11,sDate,sTime) and C[1] < TL_GetValue(TL11,sDate[1],sTime[1]) Then ExitShort();
종목검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-05-13 11:32:40

안녕하세요 예스스탁입니다. 종목검색은 추세선이나 텍스트 출력함수를 사용할 수 없습니다. 종목검색식으로 구현하시려면 추세선에 의해 그려지는 모든 확장선등을 별도로 계산해서 작성하셔야 합니다. 아래식 참고하시기 바랍니다. 직전고점대비 지정한 틱수이상 낮은 최근고점이 발생하면 해당값을 저장해서 이후 추세선 연장시 하락값 계산해서 해당값 돌파하는 종목을 찾게 됩니다. 직전고점이 과거 언제 발생했을지 알수 없으므로 종목검색속성에서 종목검색에 제공되는 최대봉수인 500봉 지정하고 검색하시기 바랍니다. Input : length(10),고점하락틱수(10),저점상승틱수(10); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),TL11(0),TL12(0),T(0); Array:고[10,4](0),저[10,4](0); HH = H; LL = L; If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { T = 1; 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { T = -1; 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; } 최종꼭지점 = "저점"; } if T == -1 Then { if 고[1,1] < 고[2,1]-고점하락틱수*PriceScale Then { var1 = abs(고[1,1]-고[2,1])/abs(고[1,2]-고[2,2]); Var2 = 고[1,1]; Var3 = 고[1,2]; } } if Var2 > 0 Then { value1 = Var2-var1*(Index-Var3); if CrossUp(c,value1) Then Find(1); } 즐거운 하루되세요 > vhvh 님이 쓴 글입니다. > 제목 : 시스템신호 > 아래 시스템신호에서 매수신호에 뜨는 종목이 검색되게 부탁드려요 혼자 만들어보려고 별짓 다해봤는데 자꾸 검증오류가 뜨네요,, ㅜㅡㅜ Input : length(10),고점하락틱수(10),저점상승틱수(10); var : 추세두께(0),추세상승색(red),추세하락색(blue); var : 고점연결두께(3),고점연결색상(red); var : 저점연결두께(3),저점연결색상(black); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),TL11(0),TL12(0); Array:고[10,4](0),저[10,4](0); HH = H; LL = L; If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetSize(TL1,추세두께); TL_SetColor(TL1,추세상승색); if 저[1,1] > 저[2,1]+저점상승틱수*PriceScale Then { TL_Delete(TL11); TL11 = TL_New(저[2,3],저[2,4],저[2,1],저[1,3],저[1,4],저[1,1]); TL_SetExtRight(TL11,true); TL_SetColor(TL11,저점연결색상); TL_SetSize(TL11,저점연결두께); } } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetSize(TL1,추세두께); TL_SetColor(TL1,추세하락색); if 고[1,1] < 고[2,1]-고점하락틱수*PriceScale Then { TL_Delete(TL12); TL12 = TL_New(고[2,3],고[2,4],고[2,1],고[1,3],고[1,4],고[1,1]); TL_SetExtRight(TL12,true); TL_SetColor(TL12,고점연결색상); TL_SetSize(TL12,고점연결두께); } } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); } 최종꼭지점 = "저점"; } if MarketPosition <= 0 and C >= TL_GetValue(TL12,sDate,sTime) and C[1] < TL_GetValue(TL12,sDate[1],sTime[1]) Then Buy(); if MarketPosition == 1 and C <= TL_GetValue(TL12,sDate,sTime) and C[1] > TL_GetValue(TL12,sDate[1],sTime[1]) Then ExitLong(); if MarketPosition >= 0 and C <= TL_GetValue(TL11,sDate,sTime) and C[1] > TL_GetValue(TL11,sDate[1],sTime[1]) Then Sell(); if MarketPosition == 1 and C >= TL_GetValue(TL11,sDate,sTime) and C[1] < TL_GetValue(TL11,sDate[1],sTime[1]) Then ExitShort();