커뮤니티

수정 부탁드립니다.

프로필 이미지
maker
2020-03-11 10:27:32
248
글번호 136783
답변완료
Data2 의 지표를 적용하려면 시간이 많이 걸린다고 하셔서 시간이 많이 걸릴 것 같은 부분은 제가 직접 작업을 했는데 오류가 있습니다. 진입 조건 첫 번째와 네 번째 Then, 마지막 스탑로스에서 오류가 나는데 수정 부탁 드립니다. 감사합니다. //////////////////////////////////////////////////////////////////////////////// Input:변동률(0.01),레벨(1),익절틱수(20),손절틱수(15); Var:행(0,data1),열(0,data1),고점(1,data1),저점(-1,data1),신규(1,data1),연장(2,data1),연속(3,data1),삼선(4,data1),cnt(0,data1), 고라인기울기(0,data1),고라인시작(0,data1),고라인끝(0,data1), 저라인기울기(0,data1),저라인시작(0,data1),저라인끝(0,data1), 시작일(0,data1),시작시각(0,data1),v1(0,data1),val1(0,data1),val2(0,data1); Array:고[10,44](0,data1),저[10,44](0,data1), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0,data1),처리구분[5](0,data1),TL[3](0,data1),TL1[2](0,data1),고0[10,4](0,data1),저0[10,4](0,data1),결과리턴[8](0,data1); //=========================================================// If 레벨 <= 4 Then { v1 = 레벨 * 10; val1 = data1(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분)); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]); TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]); TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,v1 + 열]; 저0[행,열] = 저[행,v1 + 열]; } } val2 = data1(YHS_Channel(고0,저0,결과리턴)); If val2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],3); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],3); } Var:행2(0,data2),열2(0,data2),고점2(1,data2),저점2(-1,data2),신규2(1,data2),연장2(2,data2),연속2(3,data2),삼선2(4,data2),cnt2(0,data2), 고라인기울기2(0,data2),고라인시작2(0,data2),고라인끝2(0,data2), 저라인기울기2(0,data2),저라인시작2(0,data2),저라인끝2(0,data2), 시작일2(0,data2),시작시각2(0,data2),v12(0,data2),val12(0,data2),val22(0,data2); Array:고2[10,44](0,data2),저2[10,44](0,data2), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태2[5](0,data2),처리구분2[5](0,data2),TL2[3](0,data2),TL12[2](0,data2),고02[10,4](0,data2),저02[10,4](0,data2),결과리턴2[8](0,data2); //=========================================================// If 레벨 <= 4 Then { v1 = 레벨 * 10; val1 = data2(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분)); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]); TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]); TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,v1 + 열]; 저0[행,열] = 저[행,v1 + 열]; } } val2 = data1(YHS_Channel(고0,저0,결과리턴)); If val2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],3); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],3); } If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then { 고라인끝2 = 고라인끝2 + 고라인기울기2; 저라인끝2 = 저라인끝2 + 저라인기울기2; If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossUp(data2(C), max(고라인끝2, 저라인끝2)) Then Buy(); } If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If (CrossUp(data1(C), max(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2)) Then Buy(); } If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then { 고라인끝2 = 고라인끝2 + 고라인기울기2; 저라인끝2 = 저라인끝2 + 저라인기울기2; If (CrossDown(data1(C), Min(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2)) Then Sell(); } If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossDown(data2(C), max(고라인끝2, 저라인끝2)) Then Sell(); } If (cnt = 0) and (cnt2 = 0) Then { If (CrossUp(data1(C), Min(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2)) or (CrossUp(data2(C), Min(고라인끝2,저라인끝2)) and max(고라인끝,저라인끝) >= data1(c) and data1(c) >= min(고라인끝,저라인끝)) Then Buy(); } If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 > 0) and (cnt2 < (레벨 + 1) * 20) Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; 고라인끝2 = 고라인끝2 + 고라인기울기2; 저라인끝2 = 저라인끝2 + 저라인기울기2; If (CrossDown(data1(C), Max(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2)) or (CrossDown(data2(C), Max(고라인끝2,저라인끝2)) and max(고라인끝,저라인끝) >= data1(c) and data1(c) >= min(고라인끝,저라인끝)) Then Sell(); } SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-03-11 10:19:34

안녕하세요 예스스탁입니다. { }와 ( )의 짝이 맞지 않는 부분이 있어 수정해 드립니다. Input:변동률(0.01),레벨(1),익절틱수(20),손절틱수(15); Var:행(0,data1),열(0,data1),고점(1,data1),저점(-1,data1),신규(1,data1),연장(2,data1),연속(3,data1),삼선(4,data1),cnt(0,data1), 고라인기울기(0,data1),고라인시작(0,data1),고라인끝(0,data1), 저라인기울기(0,data1),저라인시작(0,data1),저라인끝(0,data1), 시작일(0,data1),시작시각(0,data1),v1(0,data1),val1(0,data1),val2(0,data1); Array:고[10,44](0,data1),저[10,44](0,data1), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0,data1),처리구분[5](0,data1),TL[3](0,data1),TL1[2](0,data1),고0[10,4](0,data1),저0[10,4](0,data1),결과리턴[8](0,data1); //=========================================================// If 레벨 <= 4 Then { v1 = 레벨 * 10; val1 = data1(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분)); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]); TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]); TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,v1 + 열]; 저0[행,열] = 저[행,v1 + 열]; } } val2 = data1(YHS_Channel(고0,저0,결과리턴)); If val2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],3); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],3); } } } Var:행2(0,data2),열2(0,data2),고점2(1,data2),저점2(-1,data2),신규2(1,data2),연장2(2,data2),연속2(3,data2),삼선2(4,data2),cnt2(0,data2), 고라인기울기2(0,data2),고라인시작2(0,data2),고라인끝2(0,data2), 저라인기울기2(0,data2),저라인시작2(0,data2),저라인끝2(0,data2), 시작일2(0,data2),시작시각2(0,data2),v12(0,data2),val12(0,data2),val22(0,data2); Array:고2[10,44](0,data2),저2[10,44](0,data2), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태2[5](0,data2),처리구분2[5](0,data2),TL2[3](0,data2),TL12[2](0,data2),고02[10,4](0,data2),저02[10,4](0,data2),결과리턴2[8](0,data2); //=========================================================// If 레벨 <= 4 Then { v1 = 레벨 * 10; val1 = data2(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분)); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]); TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]); TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,v1 + 열]; 저0[행,열] = 저[행,v1 + 열]; } } val2 = data1(YHS_Channel(고0,저0,결과리턴)); If val2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],3); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],3); } } If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then { 고라인끝2 = 고라인끝2 + 고라인기울기2; 저라인끝2 = 저라인끝2 + 저라인기울기2; If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossUp(data2(C), max(고라인끝2, 저라인끝2))) Then Buy(); } If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If (CrossUp(data1(C), max(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2)) Then Buy(); } If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then { 고라인끝2 = 고라인끝2 + 고라인기울기2; 저라인끝2 = 저라인끝2 + 저라인기울기2; If (CrossDown(data1(C), Min(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2)) Then Sell(); } If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossDown(data2(C), max(고라인끝2, 저라인끝2))) Then Sell(); } } SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); 즐거운 하루되세요 > maker 님이 쓴 글입니다. > 제목 : 수정 부탁드립니다. > Data2 의 지표를 적용하려면 시간이 많이 걸린다고 하셔서 시간이 많이 걸릴 것 같은 부분은 제가 직접 작업을 했는데 오류가 있습니다. 진입 조건 첫 번째와 네 번째 Then, 마지막 스탑로스에서 오류가 나는데 수정 부탁 드립니다. 감사합니다. //////////////////////////////////////////////////////////////////////////////// Input:변동률(0.01),레벨(1),익절틱수(20),손절틱수(15); Var:행(0,data1),열(0,data1),고점(1,data1),저점(-1,data1),신규(1,data1),연장(2,data1),연속(3,data1),삼선(4,data1),cnt(0,data1), 고라인기울기(0,data1),고라인시작(0,data1),고라인끝(0,data1), 저라인기울기(0,data1),저라인시작(0,data1),저라인끝(0,data1), 시작일(0,data1),시작시각(0,data1),v1(0,data1),val1(0,data1),val2(0,data1); Array:고[10,44](0,data1),저[10,44](0,data1), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0,data1),처리구분[5](0,data1),TL[3](0,data1),TL1[2](0,data1),고0[10,4](0,data1),저0[10,4](0,data1),결과리턴[8](0,data1); //=========================================================// If 레벨 <= 4 Then { v1 = 레벨 * 10; val1 = data1(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분)); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]); TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]); TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,v1 + 열]; 저0[행,열] = 저[행,v1 + 열]; } } val2 = data1(YHS_Channel(고0,저0,결과리턴)); If val2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],3); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],3); } Var:행2(0,data2),열2(0,data2),고점2(1,data2),저점2(-1,data2),신규2(1,data2),연장2(2,data2),연속2(3,data2),삼선2(4,data2),cnt2(0,data2), 고라인기울기2(0,data2),고라인시작2(0,data2),고라인끝2(0,data2), 저라인기울기2(0,data2),저라인시작2(0,data2),저라인끝2(0,data2), 시작일2(0,data2),시작시각2(0,data2),v12(0,data2),val12(0,data2),val22(0,data2); Array:고2[10,44](0,data2),저2[10,44](0,data2), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태2[5](0,data2),처리구분2[5](0,data2),TL2[3](0,data2),TL12[2](0,data2),고02[10,4](0,data2),저02[10,4](0,data2),결과리턴2[8](0,data2); //=========================================================// If 레벨 <= 4 Then { v1 = 레벨 * 10; val1 = data2(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분)); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]); TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]); TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,v1 + 열]; 저0[행,열] = 저[행,v1 + 열]; } } val2 = data1(YHS_Channel(고0,저0,결과리턴)); If val2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],3); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],3); } If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then { 고라인끝2 = 고라인끝2 + 고라인기울기2; 저라인끝2 = 저라인끝2 + 저라인기울기2; If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossUp(data2(C), max(고라인끝2, 저라인끝2)) Then Buy(); } If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If (CrossUp(data1(C), max(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2)) Then Buy(); } If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then { 고라인끝2 = 고라인끝2 + 고라인기울기2; 저라인끝2 = 저라인끝2 + 저라인기울기2; If (CrossDown(data1(C), Min(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2)) Then Sell(); } If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossDown(data2(C), max(고라인끝2, 저라인끝2)) Then Sell(); } SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop);