커뮤니티

챠트의 자동추세선 자동 업데이트

프로필 이미지
온고지신
2025-12-30 15:38:53
76
글번호 229486
답변완료

첨부 이미지

챠트에서 자동추세선 기능을 적용시켰을 때 시간이 흘러서 다시 스윙포인트들 찾고 선들이 그어질 때가 됐는데 너무 조용해서 다시 해보니 실시간 반응을 안하더라구요.


이걸 실시간에 업데이트 되도록 해서 신호에 응용하려고 하는데 참고할 만한 소스코드나 또는 스윙포인트 잡는 기준 및 그리고 간혹 보면 점이 안에가 빈 스윙포인트도 잡고 어떤 곳은 분명 잡힐만 한데 안잡히는 곳도 있어서 그런 것에 대한 정의 같은 것이라도 알려주시면 직접 짜보도록 하겠습니다.


그림은 단기(10)으로 잡아본건데 저 고점에서의 스윙포인트를 안잡아서 이건 무슨 예외처린가 궁금하기도 하고요.

지표
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2026-01-02 11:18:42

안녕하세요 예스스탁입니다. 보조도구의 자동추세선은 자동업데이트는 되지 않습니다. 고/저점은 판단 기준은 예스랭귀지의 swinghigh,swinglow함수와 같습니다. 고/저점 동그라미는 아래 2가지일 경우 속이 빈 동그라미로 그려지게 됩니다. 해당 고저점이 유일한 값이 아닐 경우입니다. 고/저점을 체크하는 기간에 동일값이 없는 고저점이면 속을 채우고 같은 값이 있는 고저점이면 속이 비게 됩니다. 고점과 고점사이에 저점조건에 해당 하는 봉이 없으면 고점과 고점 사이의 최저가가 저점이 되고 해당 저점도 속이 빈 동그라미로 표시됩니다. 반대도 마찬가지 입니다. 이 외에 자동추세선에는 상황에 따라 이전 고저점 표시를 삭제하는 케이스가 있는데 해당 부분까지는 랭귀지로 구현이 어렵습니다. 아래식 참고하시기 바랍니다. input : 기간(10); var : T(0),cnt(0),tx(0),htl(0),ltl(0); var : lefth(0),leftl(0); var : tHH(0),tHD(0),tHT(0),tHI(0); var : tLL(0),tLD(0),tLT(0),tLI(0); Array : HD[20](0),HT[20](0),HH[20](0),HI[20](0); Array : LD[20](0),LT[20](0),LL[20](0),LI[20](0); lefth = highest(H,기간)[기간+1]; leftL = lowest(L,기간)[기간+1]; if SwingHigh(1,h,기간,기간,기간*2+1) != -1 Then { T = 1; For cnt = 19 DownTo 1 { HH[cnt] = HH[cnt-1]; HD[cnt] = HD[cnt-1]; HT[cnt] = HT[cnt-1]; HI[cnt] = HI[cnt-1]; } HH[0] = h[기간]; HD[0] = sDate[기간]; HT[0] = sTime[기간]; HI[0] = Index[기간]; if HH[0] != lefth Then tx = Text_New(HD[0],HT[0],HH[0],"●"); Else tx = Text_New(HD[0],HT[0],HH[0],"○"); Text_SetColor(tx,Red); Text_SetStyle(tx,2,2); Condition1 = False; For cnt = 1 to 19 { if Condition1 == False and HH[cnt] > HH[0] Then { TL_Delete(htl); Condition1 = true; htl = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]); TL_SetColor(htl,Red); TL_SetSize(htl,1); TL_SetExtRight(htl,true); } } if T[1] != 0 and T == T[1] Then { For cnt = 19 DownTo 1 { LL[cnt] = LL[cnt-1]; LD[cnt] = LD[cnt-1]; LT[cnt] = LT[cnt-1]; LI[cnt] = LI[cnt-1]; } tLL = 0; tLD = 0; tLT = 0; tLI = 0; For cnt = index-HI[0] to index-HI[1] { if tLL == 0 or (tLL > 0 and L[cnt] < tLL) Then { tLL = L[cnt]; tLD = sDate[cnt]; tLT = sTime[cnt]; tLi = Index[cnt]; } } LL[0] = tLL; LD[0] = tLD; LT[0] = tLT; LI[0] = tLI; tx = Text_New(LD[0],LT[0],LL[0],"○"); Text_SetColor(tx,Blue); Text_SetStyle(tx,2,2); Condition2 = False; For cnt = 1 to 19 { if Condition2 == False and LL[cnt] < LL[0] Then { TL_Delete(ltl); Condition2 = true; ltl = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]); TL_SetColor(ltl,Blue); TL_SetSize(ltl,1); TL_SetExtRight(ltl,true); } } } } if Swinglow(1,L,기간,기간,기간*2+1) != -1 Then { T = -1; For cnt = 19 DownTo 1 { LL[cnt] = LL[cnt-1]; LD[cnt] = LD[cnt-1]; LT[cnt] = LT[cnt-1]; LI[cnt] = LI[cnt-1]; } LL[0] = L[기간]; LD[0] = sDate[기간]; LT[0] = sTime[기간]; LI[0] = Index[기간]; if LL[0] != leftl Then tx = Text_New(LD[0],LT[0],LL[0],"●"); Else tx = Text_New(LD[0],LT[0],LL[0],"○"); Text_SetColor(tx,Blue); Text_SetStyle(tx,2,2); Condition2 = False; For cnt = 1 to 19 { if Condition2 == False and LL[cnt] < LL[0] Then { TL_Delete(ltl); Condition2 = true; ltl = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]); TL_SetColor(ltl,Blue); TL_SetSize(ltl,1); TL_SetExtRight(ltl,true); } } if T[1] != 0 and T == T[1] Then { For cnt = 19 DownTo 1 { HH[cnt] = HH[cnt-1]; HD[cnt] = HD[cnt-1]; HT[cnt] = HT[cnt-1]; HI[cnt] = HI[cnt-1]; } tHH = 0; tHD = 0; tHT = 0; tHI = 0; For cnt = index-Li[0] to index-Li[1] { if tHH == 0 or (tHH > 0 and H[cnt] > tHH) Then { tHH = H[cnt]; tHD = sDate[cnt]; tHT = sTime[cnt]; tHi = Index[cnt]; } } HH[0] = tHH; HD[0] = tHD; HT[0] = tHT; HI[0] = tHI; tx = Text_New(HD[0],HT[0],HH[0],"○"); Text_SetColor(tx,Red); Text_SetStyle(tx,2,2); Condition1 = False; For cnt = 1 to 19 { if Condition1 == False and HH[cnt] > HH[0] Then { TL_Delete(htl); Condition1 = true; htl = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]); TL_SetColor(htl,Red); TL_SetSize(htl,1); TL_SetExtRight(htl,true); } } } } 새해 복 많이 받으세요
프로필 이미지

온고지신

2026-01-03 00:39:57

답변 감사합니다~ 병오년도 언제나 행복이 함께 하시길 빕니다~