커뮤니티

지표식 수정 부탁 드립니다

프로필 이미지
헬리콥터
2018-12-05 16:05:58
227
글번호 124201
답변완료
여러가지 도움에 감사드립니다 다음 수식에서 나타나는 파동 꼭지점(고점 또는 저점) 위치에 해당 가격을 표시(고점 가격은 꼭지점 위에, 저점가격은 꼭지점 아래에)하여 주시고, 고점과 저점의 변동 틱수(상승틱은 빨강색으로 +00, 하락틱은 파랑색으로 -00)를 해당가격 위또는 아래에 표시해 주십시요~~ #==========================================# Input:length(10); Var:TL1(0),TL2(0),TL2_exist(0),color(0), 종가사용여부(0), // 종가로 계산하려면 1로 설정한다. TL_NewBit(0), // 1:NewLine 2:SetEndLine slope(0),mid_idx(0),mid_val(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(length,종가사용여부,고,저,TL_NewBit); If Value1 == 1 Then { // 고점 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좌표 //TL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; // 이전 색깔을 따라감 TL_SetColor(TL1,color[Var2]); color = RED; // 상향 돌파했으므로 빨간색으로 전환 TL_SetColor(TL2,color); TL2_exist = 1; // 추세선 2개를 연결해서 그린 것이므로 추세선이 2개임을 저장 } Else { TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(TL1); If TL2_exist == 1 Then TL_Delete(TL2); // 추세선이 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); TL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; TL_SetColor(TL1,color[Var2]); color = RED; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } } Else If Value1 == -1 Then { // 저점 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); TL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(TL1,color[Var2]); color = BLUE; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(TL1); If TL2_exist == 1 Then TL_Delete(TL2); 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); TL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(TL1,color[Var2]); color = BLUE; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } } TL_SetSize(TL1,3); TL_SetSize(TL2,3);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-12-06 08:40:01

안녕하세요 예스스탁입니다. #==========================================# Input:length(10); Var:TL1(0),TL2(0),TL2_exist(0),color(0), 종가사용여부(0), // 종가로 계산하려면 1로 설정한다. TL_NewBit(0), // 1:NewLine 2:SetEndLine slope(0),mid_idx(0),mid_val(0),tx(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(length,종가사용여부,고,저,TL_NewBit); If Value1 == 1 Then { // 고점 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좌표 TL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; // 이전 색깔을 따라감 TL_SetColor(TL1,color[Var2]); color = RED; // 상향 돌파했으므로 빨간색으로 전환 TL_SetColor(TL2,color); TL2_exist = 1; // 추세선 2개를 연결해서 그린 것이므로 추세선이 2개임을 저장 tx = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)+" | -"+NumToStr(Abs(저[1,1]-고[2,1])/PriceScale,0)+"틱"); Text_SetStyle(tx,2,0); Text_SetColor(tx,blue); } Else { TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; tx = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)+" | -"+NumToStr(Abs(저[1,1]-고[2,1])/PriceScale,0)+"틱"); Text_SetStyle(tx,2,0); Text_SetColor(tx,blue); } } If TL_NewBit == 2 Then { // 연장 TL_Delete(TL1); If TL2_exist == 1 Then TL_Delete(TL2); // 추세선이 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); TL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; TL_SetColor(TL1,color[Var2]); color = RED; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } } Else If Value1 == -1 Then { // 저점 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); TL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(TL1,color[Var2]); color = BLUE; TL_SetColor(TL2,color); TL2_exist = 1; tx = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)+" | +"+NumToStr(Abs(고[1,1]-저[2,1])/PriceScale,0)+"틱"); Text_SetStyle(tx,2,1); Text_SetColor(tx,RED); } Else { TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; tx = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)+" | +"+NumToStr(Abs(고[1,1]-저[2,1])/PriceScale,0)+"틱"); Text_SetStyle(tx,2,1); Text_SetColor(tx,RED); } } If TL_NewBit == 2 Then { // 연장 TL_Delete(TL1); If TL2_exist == 1 Then TL_Delete(TL2); 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); TL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(TL1,color[Var2]); color = BLUE; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } } TL_SetSize(TL1,3); TL_SetSize(TL2,3); 즐거운 하루되세요 > 헬리콥터 님이 쓴 글입니다. > 제목 : 지표식 수정 부탁 드립니다 > 여러가지 도움에 감사드립니다 다음 수식에서 나타나는 파동 꼭지점(고점 또는 저점) 위치에 해당 가격을 표시(고점 가격은 꼭지점 위에, 저점가격은 꼭지점 아래에)하여 주시고, 고점과 저점의 변동 틱수(상승틱은 빨강색으로 +00, 하락틱은 파랑색으로 -00)를 해당가격 위또는 아래에 표시해 주십시요~~ #==========================================# Input:length(10); Var:TL1(0),TL2(0),TL2_exist(0),color(0), 종가사용여부(0), // 종가로 계산하려면 1로 설정한다. TL_NewBit(0), // 1:NewLine 2:SetEndLine slope(0),mid_idx(0),mid_val(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = HiLoLineZigZag(length,종가사용여부,고,저,TL_NewBit); If Value1 == 1 Then { // 고점 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좌표 //TL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; // 이전 색깔을 따라감 TL_SetColor(TL1,color[Var2]); color = RED; // 상향 돌파했으므로 빨간색으로 전환 TL_SetColor(TL2,color); TL2_exist = 1; // 추세선 2개를 연결해서 그린 것이므로 추세선이 2개임을 저장 } Else { TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(TL1); If TL2_exist == 1 Then TL_Delete(TL2); // 추세선이 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); TL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; TL_SetColor(TL1,color[Var2]); color = RED; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } } Else If Value1 == -1 Then { // 저점 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); TL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(TL1,color[Var2]); color = BLUE; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(TL1); If TL2_exist == 1 Then TL_Delete(TL2); 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); TL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(TL1,color[Var2]); color = BLUE; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } } TL_SetSize(TL1,3); TL_SetSize(TL2,3);