커뮤니티

수정부탁드립니다.

프로필 이미지
외국인
2024-09-27 12:32:52
771
글번호 183796
답변완료
변곡점에서 텍스트 표시부탁드립니다. var:length(150); Var : uTL1(0),uTL2(0),TL2_exist(0),color(0),uT(0), 종가사용여부(1), // 종가로 계산하려면 1로 설정한다. TL_NewBit(0), // 1:NewLine 2:SetEndLine slope(0),mid_idx(0),mid_val(0); var : TL11(0),TL12(0),TL13(0),TL14(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(length,종가사용여부,고,저,TL_NewBit); // HiLoLineZigZag는 사용자함수입니다. 링크에서 내려받으세요.. If Value1 == 1 Then { // 고점 uT = 1; If TL_NewBit == 1 Then { // 신규 If 고[2,1] < 고[1,1] Then { // 신규 고점이 이전 고점을 상향 돌파 // y = 기울기 * x + 절편 // x = (y - 절편) / 기울기 // y = 고[2,1] // 절편 = 저[1,1] slope = (고[1,1] - 저[1,1]) / (고[1,2] - 저[1,2]); // 추세선의 기울기 mid_idx = Floor((고[2,1] - 저[1,1]) / slope); // 고[2,1]과 만나는 지점 mid_val = slope * mid_idx + 저[1,1]; Var1 = Index - (저[1,2] + mid_idx); // 추세선의 중간지점 x좌표 uTL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; // 이전 색깔을 따라감 TL_SetColor(uTL1,color[Var2]); color = RED; // 상향 돌파했으므로 빨간색으로 전환 TL_SetColor(uTL2,color); TL2_exist = 1; // 추세선 2개를 연결해서 그린 것이므로 추세선이 2개임을 저장 } Else { uTL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(uTL1); If TL2_exist == 1 Then TL_Delete(uTL2); // 추세선이 2개면 두번째 추세선도 삭제 If 고[2,1] < 고[1,1] Then { slope = (고[1,1] - 저[1,1]) / (고[1,2] - 저[1,2]); mid_idx = Floor((고[2,1] - 저[1,1]) / slope); mid_val = slope * mid_idx + 저[1,1]; Var1 = Index - (저[1,2] + mid_idx); uTL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; TL_SetColor(uTL1,color[Var2]); color = RED; TL_SetColor(uTL2,color); TL2_exist = 1; } Else { uTL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } } Else If Value1 == -1 Then { // 저점 uT = -1; If TL_NewBit == 1 Then { // 신규 If 저[2,1] > 저[1,1] Then { slope = (저[1,1] - 고[1,1]) / (저[1,2] - 고[1,2]); mid_idx = Floor((저[2,1] - 고[1,1]) / slope); mid_val = slope * mid_idx + 고[1,1]; Var1 = Index - (고[1,2] + mid_idx); uTL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(uTL1,color[Var2]); color = BLUE; TL_SetColor(uTL2,color); TL2_exist = 1; } Else { uTL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(uTL1); If TL2_exist == 1 Then TL_Delete(uTL2); If 저[2,1] > 저[1,1] Then { slope = (저[1,1] - 고[1,1]) / (저[1,2] - 고[1,2]); mid_idx = Floor((저[2,1] - 고[1,1]) / slope); mid_val = slope * mid_idx + 고[1,1]; Var1 = Index - (고[1,2] + mid_idx); uTL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(uTL1,color[Var2]); color = BLUE; TL_SetColor(uTL2,color); TL2_exist = 1; } Else { uTL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } } TL_SetSize(uTL1,6); TL_SetSize(uTL2,1); if uT != uT[1] and uT == 1 then { TL11 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],고[2,1],sdate[index-고[2,2]],stime[index-고[2,2]],고[2,1]); TL12 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],저[1,1],sdate[index-고[2,2]],stime[index-고[2,2]],저[1,1]); TL13 = TL_New(sdate[index-고[2,2]],stime[index-고[2,2]],고[2,1],sdate[index-고[2,2]],stime[index-고[2,2]],저[1,1]); TL14 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],고[2,1],sdate[index-저[1,2]],stime[index-저[1,2]],저[1,1]); // PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); TL_SetColor(Tl11,BLUE); TL_SetColor(Tl12,BLUE); TL_SetColor(Tl13,BLUE); TL_SetColor(Tl14,BLUE); TL_SetSize(Tl11,1); TL_SetSize(Tl12,1); TL_SetSize(Tl13,1); TL_SetSize(Tl14,1); } if uT != uT[1] and uT == -1 then { TL11 = TL_New(sdate[index-저[2,2]],stime[index-저[2,2]],고[1,1],sdate[index-고[1,2]],stime[index-고[1,2]],고[1,1]); TL12 = TL_New(sdate[index-저[2,2]],stime[index-저[2,2]],저[2,1],sdate[index-고[1,2]],stime[index-고[1,2]],저[2,1]); TL13 = TL_New(sdate[index-고[1,2]],stime[index-고[1,2]],고[1,1],sdate[index-고[1,2]],stime[index-고[1,2]],저[2,1]); TL14 = TL_New(sdate[index-저[2,2]],stime[index-저[2,2]],고[1,1],sdate[index-저[2,2]],stime[index-저[2,2]],저[2,1]); // PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); TL_SetColor(Tl11,RED); TL_SetColor(Tl12,RED); TL_SetColor(Tl13,RED); TL_SetColor(Tl14,red); TL_SetSize(Tl11,1); TL_SetSize(Tl12,1); TL_SetSize(Tl13,6); TL_SetSize(Tl14,6); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-09-27 14:11:36

안녕하세요 예스스탁입니다. var:length(150); Var : uTL1(0),uTL2(0),TL2_exist(0),color(0),uT(0), 종가사용여부(1), // 종가로 계산하려면 1로 설정한다. TL_NewBit(0), // 1:NewLine 2:SetEndLine slope(0),mid_idx(0),mid_val(0); var : TL11(0),TL12(0),TL13(0),TL14(0),TX(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(length,종가사용여부,고,저,TL_NewBit); // HiLoLineZigZag는 사용자함수입니다. 링크에서 내려받으세요.. If Value1 == 1 Then { // 고점 uT = 1; If TL_NewBit == 1 Then { // 신규 If 고[2,1] < 고[1,1] Then { // 신규 고점이 이전 고점을 상향 돌파 // y = 기울기 * x + 절편 // x = (y - 절편) / 기울기 // y = 고[2,1] // 절편 = 저[1,1] slope = (고[1,1] - 저[1,1]) / (고[1,2] - 저[1,2]); // 추세선의 기울기 mid_idx = Floor((고[2,1] - 저[1,1]) / slope); // 고[2,1]과 만나는 지점 mid_val = slope * mid_idx + 저[1,1]; Var1 = Index - (저[1,2] + mid_idx); // 추세선의 중간지점 x좌표 uTL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; // 이전 색깔을 따라감 TL_SetColor(uTL1,color[Var2]); color = RED; // 상향 돌파했으므로 빨간색으로 전환 TL_SetColor(uTL2,color); TL2_exist = 1; // 추세선 2개를 연결해서 그린 것이므로 추세선이 2개임을 저장 } Else { uTL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(uTL1); If TL2_exist == 1 Then TL_Delete(uTL2); // 추세선이 2개면 두번째 추세선도 삭제 If 고[2,1] < 고[1,1] Then { slope = (고[1,1] - 저[1,1]) / (고[1,2] - 저[1,2]); mid_idx = Floor((고[2,1] - 저[1,1]) / slope); mid_val = slope * mid_idx + 저[1,1]; Var1 = Index - (저[1,2] + mid_idx); uTL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; TL_SetColor(uTL1,color[Var2]); color = RED; TL_SetColor(uTL2,color); TL2_exist = 1; } Else { uTL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } } Else If Value1 == -1 Then { // 저점 uT = -1; If TL_NewBit == 1 Then { // 신규 If 저[2,1] > 저[1,1] Then { slope = (저[1,1] - 고[1,1]) / (저[1,2] - 고[1,2]); mid_idx = Floor((저[2,1] - 고[1,1]) / slope); mid_val = slope * mid_idx + 고[1,1]; Var1 = Index - (고[1,2] + mid_idx); uTL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(uTL1,color[Var2]); color = BLUE; TL_SetColor(uTL2,color); TL2_exist = 1; } Else { uTL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(uTL1); If TL2_exist == 1 Then TL_Delete(uTL2); If 저[2,1] > 저[1,1] Then { slope = (저[1,1] - 고[1,1]) / (저[1,2] - 고[1,2]); mid_idx = Floor((저[2,1] - 고[1,1]) / slope); mid_val = slope * mid_idx + 고[1,1]; Var1 = Index - (고[1,2] + mid_idx); uTL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(uTL1,color[Var2]); color = BLUE; TL_SetColor(uTL2,color); TL2_exist = 1; } Else { uTL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } } TL_SetSize(uTL1,6); TL_SetSize(uTL2,1); if ut == 1 Then { if uT != uT[1] and uT == 1 then { TL11 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],고[2,1],sdate[index-고[2,2]],stime[index-고[2,2]],고[2,1]); TL12 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],저[1,1],sdate[index-고[2,2]],stime[index-고[2,2]],저[1,1]); TL13 = TL_New(sdate[index-고[2,2]],stime[index-고[2,2]],고[2,1],sdate[index-고[2,2]],stime[index-고[2,2]],저[1,1]); TL14 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],고[2,1],sdate[index-저[1,2]],stime[index-저[1,2]],저[1,1]); // PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); TL_SetColor(Tl11,BLUE); TL_SetColor(Tl12,BLUE); TL_SetColor(Tl13,BLUE); TL_SetColor(Tl14,BLUE); TL_SetSize(Tl11,1); TL_SetSize(Tl12,1); TL_SetSize(Tl13,1); TL_SetSize(Tl14,1); tx = text_new(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(tx,2,1); } Else { Text_SetString(tx,NumToStr(고[1,1],2)); Text_SetLocation(Tx,고[1,3],고[1,4],고[1,1]); } } if ut == -1 Then { if uT != uT[1] and uT == -1 then { TL11 = TL_New(sdate[index-저[2,2]],stime[index-저[2,2]],고[1,1],sdate[index-고[1,2]],stime[index-고[1,2]],고[1,1]); TL12 = TL_New(sdate[index-저[2,2]],stime[index-저[2,2]],저[2,1],sdate[index-고[1,2]],stime[index-고[1,2]],저[2,1]); TL13 = TL_New(sdate[index-고[1,2]],stime[index-고[1,2]],고[1,1],sdate[index-고[1,2]],stime[index-고[1,2]],저[2,1]); TL14 = TL_New(sdate[index-저[2,2]],stime[index-저[2,2]],고[1,1],sdate[index-저[2,2]],stime[index-저[2,2]],저[2,1]); // PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); TL_SetColor(Tl11,RED); TL_SetColor(Tl12,RED); TL_SetColor(Tl13,RED); TL_SetColor(Tl14,red); TL_SetSize(Tl11,1); TL_SetSize(Tl12,1); TL_SetSize(Tl13,6); TL_SetSize(Tl14,6); tx = text_new(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(tx,2,0); } Else { Text_SetString(tx,NumToStr(저[1,1],2)); Text_SetLocation(Tx,저[1,3],저[1,4],저[1,1]); } } 즐거운 하루되세요 > 외국인 님이 쓴 글입니다. > 제목 : 수정부탁드립니다. > 변곡점에서 텍스트 표시부탁드립니다. var:length(150); Var : uTL1(0),uTL2(0),TL2_exist(0),color(0),uT(0), 종가사용여부(1), // 종가로 계산하려면 1로 설정한다. TL_NewBit(0), // 1:NewLine 2:SetEndLine slope(0),mid_idx(0),mid_val(0); var : TL11(0),TL12(0),TL13(0),TL14(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(length,종가사용여부,고,저,TL_NewBit); // HiLoLineZigZag는 사용자함수입니다. 링크에서 내려받으세요.. If Value1 == 1 Then { // 고점 uT = 1; If TL_NewBit == 1 Then { // 신규 If 고[2,1] < 고[1,1] Then { // 신규 고점이 이전 고점을 상향 돌파 // y = 기울기 * x + 절편 // x = (y - 절편) / 기울기 // y = 고[2,1] // 절편 = 저[1,1] slope = (고[1,1] - 저[1,1]) / (고[1,2] - 저[1,2]); // 추세선의 기울기 mid_idx = Floor((고[2,1] - 저[1,1]) / slope); // 고[2,1]과 만나는 지점 mid_val = slope * mid_idx + 저[1,1]; Var1 = Index - (저[1,2] + mid_idx); // 추세선의 중간지점 x좌표 uTL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; // 이전 색깔을 따라감 TL_SetColor(uTL1,color[Var2]); color = RED; // 상향 돌파했으므로 빨간색으로 전환 TL_SetColor(uTL2,color); TL2_exist = 1; // 추세선 2개를 연결해서 그린 것이므로 추세선이 2개임을 저장 } Else { uTL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(uTL1); If TL2_exist == 1 Then TL_Delete(uTL2); // 추세선이 2개면 두번째 추세선도 삭제 If 고[2,1] < 고[1,1] Then { slope = (고[1,1] - 저[1,1]) / (고[1,2] - 저[1,2]); mid_idx = Floor((고[2,1] - 저[1,1]) / slope); mid_val = slope * mid_idx + 저[1,1]; Var1 = Index - (저[1,2] + mid_idx); uTL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; TL_SetColor(uTL1,color[Var2]); color = RED; TL_SetColor(uTL2,color); TL2_exist = 1; } Else { uTL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } } Else If Value1 == -1 Then { // 저점 uT = -1; If TL_NewBit == 1 Then { // 신규 If 저[2,1] > 저[1,1] Then { slope = (저[1,1] - 고[1,1]) / (저[1,2] - 고[1,2]); mid_idx = Floor((저[2,1] - 고[1,1]) / slope); mid_val = slope * mid_idx + 고[1,1]; Var1 = Index - (고[1,2] + mid_idx); uTL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(uTL1,color[Var2]); color = BLUE; TL_SetColor(uTL2,color); TL2_exist = 1; } Else { uTL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(uTL1); If TL2_exist == 1 Then TL_Delete(uTL2); If 저[2,1] > 저[1,1] Then { slope = (저[1,1] - 고[1,1]) / (저[1,2] - 고[1,2]); mid_idx = Floor((저[2,1] - 고[1,1]) / slope); mid_val = slope * mid_idx + 고[1,1]; Var1 = Index - (고[1,2] + mid_idx); uTL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); uTL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(uTL1,color[Var2]); color = BLUE; TL_SetColor(uTL2,color); TL2_exist = 1; } Else { uTL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(uTL1,color); TL2_exist = 0; } } } TL_SetSize(uTL1,6); TL_SetSize(uTL2,1); if uT != uT[1] and uT == 1 then { TL11 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],고[2,1],sdate[index-고[2,2]],stime[index-고[2,2]],고[2,1]); TL12 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],저[1,1],sdate[index-고[2,2]],stime[index-고[2,2]],저[1,1]); TL13 = TL_New(sdate[index-고[2,2]],stime[index-고[2,2]],고[2,1],sdate[index-고[2,2]],stime[index-고[2,2]],저[1,1]); TL14 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],고[2,1],sdate[index-저[1,2]],stime[index-저[1,2]],저[1,1]); // PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); TL_SetColor(Tl11,BLUE); TL_SetColor(Tl12,BLUE); TL_SetColor(Tl13,BLUE); TL_SetColor(Tl14,BLUE); TL_SetSize(Tl11,1); TL_SetSize(Tl12,1); TL_SetSize(Tl13,1); TL_SetSize(Tl14,1); } if uT != uT[1] and uT == -1 then { TL11 = TL_New(sdate[index-저[2,2]],stime[index-저[2,2]],고[1,1],sdate[index-고[1,2]],stime[index-고[1,2]],고[1,1]); TL12 = TL_New(sdate[index-저[2,2]],stime[index-저[2,2]],저[2,1],sdate[index-고[1,2]],stime[index-고[1,2]],저[2,1]); TL13 = TL_New(sdate[index-고[1,2]],stime[index-고[1,2]],고[1,1],sdate[index-고[1,2]],stime[index-고[1,2]],저[2,1]); TL14 = TL_New(sdate[index-저[2,2]],stime[index-저[2,2]],고[1,1],sdate[index-저[2,2]],stime[index-저[2,2]],저[2,1]); // PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); TL_SetColor(Tl11,RED); TL_SetColor(Tl12,RED); TL_SetColor(Tl13,RED); TL_SetColor(Tl14,red); TL_SetSize(Tl11,1); TL_SetSize(Tl12,1); TL_SetSize(Tl13,6); TL_SetSize(Tl14,6); }